public void TestPooling() { var I = new float[, ] { { 40, 410, 42, 43, 44 }, { 45, 460, 47, 48, 49 }, { 50, 51, 520, 53, 54 }, { 55, 56, 57, 580, 590 } }; var O1 = new float[, ] { { 460, 48 }, { 56, 580 } }; AssertArray.AreAlmostEqual(O1, NN.DownSample_MaxPooling2d(I, 2, 2)); var O2 = new float[, ] { { 460, 49 }, { 520, 590 } }; AssertArray.AreAlmostEqual(O2, NN.DownSample_MaxPooling2d(I, 2, 3, ignoreBorder: false)); var O3 = new float[, ] { { 0, 0, 0, 0, 0 }, { 0, 460, 0, 48, 0 }, { 0, 0, 0, 0, 0 }, { 0, 56, 0, 580, 0 } }; AssertArray.AreAlmostEqual(O3, NN.Unpooling(O1, I, 2, 2)); var O4 = new int[, , ] { { { 1, 1 }, { 1, 3 } }, { { 3, 1 }, { 3, 3 } } }; AssertArray.AreEqual(O4, NN.DownSample_MaxPooling2d_IndexArray(I, 2, 2)); }