Add tests for ml activation derivatives

This commit is contained in:
Nikita Lisitsa 2026-09-12 20:05:18 +03:00
parent e378e24739
commit 24b138b7e0

View file

@ -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;