partial void test_ann_model_acyclicToolStripMenuItem_Click(object sender, EventArgs e) { string log = ""; string c = ""; c += "[neu=hiddenperceptron; act=tanh(a=0.5, b=0.03); fieldsize=2; nodes=2]"; c += "[neu=outputperceptron; act=tanh(a = 0.2, b = 1.786); nodes=2]"; Feedforward[] fnn = new Feedforward[2]; fnn[0] = new Feedforward(); fnn[0].Configure(c); Node[] input = new Node[] { new Node(new double?[] { 0.05, 0.00 }), new Node(new double?[] { 0.01, 0.00 }) }; fnn[0].Input = input; double[][] dataSet = new double[2][]; dataSet[0] = new double[] { 0.05, 0.10 }; dataSet[1] = new double[] { 0.01, 0.99 }; richTextBox.Text = log; }
partial void test_ann_trainer_deltaRuleToolStripMenuItem_Click(object sender, EventArgs e) { string log = ""; int epochs = 10; double learningRate = 0.09, momentum = 0.6; Node[] input = new Node[] { new Node(new double?[] { 0.00, null }), new Node(new double?[] { 0.00, null }) }; string c = ""; // configuration string c += "[neu=hiddenperceptron; act=tanh(a=1.7159, b=0.6667); fieldsize=2; nodes=2]"; c += "[neu=outputperceptron; act=tanh(a=1.7159, b=0.6667); nodes=1]"; Feedforward[] fnn = new Feedforward[2]; fnn[0] = new Feedforward(); fnn[0].Configure(c); fnn[0].Input = input; // create or data set DataSet orDataSet = new DataSet(2, 1); orDataSet.Add(new double[] { -1.0, -1.0 }, new double[] { -1.0 }); orDataSet.Add(new double[] { -1.0, +1.0 }, new double[] { +1.0 }); orDataSet.Add(new double[] { +1.0, -1.0 }, new double[] { +1.0 }); orDataSet.Add(new double[] { +1.0, +1.0 }, new double[] { +1.0 }); // instantiate trainer DeltaRule dRule = new DeltaRule(); dRule.Configure(fnn[0], epochs, orDataSet.Data, learningRate, momentum); //log += dRule.Next(); dRule.Next(); double[][] data = orDataSet.Data; for (int i = 0; i < orDataSet.Count; i++) { fnn[0].SetInput(data[i * 2]); fnn[0].PropagateSignal(); log += "\n\n" + fnn[0].ToString(); } fnn[1] = new Feedforward(); fnn[1].Configure <Tanh>(new int[] { 2, 1 }, new double?[] { 1.7159, 0.6667 }, 2); fnn[1].Input = input; DataSet xrDataSet = new DataSet(2, 1); xrDataSet.Add(new double[] { -1.0, -1.0 }, new double[] { -1.0 }); xrDataSet.Add(new double[] { -1.0, +1.0 }, new double[] { +1.0 }); xrDataSet.Add(new double[] { +1.0, -1.0 }, new double[] { +1.0 }); xrDataSet.Add(new double[] { +1.0, +1.0 }, new double[] { -1.0 }); epochs = 200; learningRate = 0.1; momentum = 0.80; dRule.Configure(fnn[1], epochs, xrDataSet.Data, learningRate, momentum); //log += dRule.Next(); dRule.Next(); log += "\n\n////////////////////////////////////////////////////////////////////"; data = xrDataSet.Data; for (int i = 0; i < xrDataSet.Count; i++) { fnn[1].SetInput(data[i * 2]); fnn[1].PropagateSignal(); log += "\n\n" + fnn[1].ToString(); } richTextBox.Text = log; }