public void ResetAutoTest() { int[] layers = new int[] { 4, 5, 1 }; MultilayerPerceptron nn = new MLPGenerator().Create(layers, 1, new Sigmoid()); double[] randomSelected = new double[] { nn.Structure.Input[1].Next[1].Weight.Value, nn.Structure.Input[1].Next[2].Weight.Value, nn.Structure.Input[1].Next[2].Next.Next[0].Weight.Value, nn.Structure.Output[0].Previous[1].Weight.Value }; double[] inp = new double[] { -0.978, 2.34, 0.2, -0.33 }; double[] pulsed = nn.Pulse(inp); nn.Reset(0, 1); double[] randomSelected2 = new double[] { nn.Structure.Input[1].Next[1].Weight.Value, nn.Structure.Input[1].Next[2].Weight.Value, nn.Structure.Input[1].Next[2].Next.Next[0].Weight.Value, nn.Structure.Output[0].Previous[1].Weight.Value }; for (int i = 0; i < randomSelected.Length; i++) { Assert.AreNotEqual(randomSelected[i], randomSelected2[i]); } double[] pulsed2 = nn.Pulse(inp); for (int i = 0; i < pulsed.Length; i++) { Assert.AreNotEqual(pulsed[i], pulsed2[i]); } }
private void button2_Click(object sender, EventArgs e) { int cycles = int.Parse(textBox1.Text); int hiddenNeurons = int.Parse(textBox2.Text); double learnRate = double.Parse(textBox3.Text); double momentum = double.Parse(textBox4.Text); int[] layers = new int[] { 1, hiddenNeurons, 1 }; MultilayerPerceptron ann = new MLPGenerator().Create(layers, 1, new Sigmoid(2)); ann.Reset(-1, 1); ann.Momentum = momentum; ann.LearnFactor = learnRate; List <TrainingData> trainingList = new List <TrainingData>(); for (int i = 0; i < Map.Count; i++) { double[] input = new double[] { (double)Map[i].Item1 / (double)pictureBox1.Width }; double[] output = new double[] { (double)Map[i].Item2 / (double)pictureBox1.Height }; trainingList.Add(new TrainingData(input, output)); } var res = ann.BP(new BPRequest(trainingList.ToArray(), cycles)); for (int i = 0; i < pictureBox1.Width; i++) { int x = i; double yd = ann.Pulse(new double[] { (double)i / (double)pictureBox1.Width })[0]; int y = Convert.ToInt32(yd * pictureBox1.Height); Point p = new Point(x, y); Graph.DrawRectangle(new Pen(new SolidBrush(Color.Orange)), p.X, p.Y, 1, 1); } pictureBox1.Image = Bitmap; }
public void ResetManualTest() { int[] layers = new int[] { 4, 5, 1 }; MultilayerPerceptron nn = new MLPGenerator().Create(layers, 1, new Sigmoid()); nn.Reset(() => 0.7); Assert.AreEqual(nn.Structure.Input[1].Next[2].Weight.Value, 0.7); // random selected }
public void MLPSerialization() { MultilayerPerceptron mlp = new MLPGenerator().Create(new int[] { 2, 2, 1 }); mlp.Reset(0, 1); MLPXMLSerializer serializer = new MLPXMLSerializer(); XDocument xdoc = serializer.Serialize(mlp); MultilayerPerceptron mlp2 = serializer.Deserialize(xdoc); Assert.AreEqual(mlp2.Structure.Elements.Length, mlp.Structure.Elements.Length); Assert.AreEqual(mlp2.Structure.Elements[3].GetDescription(), mlp.Structure.Elements[3].GetDescription()); Assert.AreEqual(mlp2.Structure.Elements[0].Next[0].Weight.Value, mlp.Structure.Elements[0].Next[0].Weight.Value); Assert.AreEqual(((NeuronBase)mlp2.Structure.Elements[4]).Previous[0].Weight.Value, ((NeuronBase)mlp.Structure.Elements[4]).Previous[0].Weight.Value); Assert.AreEqual(((NeuronBase)mlp2.Structure.Elements[3]).Func.GetType(), ((NeuronBase)mlp.Structure.Elements[3]).Func.GetType()); }