@@ -167,7 +167,7 @@ void Solver<Dtype>::Step(int iters) {
167
167
vector<Dtype> losses;
168
168
Dtype smoothed_loss = 0 ;
169
169
170
- for (; iter_ < stop_iter; ++iter_ ) {
170
+ while ( iter_ < stop_iter) {
171
171
// zero-init the params
172
172
for (int i = 0 ; i < net_->params ().size (); ++i) {
173
173
shared_ptr<Blob<Dtype> > blob = net_->params ()[i];
@@ -235,8 +235,12 @@ void Solver<Dtype>::Step(int iters) {
235
235
ComputeUpdateValue ();
236
236
net_->Update ();
237
237
238
+ // Increment the internal iter_ counter -- its value should always indicate
239
+ // the number of times the weights have been updated.
240
+ ++iter_;
241
+
238
242
// Save a snapshot if needed.
239
- if (param_.snapshot () && ( iter_ + 1 ) % param_.snapshot () == 0 ) {
243
+ if (param_.snapshot () && iter_ % param_.snapshot () == 0 ) {
240
244
Snapshot ();
241
245
}
242
246
}
@@ -448,15 +452,14 @@ void Solver<Dtype>::Snapshot() {
448
452
string model_filename, snapshot_filename;
449
453
const int kBufferSize = 20 ;
450
454
char iter_str_buffer[kBufferSize ];
451
- // Add one to iter_ to get the number of iterations that have completed.
452
- snprintf (iter_str_buffer, kBufferSize , " _iter_%d" , iter_ + 1 );
455
+ snprintf (iter_str_buffer, kBufferSize , " _iter_%d" , iter_);
453
456
filename += iter_str_buffer;
454
457
model_filename = filename + " .caffemodel" ;
455
458
LOG (INFO) << " Snapshotting to " << model_filename;
456
459
WriteProtoToBinaryFile (net_param, model_filename.c_str ());
457
460
SolverState state;
458
461
SnapshotSolverState (&state);
459
- state.set_iter (iter_ + 1 );
462
+ state.set_iter (iter_);
460
463
state.set_learned_net (model_filename);
461
464
state.set_current_step (current_step_);
462
465
snapshot_filename = filename + " .solverstate" ;
0 commit comments