static void Main(string[] args) { int[] layers = { 4, 6, 4 }; SMiLe.NeuralNet net = new NeuralNet(layers); List<List<double>> inputvs2 = new List<List<double>>(); inputvs2.Add(new List<double>() { 0, 0, 0, 0 }); inputvs2.Add(new List<double>(){ 0, 0, 0, 1 }); inputvs2.Add(new List<double>(){ 0,0,1, 0 }); inputvs2.Add(new List<double>() { 0, 0, 1, 1 }); inputvs2.Add(new List<double>() { 0, 1, 0, 0 }); inputvs2.Add(new List<double>() { 0, 1, 0, 1 }); inputvs2.Add(new List<double>() { 0, 1, 1, 1 }); inputvs2.Add(new List<double>() { 1, 0, 0, 0 }); inputvs2.Add(new List<double>() { 1, 0, 0, 1 }); //inputvs2.Add(new List<double>() { 1, 0, 1, 0 }); inputvs2.Add(new List<double>() { 1, 0, 1, 1 }); inputvs2.Add(new List<double>() { 1, 1, 0, 0 }); inputvs2.Add(new List<double>() { 1, 1, 0, 1 }); inputvs2.Add(new List<double>() { 1, 1, 1, 1 }); List<List<double>> outputvs2 = new List<List<double>>(); outputvs2.Add(new List<double>() { 0, 0, 0, 0 }); outputvs2.Add(new List<double>() { 0, 0, 0, 1 }); outputvs2.Add(new List<double>() { 0, 0, 1, 0 }); outputvs2.Add(new List<double>() { 0, 0, 1, 1 }); outputvs2.Add(new List<double>() { 0, 1, 0, 0 }); outputvs2.Add(new List<double>() { 0, 1, 0, 1 }); outputvs2.Add(new List<double>() { 0, 1, 1, 1 }); outputvs2.Add(new List<double>() { 1, 0, 0, 0 }); outputvs2.Add(new List<double>() { 1, 0, 0, 1 }); //outputvs2.Add(new List<double>() { 1, 0, 1, 0 }); outputvs2.Add(new List<double>() { 1, 0, 1, 1 }); outputvs2.Add(new List<double>() { 1, 1, 0, 0 }); outputvs2.Add(new List<double>() { 1, 1, 0, 1 }); outputvs2.Add(new List<double>() { 1, 1, 1, 1 }); List<List<double>> testing = new List<List<double>>(); List<List<double>> testout = new List<List<double>>(); testing.Add(new List<double>() {1, 0, 1, 0 }); for (int ii = 0; ii < 100; ii++) { net.train(inputvs2, outputvs2, 2); System.Console.WriteLine(net.error(inputvs2, outputvs2)); } List<double> output = net.evaluate(testing[0]); net.SAVE("neural.net", net); NeuralNet net2 = new NeuralNet(layers); net2 = net2.LOAD("neural.net"); NeuralNet net34 = new NeuralNet().LOAD("neural.net"); List<double> testing2 = new List<double>() { 0, 0, 1, 0 }; output = net34.evaluate(testing2); //System.Console.WriteLine(net.error(testing, testout)); }
/// <summary> /// SAVES the neural net to a file /// ex: nn.SAVE("neural.net", nn); /// </summary> /// <param name="filename">filename, where the neural net is saved</param> /// <param name="nn">the neural net to save</param> public void SAVE(string filename, NeuralNet nn) { Stream stream = File.Open(filename, FileMode.Create); BinaryFormatter bFormatter = new BinaryFormatter(); bFormatter.Serialize(stream, nn); stream.Close(); }