public void GetAnswer() { List <NN2Node> outputLayerNodes = nodes[nodes.Count - 1]; foreach (NN2Node nodeOutput in outputLayerNodes) { //answer[] } NN2Node nodeAnswer = outputLayerNodes[outputLayerNodes.Count - 1]; //answer = nodeAnswer.output; }
public void CreateNodes(int[] layerNodeCounts) { for (int layer = 0; layer < numLayers; layer++) { List <NN2Node> layerNodes = new List <NN2Node>(); nodes.Add(layerNodes); for (int n = 0; n < layerNodeCounts[layer]; n++) { NN2Node node = new NN2Node(layer, this); } } LoadWeights(); CreateLinks(); }
public void LoadWeights() { for (int layer = 1; layer < numLayers; layer++) { List <NN2Node> layerNodes = nodes[layer]; for (int n = 0; n < layerNodes.Count; n++) { NN2Node node = layerNodes[n]; List <NN2Node> layerNodeBelow = nodes[layer - 1]; foreach (NN2Node nodeBelow in layerNodeBelow) { nodeBelow.weight = .5f; } } } }
public void BackPropagate() { for (int layer = 1; layer < numLayers; layer++) { List <NN2Node> layerNodes = nodes[layer]; for (int n = 0; n < layerNodes.Count; n++) { NN2Node node = layerNodes[n]; List <NN2Node> layerNodeBelow = nodes[layer - 1]; foreach (NN2Node nodeBelow in layerNodeBelow) { nodeBelow.weight *= weightCorrectionScaleFactorAve; } } } }
public void CreateLinks() { for (int layer = 1; layer < numLayers; layer++) { List <NN2Node> layerNodes = nodes[layer]; for (int n = 0; n < layerNodes.Count; n++) { NN2Node node = layerNodes[n]; List <NN2Node> layerNodeBelow = nodes[layer - 1]; foreach (NN2Node nodeBelow in layerNodeBelow) { node.inputNodes.Add(nodeBelow); nodeBelow.outputNode = node; } } } }
public void ForwardFeed() { for (int layer = 1; layer < numLayers; layer++) { List <NN2Node> layerNodes = nodes[layer]; for (int n = 0; n < layerNodes.Count; n++) { NN2Node node = layerNodes[n]; node.output = 0; List <NN2Node> layerNodeBelow = nodes[layer - 1]; foreach (NN2Node nodeBelow in layerNodeBelow) { node.output += nodeBelow.output * nodeBelow.weight; } } } }