void ComputeWeightGradients(int layer, float[] learningExampleInput, INeuralNetAccessor outputGradient) { int numberOfNodes = neuralNetAccessor.NodesInLayer(layer); int numberOfWeights = neuralNetAccessor.WeightsOfNodeInLayer(layer); for (int node = 0; node < numberOfNodes; node++) { for (int weight = 0; weight < numberOfWeights; weight++) { float a; if (layer == 0) { a = learningExampleInput[weight]; } else { a = activations[layer - 1][weight]; } outputGradient.WeightAccessor[layer, node, weight] = a * outputGradient.BiasAccessor[layer, node]; } } }
public int WeightsOfNodeInLayer(int layer) { return(neuralNetAccessor.WeightsOfNodeInLayer(layer)); }