Update net.cpp
authorYangqing Jia <jiayq84@gmail.com>
Thu, 13 Feb 2014 01:31:36 +0000 (17:31 -0800)
committerYangqing Jia <jiayq84@gmail.com>
Thu, 13 Feb 2014 01:31:36 +0000 (17:31 -0800)
Fixed bug raised by @tdomhan in issue #100.

src/caffe/net.cpp

index 3d0f538..351a7b9 100644 (file)
@@ -117,9 +117,15 @@ void Net<Dtype>::Init(const NetParameter& param) {
           << top_vecs_[i][topid]->height() << " "
           << top_vecs_[i][topid]->width();
     }
-    // Check if this layer needs backward operation itself
-    for (int j = 0; j < layers_[i]->layer_param().blobs_lr_size(); ++j) {
-      need_backward |= (layers_[i]->layer_param().blobs_lr(j) > 0);
+    // catch: if a layer param does not specify blobs_lr, we should assume the
+    // learning rate to be 1. Thus we will need to perform backward.
+    if (layers_[i]->layer_param().blobs_lr_size()) {
+      // Check if this layer needs backward operation itself
+      for (int j = 0; j < layers_[i]->layer_param().blobs_lr_size(); ++j) {
+        need_backward |= (layers_[i]->layer_param().blobs_lr(j) > 0);
+      }
+    } else {
+      need_backward = true;
     }
     // Finally, set the backward flag
     layer_need_backward_.push_back(need_backward);