public void getGradientInput() { var inData = new MultiMatrix(new int[] { 3, 3 }, new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, }); var weights = new double[] { 1, 2, 3, 4, }; var gradientNext = new MultiMatrix(new int[] { 2, 2 }, new double[] { 1, -1, 2, 3, }); var kernel = new Kernel(new int[] { 2, 2 }, weights); var expectedGradient = new MultiMatrix(new int[] { 3, 3 }, new double[] { 1, 1, -2, 5, 8, 2, 6, 17, 12, }); var gradient = kernel.getGradientInput(inData, gradientNext); Assert.IsTrue(expectedGradient.EEquals(gradient)); }
public void getGradientInput() { var inData = new MultiMatrix(new int[] { 5, 5 }, new double[] { 0, 1, 2, 3, 4, 10, 11, 9, 14, 13, 20, 24, 25, 26, 20, 32, 27, 28, 29, 21, 31, 33, 34, 35, -1, }); var gradientNext = new MultiMatrix(new int[] { 3, 3 }, new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, }); var expectedGradient = new MultiMatrix(new int[] { 5, 5 }, new double[] { 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, }); var pooler = new Pooler(new int[] { 2, 2 }); var gradient = pooler.getGradientInput(inData, gradientNext); Assert.IsTrue(expectedGradient.EEquals(gradient)); }