Example #1
0
        static void Main(string[] args)
        {
            NeuralNetwork nn = new NeuralNetwork();

            nn.AddLayer(2, new Sigmoid());
            nn.AddLayer(3, new Sigmoid());
            nn.AddLayer(3, new Sigmoid());
            nn.AddLayer(1, new Sigmoid());

            nn.Build();


            double[][] input = new double[][] {
                new double[] { 0, 0 },
                new double[] { 0, 1 },
                new double[] { 1, 0 },
                new double[] { 1, 1 }
            };

            double[][] and = new double[][] {
                new double[] { 0 },
                new double[] { 0 },
                new double[] { 0 },
                new double[] { 1 },
            };

            double[][] or = new double[][] {
                new double[] { 0 },
                new double[] { 1 },
                new double[] { 1 },
                new double[] { 1 },
            };

            double[][] xor = new double[][] {
                new double[] { 0 },
                new double[] { 1 },
                new double[] { 1 },
                new double[] { 0 },
            };

            nn.Train(input, xor, 10000, 0.25);

            nn.Predict(input[0]);
            nn.Predict(input[1]);
            nn.Predict(input[2]);
            nn.Predict(input[3]);

            Console.ReadLine();
        }
Example #2
0
        static void Main(string[] args)
        {
            //double[,] training_inputs = { { 0, 0, 1}, { 1, 1, 1}, { 1, 0, 1}, { 0, 1, 1}, { 0, 0, 0}, { 1, 0, 0} };
            double[,] training_inputs = { { 0, 0, 1 }, { 1, 1, 1 }, { 1, 0, 1 }, { 0, 1, 1 } };
            //double[] training_outputs = { 0, 1, 1, 0, 0, 1};
            double[] training_outputs = { 0, 1, 1, 0 };

            NeuralNetwork neuralNetwork = new NeuralNetwork();

            Console.WriteLine("Synaptic-Weights before training: ");
            foreach (var item in neuralNetwork.synaptic_weights)
            {
                Console.Write(item.ToString());
                Console.Write(" , ");
            }

            neuralNetwork.Train(training_inputs, training_outputs, 100000);

            Console.WriteLine("");
            Console.WriteLine("Synaptic-Weights after training: ");
            foreach (var item in neuralNetwork.synaptic_weights)
            {
                Console.Write(item.ToString());
                Console.Write(" , ");
            }

            Console.WriteLine("");
            Console.WriteLine("New Situation: ");
            Console.Write("Input1 = ");
            int a = int.Parse(Console.ReadLine());

            Console.Write("Input2 = ");
            int b = int.Parse(Console.ReadLine());

            Console.Write("Input3 = ");
            int c = int.Parse(Console.ReadLine());

            Console.WriteLine("");
            Console.WriteLine("New Situation data: {0}, {1}, {2} ", a, b, c);
            Console.WriteLine("");

            double[,] newInputs = { { a, b, c } };

            double[] outputs = neuralNetwork.Think(newInputs);

            int    roundOutput  = (int)Math.Round(outputs[0]);
            double roundPercent = 0;

            if (roundOutput == 1)
            {
                double percent = outputs[0] * 100;
                roundPercent = Math.Round(percent, 2);
            }
            else
            {
                double percent = (1 - outputs[0]) * 100;
                roundPercent = Math.Round(percent, 2);
            }

            Console.Write("With a probability of " + roundPercent + "% the Output is: ");
            Console.Write(Math.Round(outputs[0]));
            Console.Write(" (");
            Console.Write(outputs[0]);
            Console.Write(")");

            Console.ReadKey();
        }