public void TestBias() { double input = 0.3; double inpToOutWeight = 0.4; double biasToOutWeight = 0.5; var sigmoid = new SigmoidFunction(); var nw = new Network(sigmoid, false); var inputNode = new Input(input); var bias = new Bias(); var outputNode = new Perceptron(sigmoid, "Output"); Connection.Create(inpToOutWeight, inputNode, outputNode); Connection.Create(biasToOutWeight, bias, outputNode); nw.Nodes = new Node[][] { new Node[] { inputNode }, new Node[] { outputNode } }; var nwOut = nw.Nodes[1][0].Output; //Output // = Sig(inpToOut.Output + biasToOut.Output) // = Sig((inpToOut.Weight * inpToOut.GetInput()) + (biasToOutWeight * 1)) // = Sig((inpToOut.Weight * inputNode.Output) + (biasToOutWeight)) // = Sig((this.weight * this.input) + (biasToOutWeight)) var expOut = sigmoid.Calculate((inpToOutWeight * input) + biasToOutWeight); Assert.AreEqual(nwOut, expOut); }
public void TestNetworkOutput() { var rand = new Random(); double input = (double)(rand.NextDouble()); double weight = (double)(rand.NextDouble()); var sigmoid = new SigmoidFunction(); var nw = new Network(sigmoid, false); var inputNode = new Input(input); var outputNode = new Perceptron(sigmoid, "Output"); Connection.Create(weight, inputNode, outputNode); nw.Nodes = new Node[][] { new Node[] { inputNode }, new Node[] { outputNode } }; var nwOut = nw.CurOutput()[0]; Assert.AreEqual(outputNode.Output, nwOut); var expOut = sigmoid.Calculate(input * weight); Assert.AreEqual(nwOut, expOut); }
public void TestSigmoid() { SigmoidFunction sf = new SigmoidFunction(); Assert.IsTrue(sf.Calculate(10, 20) > 0.9); Assert.IsTrue(sf.Calculate(-10, -20) < 0.1); Assert.IsTrue(sf.Calculate(-1, 1) > 0.4 && sf.Calculate(-1, 1) < 0.6); }
public void TestGetInputResult() { var rand = new Random(); double input = (double)(rand.NextDouble() * 100 + 1); double weight = (double)(rand.NextDouble() * 2); var sigmoid = new SigmoidFunction(); var nw = new Network(sigmoid, false); var inputNode = new Input(input); var outputNode = new Perceptron(sigmoid, "Output"); Connection.Create(weight, inputNode, outputNode); nw.Nodes = new Node[][] { new Node[] { inputNode }, new Node[] { outputNode } }; var nwOut = nw.GetInputResult(input)[0]; //Output // = Sig(inpToOut.Output) // = Sig(inpToOut.Weight * inpToOut.GetInput()) // = Sig(inpToOut.Weight * inputNode.Output) // = Sig(this.weight * this.input) var expOut = sigmoid.Calculate(weight * input); Assert.AreEqual(nwOut, expOut); }