static void Main(string[] args) { int i = 0; while (i < 10) { nn = new NeuralNetwork(9, 3, activationFunction); // preparing neural network //dla 9 elementowej sieci nn.AppendLayer(9); nn.AppendLayer(7); nn.AppendLayer(5); // SOU - EVE double[] trainingInput = new double[] { 2, 2, 1, 3, 4, 3, 4, 3, 3 }; double[] trainingOutput = new double[] { .48, .27, .25 }; Training(trainingInput, trainingOutput); // HUL - WBA trainingInput = new double[] { 1, 2, 1, 1, 1, 9, 3, 3, 4 }; trainingOutput = new double[] { .31, .29, .42 }; Training(trainingInput, trainingOutput); //BUR -MCI trainingInput = new double[] { 1, 0, 4, 3, 2, 5, 6, 3, 1 }; trainingOutput = new double[] { .1, 0.15, 0.75 }; Training(trainingInput, trainingOutput); ////LEI - MID //trainingInput = new double[] { 3, 2, 0, 3, 2, 5, 1, 4, 5 }; //trainingOutput = new double[] { .52, 0.26, 0.22 }; //Training(trainingInput, trainingOutput); ////BUR-MCI //double[] inputData = new double[] { 1, 0, 4, 3, 2, 5, 6, 3, 1 }; //LEI - MID double[] inputData = new double[] { 3, 2, 0, 3, 2, 5, 1, 4, 5 }; Predict(inputData, i + 1); i++; } Console.ReadKey(); }
/// <summary> /// Standardowa propagacja sieci neuronowej /// </summary> static void Task1(double[] trainingData) { Console.WriteLine("Propagation"); NeuralNetwork nn = new NeuralNetwork(trainingData.Length, 1, activationFunction); nn.AppendLayer(5); var result = nn.Propagate(trainingData); Console.WriteLine("Result:"); MatrixHelper.MatrixDisplay(result); }
/// <summary> /// Propagacja sieci neuronowej z wykorzystaniem wstecznej propagacji /// </summary> static void Task2(double[] trainingData) { try { Console.WriteLine("Back propagation"); NeuralNetwork nn = new NeuralNetwork(trainingData.Length, 3, activationFunction); nn.AppendLayer(5); for (int i = 0; i < 10000; i++) { nn.PropagateBack(trainingData, new double[] { 0.1, 0.2, 0.3 }, activationFunction); } var result = nn.Propagate(trainingData); Console.WriteLine("Result:"); MatrixHelper.MatrixDisplay(result); } catch (Exception ex) { Console.WriteLine(ex.Message); } }