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"); }
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"); }