public void ConvText_3D_1d() { double[,,] x = new double[2, 3, 3] { { { 0.0, 1.0, 2.0 }, { 3.0, 4.0, 5.0 }, { 6.0, 7.0, 8.0 }, }, { { 11, 12, 13 }, { 14, 15, 16 }, { 17, 18, 19 }, } }; double[,,] f = new double[2, 2, 2] { { { 1, 2 }, { -1, 3 }, }, { { 3, -1 }, { -2, 1 }, } }; double[,,] expected = new double[1, 2, 2] { { { 19, 25 }, { 37, 43 }, } }; var convLayer = new ConvolutionLayer { Inputs = x, Filters = new List <double[, , ]> { f }, }; var actual = convLayer.GetResult(f); Assert.AreEqual(expected.Length, actual.Length); for (int l = 0; l < actual.GetLength(0); l++) { for (int i = 0; i < actual.GetLength(1); i++) { for (int j = 0; j < actual.GetLength(2); j++) { Assert.AreEqual(expected[l, i, j], actual[l, i, j], 0.1); } } } }
public void ConvTest_3D_2D() { double[,,] x = new double[3, 3, 3] { { { 0.0, 1.0, 2.0 }, { 3.0, 4.0, 5.0 }, { 6.0, 7.0, 8.0 }, }, { { 11, 12, 13 }, { 14, 15, 16 }, { 17, 18, 19 }, }, { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, } }; double[,,] f = new double[2, 2, 2] { { { 1, 2 }, { -1, 3 }, }, { { 3, -1 }, { -2, 1 }, } }; double[,,] expected = new double[2, 2, 2] { { { 19, 25 }, { 37, 43 }, }, { { 64, 70 }, { 82, 88 }, } }; var convLayer = new ConvolutionLayer { Inputs = x, Filters = new List <double[, , ]> { f }, }; var actual = convLayer.GetResult(f); Assert.That.AreEqual(expected, actual); }
public void ConvTest_2d_1d() { double[,,] x = new double[1, 3, 3] { { { 0.0, 1.0, 2.0 }, { 3.0, 4.0, 5.0 }, { 6.0, 7.0, 8.0 }, } }; double[,,] f = new double[1, 2, 2] { { { 1, 2 }, { -1, 3 }, } }; double[,,] expected = new double[1, 2, 2] { { { 11, 16 }, { 26, 31 }, } }; var convLayer = new ConvolutionLayer { Inputs = x, Filters = new List <double[, , ]> { f }, }; var actual = convLayer.GetResult(f); Assert.That.AreEqual(expected, actual); }