public static void WriteNetwork(LayeredNeuralNetwork network) { Console.WriteLine("Network:"); Console.WriteLine("Input Neurons Values: "); var i = 0; foreach (var neuron in network.inputNeurons.neurons) { Console.Write(i); Console.WriteLine(". " + neuron.GetOutputSignal().ToString("F2")); i++; } for (int j = 0; j < network.hiddenLayers.Count; j++) { Console.WriteLine("Connections: "); i = 0; foreach (var connection in network.neuralConnections[j].connections) { Console.Write(i); Console.WriteLine(". " + connection.input.GetOutputSignal().ToString("F2") + " * " + connection.wage.ToString("F2") + " = " + connection.currSignal.ToString("F2")); i++; } Console.WriteLine("Hidden Neurons Values: "); i = 0; foreach (var neuron in network.hiddenLayers[j].neurons) { Console.Write(i); Console.WriteLine(". " + neuron.GetOutputSignal().ToString("F2")); i++; } } Console.WriteLine("Connections: "); i = 0; foreach (var connection in network.neuralConnections[network.neuralConnections.Count - 1].connections) { Console.Write(i); Console.WriteLine(". " + connection.input.GetOutputSignal().ToString("F2") + " * " + connection.wage.ToString("F2") + " = " + connection.currSignal.ToString("F2")); i++; } Console.WriteLine("Output Neurons Values: "); i = 0; foreach (var neuron in network.outputNeurons.neurons) { Console.Write(i); Console.WriteLine(". " + neuron.GetOutputSignal().ToString("F2")); i++; } }
public static LayeredNeuralNetwork buildLayeredNetwork(LayeredNeuralNetworkBlueprint blueprint) { var newNetwork = new LayeredNeuralNetwork(); newNetwork.inputNeurons = new NeuralLayer(blueprint.inputNeuronAmount); newNetwork.outputNeurons = new NeuralLayer(blueprint.outputNeuronAmount); newNetwork.hiddenLayers = blueprint.hiddenLayersNeuronAmounts.Select(amount => new NeuralLayer(amount)).ToList(); newNetwork.neuralConnections = new List <NeuralConnectionLayer>(); if (newNetwork.hiddenLayers.Count == 0) { newNetwork.neuralConnections.Add( newNetwork.inputNeurons.ConnectWith(newNetwork.outputNeurons) ); return(newNetwork); } // Connect input neurons with first hidden layer newNetwork.neuralConnections.Add( newNetwork.inputNeurons.ConnectWith(newNetwork.hiddenLayers[0]) ); // Connect hidden layers with each other for (int i = 0; i < newNetwork.hiddenLayers.Count - 1; i++) { newNetwork.neuralConnections.Add( newNetwork.hiddenLayers[i].ConnectWith(newNetwork.hiddenLayers[i + 1]) ); } // Connect last hidden layer with output neurons newNetwork.neuralConnections.Add( newNetwork.hiddenLayers[newNetwork.hiddenLayers.Count - 1].ConnectWith(newNetwork.outputNeurons) ); return(newNetwork); }