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 Network(TransferFunction tf, bool createBiasNode) { TransferFunction = tf; random = new Random(); if(createBiasNode) { Bias = new Bias("Bias"); } }