Пример #1
0
        public void backwardLearn()
        {
            var learnRate = GlobalRandom.NextDouble();
            int inSize, outSize;
            var countExamples = 3;

            inSize = outSize = 5;

            var input         = MatrixD.Build.Random(countExamples, inSize);
            var layer         = new BiasLayer(inSize);
            var nextGradients = MatrixD.Build.Random(countExamples, outSize);

            var expectedBiases = layer.Biases.ShallowCopy();
            var gradientSums   = nextGradients.ColumnSums().AsArray();

            for (int i = 0; i < expectedBiases.Length; i++)
            {
                expectedBiases[i] -= learnRate * gradientSums[i];
            }

            layer.backwardLearn(input, nextGradients, learnRate);
            Assert.IsTrue(expectedBiases.EEquals(layer.Biases));
        }