void Solver::Snapshot() {
  CHECK(Caffe::root_solver());
  string model_filename;
  switch (param_.snapshot_format()) {
  case caffe::SolverParameter_SnapshotFormat_BINARYPROTO:
    model_filename = SnapshotToBinaryProto();
    break;
  case caffe::SolverParameter_SnapshotFormat_HDF5:
    model_filename = SnapshotToHDF5();
    break;
  default:
    LOG(FATAL) << "Unsupported snapshot format.";
  }
  SnapshotSolverState(model_filename);
}
void Solver<Dtype>::Snapshot() {
	NetParameter net_param;
	// For intermediate results, we will also dump the gradient values.
	net_->ToProto(&net_param, param_.snapshot_diff());
	string filename(param_.snapshot_prefix());
	char iter_str_buffer[20];
	sprintf(iter_str_buffer, "_iter_%d", iter_);
	filename += iter_str_buffer;
	LOG(INFO)<< "Snapshotting to " << filename;
	WriteProtoToBinaryFile(net_param, filename.c_str());
	SolverState state;
	SnapshotSolverState(&state);
	state.set_iter(iter_);
	state.set_learned_net(filename);
	filename += ".solverstate";
	LOG(INFO)<< "Snapshotting solver state to " << filename;
	WriteProtoToBinaryFile(state, filename.c_str());
}
Beispiel #3
0
void Solver<Dtype>::Snapshot() {
  NetParameter net_param;
  // For intermediate results, we will also dump the gradient values.
  net_->ToProto(&net_param, param_.snapshot_diff());
  string filename(param_.snapshot_prefix());
  string model_filename, snapshot_filename;
  const int kBufferSize = 20;
  char iter_str_buffer[kBufferSize];
  snprintf(iter_str_buffer, kBufferSize, "_iter_%d", iter_);
  filename += iter_str_buffer;
  model_filename = filename + ".caffemodel";
  LOG(INFO) << "Snapshotting to " << model_filename;
  WriteProtoToBinaryFile(net_param, model_filename.c_str());
  SolverState state;
  SnapshotSolverState(&state);
  state.set_iter(iter_);
  state.set_learned_net(model_filename);
  snapshot_filename = filename + ".solverstate";
  LOG(INFO) << "Snapshotting solver state to " << snapshot_filename;
  WriteProtoToBinaryFile(state, snapshot_filename.c_str());
}