Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }