void NumericalDifferentiationTest::test_calculate_derivative(void) { message += "test_calculate_derivative\n"; NumericalDifferentiation nd; // double x; double d; // Test nd.set_numerical_differentiation_method(NumericalDifferentiation::ForwardDifferences); // x = 0.0; d = nd.calculate_derivative(*this, &NumericalDifferentiationTest::f1, 0.0); assert_true(d == 1.0, LOG); // Test nd.set_numerical_differentiation_method(NumericalDifferentiation::CentralDifferences); // x = 0.0; d = nd.calculate_derivative(*this, &NumericalDifferentiationTest::f1, 0.0); assert_true(d == 1.0, LOG); }
void UnscalingLayerTest::test_calculate_derivatives(void) { message += "test_calculate_derivatives\n"; NumericalDifferentiation nd; UnscalingLayer ul; ul.set_display(false); Vector<double> inputs; Vector<double> derivative; Vector<double> numerical_derivative; // Test ul.set(1); ul.set_unscaling_method(UnscalingLayer::MinimumMaximum); inputs.set(1, 0.0); derivative = ul.calculate_derivatives(inputs); assert_true(derivative == 1.0, LOG); // Test ul.set(1); ul.set_unscaling_method(UnscalingLayer::MeanStandardDeviation); inputs.set(1, 0.0); derivative = ul.calculate_derivatives(inputs); assert_true(derivative == 1.0, LOG); // Test if(numerical_differentiation_tests) { ul.set(3); ul.initialize_random(); ul.set_unscaling_method(UnscalingLayer::MinimumMaximum); inputs.set(3); inputs.randomize_normal(); derivative = ul.calculate_derivatives(inputs); numerical_derivative = nd.calculate_derivative(ul, &UnscalingLayer::calculate_outputs, inputs); assert_true((derivative-numerical_derivative).calculate_absolute_value() < 1.0e-3, LOG); } // Test if(numerical_differentiation_tests) { ul.set(3); ul.initialize_random(); ul.set_unscaling_method(UnscalingLayer::MeanStandardDeviation); inputs.set(3); inputs.randomize_normal(); derivative = ul.calculate_derivatives(inputs); numerical_derivative = nd.calculate_derivative(ul, &UnscalingLayer::calculate_outputs, inputs); assert_true((derivative-numerical_derivative).calculate_absolute_value() < 1.0e-3, LOG); } }