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)); }