public void should_back_propagate_correctly() { // Arrange var sigmoid = new Sigmoid(new Size(2, 2)); var trainingRun = new TrainingRun(1) { Input = new float[] { 0.31f, 0.61f, 0.27f, 0.19f }, OutputError = new float[] { 0.25f * 0.61f + -0.15f * 0.02f, 0.25f * 0.96f + -0.15f * 0.23f, 0.25f * 0.82f + -0.15f * -0.50f, 0.25f * -1.00f + -0.15f * 0.17f } }; var expected = new float[, ] { { 0.0364182f, 0.068628f }, { 0.04675125f, -0.06818625f } }; // Act sigmoid.BackPropagate(trainingRun); // Assert var actual = (trainingRun.InputError.ToMatrix() * 100).PointwiseRound() / 100; var expectedMatrix = (Matrix <float> .Build.DenseOfArray(expected) * 100).PointwiseRound() / 100; Assert.That(actual, Is.EqualTo(expectedMatrix)); }