25 #include <gtest/gtest.h>
31 #define private public
52 double abs_diff = 1.0;
53 while (abs_diff > eps) {
54 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
58 double value = fun.calculateValue(x);
59 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration;
62 abs_diff = std::abs(value - fun.minValue());
65 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
66 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
80 double abs_diff = 1.0;
81 while (abs_diff > eps) {
82 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
86 double value = fun.calculateValue(x);
87 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration;
90 abs_diff = std::abs(value - fun.minValue());
93 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
94 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
107 size_t iteration = 0;
108 double abs_diff = 1.0;
109 while (abs_diff > eps) {
110 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
114 double value = fun.calculateValue(x);
115 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration;
118 abs_diff = std::abs(value - fun.minValue());
121 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
122 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
135 size_t iteration = 0;
136 double abs_diff = 1.0;
137 while (abs_diff > eps) {
138 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
139 opt.
update(x, dx, 0.00001);
142 double value = fun.calculateValue(x);
143 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration;
146 abs_diff = std::abs(value - fun.minValue());
149 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
150 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
Test fixture - artificial landscape - sphere function 20D (square function).
Test fixture - artificial landscape - Rosenbrock function 2D.
Test fixture - artificial landscape - sphere function 1D (square function).
Update in the direction of gradient descent - with momentum.
Test fixture - artificial landscape - Beale's function 2D.
virtual void update(mic::types::MatrixPtr< eT > p_, mic::types::MatrixPtr< eT > dp_, eT learning_rate_, eT decay_=0.0)
TEST_F(Sphere1DLandscape, Momentum_Convergence)