Add tests for ml activation derivatives
This commit is contained in:
parent
e378e24739
commit
24b138b7e0
1 changed files with 21 additions and 0 deletions
|
|
@ -12,6 +12,27 @@ using namespace psemek::ml;
|
||||||
using namespace psemek::random;
|
using namespace psemek::random;
|
||||||
using namespace psemek::math;
|
using namespace psemek::math;
|
||||||
|
|
||||||
|
test_case(ml_neural__net_activation)
|
||||||
|
{
|
||||||
|
generator rng;
|
||||||
|
for (std::size_t i = 0; i < activation_type_values().size(); ++i)
|
||||||
|
{
|
||||||
|
auto a = static_cast<activation_type>(i);
|
||||||
|
|
||||||
|
for (std::size_t j = 0; j < 64; ++j)
|
||||||
|
{
|
||||||
|
double const eps = 1e-6;
|
||||||
|
|
||||||
|
double x = uniform(rng, -10.0, 10.0);
|
||||||
|
|
||||||
|
double value = activation(x, a);
|
||||||
|
double exact_derivative = activation_derivative(value, a);
|
||||||
|
double approx_derivative = (activation(x + eps, a) - value) / eps;
|
||||||
|
expect_close(exact_derivative, approx_derivative, 1e-6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
test_case(ml_neural__net_gradient)
|
test_case(ml_neural__net_gradient)
|
||||||
{
|
{
|
||||||
generator rng;
|
generator rng;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue