コード例 #1
0
        private void ComputeTotalGradient(Gradients totalGradients, Gradients partialGradients,
                                          SetOfIOPairs trainingSet)
        {
            totalGradients.ResetGradients();

            foreach (SetOfIOPairs.IOPair pair in trainingSet.Pairs)
            {
                ComputeGradient(partialGradients, pair.Inputs, pair.Outputs);
                for (int i = NumberOfLayers() - 1; i >= 1; i--)
                {
                    NeuralLayer currentLayer = GetLayer(i);
                    for (int j = 0; j < currentLayer.NumberOfNeurons(); j++)
                    {
                        totalGradients.IncrementThreshold(i, j, partialGradients.GetThreshold(i, j));
                        for (int k = 0; k < currentLayer.LowerLayer().NumberOfNeurons(); k++)
                        {
                            totalGradients.IncrementWeight(i, j, k, partialGradients.GetWeight(i, j, k));
                        }
                    }
                }
            }
        }