private void updateNodeWeights(SLPNode outputNode, bool[] input, double nodeError) { double LEARNING_RATE = 0.1; for (int i = 0; i < input.Length - 1; i++) { if (input[i]) { outputNode.weights[inputNodes[i]] += LEARNING_RATE * nodeError; } } }
internal double calcNodeOutput(SLPNode node, bool[] input) { double result = 0; for (int i = 0; i < input.Length - 1; i++) { if (input[i]) { result += 1 * node.weights[inputNodes[i]]; } } return(result /= 16 * 16); }
public SingleLayerPerceptron(int inputs, int outputs) { for (int i = 0; i < inputs; i++) { inputNodes.Add(new SLPNode()); } for (int i = 0; i < outputs; i++) { SLPNode outputNode = new SLPNode(); Random random = new Random(); foreach (SLPNode inputNode in inputNodes) { outputNode.weights.Add(inputNode, random.Next(-1000, 1000) * 0.001); } outputNodes.Add(outputNode); } }