Esempio n. 1
0
        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++;
            }
        }
Esempio n. 2
0
        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);
        }