#include
#include
#include
#include "google/protobuf/text_format.h"
#include "gtest/gtest.h"
#include "caffe/common.hpp"
#include "caffe/proto/caffe.pb.h"
#include "caffe/sgd_solvers.hpp"
#include "caffe/solver.hpp"
#include "caffe/test/test_caffe_main.hpp"
using std::ostringstream;
namespace caffe {
template
class SolverTest : public MultiDeviceTest {
typedef typename TypeParam::Dtype Dtype;
protected:
virtual void InitSolverFromProtoString(const string& proto) {
SolverParameter param;
CHECK(google::protobuf::TextFormat::ParseFromString(proto, ¶m));
// Set the solver_mode according to current Caffe::mode.
switch (Caffe::mode()) {
case Caffe::CPU:
param.set_solver_mode(SolverParameter_SolverMode_CPU);
break;
case Caffe::GPU:
param.set_solver_mode(SolverParameter_SolverMode_GPU);
break;
default:
LOG(FATAL) solver_->net() != NULL);
EXPECT_TRUE(this->solver_->net()->has_layer("loss"));
EXPECT_FALSE(this->solver_->net()->has_layer("accuracy"));
ASSERT_EQ(2, this->solver_->test_nets().size());
EXPECT_TRUE(this->solver_->test_nets()[0]->has_layer("loss"));
EXPECT_TRUE(this->solver_->test_nets()[0]->has_layer("accuracy"));
EXPECT_FALSE(this->solver_->test_nets()[1]->has_layer("loss"));
EXPECT_TRUE(this->solver_->test_nets()[1]->has_layer("accuracy"));
}
} // namespace caffe