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 BPMaxMSETest() { int[] layers = new int[] { 4, 5, 1 }; MultilayerPerceptron nn = new MLPGenerator().Create(layers, 1, new Sigmoid()); var result = nn.BP(new BPRequest(TestVec, 1000, 0, 0.7)); Assert.IsTrue(result.Epochs.Length < 1000); }
public void BPMaxCyclesTest() { int[] layers = new int[] { 4, 5, 1 }; MultilayerPerceptron nn = new MLPGenerator().Create(layers, 1, new Sigmoid()); var result = nn.BP(new BPRequest(TestVec, 5)); Assert.AreEqual(result.Epochs.Length, 5); }
public void ExplicitBPTimeTest() { int[] layers = new int[] { 4, 10, 1 }; MultilayerPerceptron nn = new MLPGenerator().Create(layers, 1, new Sigmoid()); var result = nn.BP(new BPRequest(TestVec, 1500 * 10)); throw new NotImplementedException("BP Total ms=" + result.BPTime.TotalMilliseconds.ToString()); }
public void ReasonableBPTimeTest() { int[] layers = new int[] { 4, 5, 1 }; MultilayerPerceptron nn = new MLPGenerator().Create(layers, 1, new Sigmoid()); var result = nn.BP(new BPRequest(TestVec, 10000)); Assert.IsTrue(result.BPTime.TotalMilliseconds < 2000); }
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()); }
public void PulseManySameResultsTest() { MLPGenerator gen = new MLPGenerator(); int[] layers = new int[] { 4, 3, 2 }; MultilayerPerceptron nn = gen.Create(layers, 1, new Sigmoid()); double[] inp = new double[] { -0.978, 2.34, 0.2, -0.33 }; double[] res = nn.Pulse(inp); double[] res2 = nn.Pulse(inp); double[] res3 = nn.Pulse(inp); Assert.AreEqual(res.Length, res2.Length); Assert.AreEqual(res.Length, res3.Length); for (int i = 0; i < res.Length; i++) { Assert.AreEqual(res[i], res2[i]); Assert.AreEqual(res[i], res3[i]); } }
static void Main(string[] args) { TrainingData[] xor=new TrainingData[] { new TrainingData(new double[] {1,0}, new double[] {1}), new TrainingData(new double[] {0,1}, new double[] {1}), new TrainingData(new double[] {1,1}, new double[] {0}), new TrainingData(new double[] {0,0}, new double[] {0}), }; int[] layers = new int[] { 2,2,1 }; MultilayerPerceptron mlp=new MLPGenerator().Create(layers,1,new Sigmoid()); mlp.Inspector=new SignalInspector(); //shows the neurons processing in VS Output window mlp.Inspector.Debug=true; mlp.Inspector.TraceLevel=3; mlp.LearnFactor=0.9; var response=mlp.BP(new BPRequest(xor,1000)); Console.ReadKey(); }
static void Main(string[] args) { TrainingData[] xor = new TrainingData[] { new TrainingData(new double[] { 1, 0 }, new double[] { 1 }), new TrainingData(new double[] { 0, 1 }, new double[] { 1 }), new TrainingData(new double[] { 1, 1 }, new double[] { 0 }), new TrainingData(new double[] { 0, 0 }, new double[] { 0 }), }; int[] layers = new int[] { 2, 2, 1 }; MultilayerPerceptron mlp = new MLPGenerator().Create(layers, 1, new Sigmoid()); mlp.Inspector = new SignalInspector(); //shows the neurons processing in VS Output window mlp.Inspector.Debug = true; mlp.Inspector.TraceLevel = 3; mlp.LearnFactor = 0.9; var response = mlp.BP(new BPRequest(xor, 1000)); Console.ReadKey(); }
public void FullNetworkScanTest() { int[] layers = new int[] { 2, 3, 1 }; MultilayerPerceptron nn = new MLPGenerator().Create(layers, 1, new Sigmoid()); //check input and output layer Assert.AreEqual(nn.Structure.Input.Length, 2); Assert.AreEqual(nn.Structure.Output.Length, 1); int count = 0; foreach (var i in nn.Structure.Input) { foreach (var j in i.Next) { CheckConnection(i, j.Next, ref count); } } Assert.AreEqual(count, 12); //check bias Assert.AreEqual(nn.Structure.Bias.Next.Length, 4); Assert.IsTrue(nn.Structure.Bias.Next.All(x => x.Next is Neuron)); }