neural_net/tests/unit_tests/test_activation_functions.cpp

42 lines
1.2 KiB
C++

#include <gtest/gtest.h>
#include "../../src/activation_function.hpp"
#include <cmath>
TEST(ActivationFunctionTest, SigmoidTest) {
Sigmoid sigmoid;
// Test sigmoid at x = 0 (should be 0.5)
EXPECT_NEAR(sigmoid(0.0), 0.5, 1e-6);
// Test sigmoid at large positive value (should approach 1)
EXPECT_NEAR(sigmoid(10.0), 1.0, 1e-4);
// Test sigmoid at large negative value (should approach 0)
EXPECT_NEAR(sigmoid(-10.0), 0.0, 1e-4);
// Test sigmoid at x = 1
EXPECT_NEAR(sigmoid(1.0), 1.0 / (1.0 + exp(-1.0)), 1e-6);
// Test sigmoid at x = -1
EXPECT_NEAR(sigmoid(-1.0), 1.0 / (1.0 + exp(1.0)), 1e-6);
}
TEST(ActivationFunctionTest, ReLUTest) {
ReLU relu;
// Test ReLU at x = 0 (should be 0)
EXPECT_DOUBLE_EQ(relu(0.0), 0.0);
// Test ReLU at positive value (should be same value)
EXPECT_DOUBLE_EQ(relu(5.0), 5.0);
// Test ReLU at negative value (should be 0)
EXPECT_DOUBLE_EQ(relu(-5.0), 0.0);
// Test ReLU at very small positive value
EXPECT_DOUBLE_EQ(relu(0.0001), 0.0001);
// Test ReLU at very small negative value
EXPECT_DOUBLE_EQ(relu(-0.0001), 0.0);
}