コード例 #1
0
        public override void CalcGradients(List <double[]> inputs, Layer outputlayer)
        {
            for (int b = 0; b < NN.BatchSize; b++)
            {
                //var input = inputs[i];
                //if (UsesTanh) { input = Maths.TanhDerriv(inputs[i]); }

                double[,] Input = Pad(Maths.Convert(inputs[b]));
                double[,] stochgradients;
                if (DownOrUp)
                {
                    stochgradients = Convolve(Maths.Convert(Errors[b]), Input);
                }
                else
                {
                    stochgradients = Convolve(Input, Maths.Convert(Errors[b]));
                }
                //Gradients = stochgradients;

                //Add the stochastic gradients to the batch gradients
                for (int j = 0; j < Gradients.GetLength(0); j++)
                {
                    for (int k = 0; k < Gradients.GetLength(1); k++)
                    {
                        Gradients[j, k] += stochgradients[j, k];
                    }
                }
            }
        }