diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index cae6ce1d27a..3fd6c479b09 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -555,10 +555,12 @@ class GradientBasedSolverTest : public MultiDeviceTest { const vector*>& params = solver_->net()->learnable_params(); for (int i = 0; i < params.size(); ++i) { for (int j = 0; j < params[i]->count(); ++j) { - EXPECT_EQ(param_copies[i]->cpu_data()[j], params[i]->cpu_data()[j]) - << "param " << i << " data differed at dim " << j; - EXPECT_EQ(param_copies[i]->cpu_diff()[j], params[i]->cpu_diff()[j]) - << "param " << i << " diff differed at dim " << j; + Dtype rel_error = Dtype(std::max(1., fabs(params[i]->cpu_data()[j])) * + 1.e-5); + EXPECT_NEAR(param_copies[i]->cpu_data()[j], params[i]->cpu_data()[j], + rel_error) << "param " << i << " data differed at dim " << j; + EXPECT_NEAR(param_copies[i]->cpu_diff()[j], params[i]->cpu_diff()[j], + rel_error) << "param " << i << " diff differed at dim " << j; } } @@ -566,10 +568,12 @@ class GradientBasedSolverTest : public MultiDeviceTest { const vector > >& history = solver_->history(); for (int i = 0; i < history.size(); ++i) { for (int j = 0; j < history[i]->count(); ++j) { - EXPECT_EQ(history_copies[i]->cpu_data()[j], history[i]->cpu_data()[j]) - << "history blob " << i << " data differed at dim " << j; - EXPECT_EQ(history_copies[i]->cpu_diff()[j], history[i]->cpu_diff()[j]) - << "history blob " << i << " diff differed at dim " << j; + Dtype rel_error = Dtype(std::max(1., fabs(history[i]->cpu_data()[j])) * + 1.e-5); + EXPECT_NEAR(history_copies[i]->cpu_data()[j], history[i]->cpu_data()[j], + rel_error) << "history blob " << i << " data differed at dim " << j; + EXPECT_NEAR(history_copies[i]->cpu_diff()[j], history[i]->cpu_diff()[j], + rel_error) << "history blob " << i << " diff differed at dim " << j; } } }