예제 #1
0
파일: Cost.cs 프로젝트: n1arash/Vortex
        public void ExponentialCostTest()
        {
            var rnd    = new Random();
            var tao    = rnd.NextDouble() * 10;
            var error  = 0.0;
            var actual = new Matrix(4, 1);

            actual.InRandomize();
            var expected = new Matrix(4, 1);

            expected.InRandomize();

            for (var i = 0; i < actual.Rows; i++)
            {
                for (var j = 0; j < actual.Columns; j++)
                {
                    error += Math.Pow(actual[i, j] - expected[i, j], 2);
                }
            }

            error /= tao;
            error  = Math.Exp(error);
            error *= tao;

            var cost            = new ExponentialCostKernel(new ExponentionalCost(tao));
            var calculatedError = cost.Forward(actual, expected);

            Assert.IsTrue(Math.Abs(error - calculatedError) < 0.01f, "Exponential Cost successful");
        }
예제 #2
0
파일: Cost.cs 프로젝트: n1arash/Vortex
        public void ExponentialCostPrimeTest()
        {
            var rnd    = new Random();
            var tao    = rnd.NextDouble() * 10;
            var error  = 0.0;
            var actual = new Matrix(4, 1);

            actual.InRandomize();
            var expected = new Matrix(4, 1);

            expected.InRandomize();

            for (var i = 0; i < actual.Rows; i++)
            {
                for (var j = 0; j < actual.Columns; j++)
                {
                    error += Math.Pow(actual[i, j] - expected[i, j], 2);
                }
            }

            error /= tao;
            error  = Math.Exp(error);
            error *= tao;

            var gradMatrix = actual.Duplicate();

            for (var i = 0; i < actual.Rows; i++)
            {
                for (var j = 0; j < actual.Columns; j++)
                {
                    gradMatrix[i, j] = (actual[i, j] - expected[i, j]) * error;
                }
            }

            var cost             = new ExponentialCostKernel(new ExponentionalCost(tao));
            var calculatedMatrix = cost.Backward(actual, expected);

            Assert.IsTrue(gradMatrix == calculatedMatrix, "Exponential Cost Derivative successful");
        }