generated from aselimov/cpp_project_template
42 lines
1.2 KiB
C++
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);
|
|
}
|