關於caffe的筆記

1、利用caffe訓練期間,內存需要多少,內存中都保存了學什麼?

內存需要保存一個訓練週期中的所有 feature map 數據+網絡參數數據
受bach_size 及網絡模型大小關係較大。

2、利用訓練好的模型文件.caffemodel如何初始化網絡模型文件 .prototxt?

  • matlab 接口:
    net=caffe.Net()
    net.copy_from()
  • caffe 源碼解釋:
    調用函數:caffe_net.CopyTrainedLayersFrom(FLAGS_weights);
    利用 .caffemodel文件中與網絡模型文件(.prototxt)網絡層名稱一致的參數進行賦值,與其網絡名稱不一致的不做處理,默認是隨機初始化。

template <typename Dtype>
void Net<Dtype>**::CopyTrainedLayersFrom(const NetParameter& param)** {
  int num_source_layers = param.layer_size();
  for (int i = 0; i < num_source_layers; ++i) {
    const LayerParameter& source_layer = param.layer(i);
    const string& source_layer_name = source_layer.name();
    int target_layer_id = 0;
    while (target_layer_id != layer_names_.size() &&
        layer_names_[target_layer_id] != source_layer_name) {
      ++target_layer_id;
    }
    if (target_layer_id == layer_names_.size()) {
      LOG(INFO) << "Ignoring source layer " << source_layer_name;
      continue;
    }
    DLOG(INFO) << "Copying source layer " << source_layer_name;
    vector<shared_ptr<Blob<Dtype> > >& target_blobs =
        layers_[target_layer_id]->blobs();
    CHECK_EQ(target_blobs.size(), source_layer.blobs_size())
        << "Incompatible number of blobs for layer " << source_layer_name;
    for (int j = 0; j < target_blobs.size(); ++j) {
      if (!target_blobs[j]->ShapeEquals(source_layer.blobs(j))) {
        Blob<Dtype> source_blob;
        const bool kReshape = true;
        source_blob.FromProto(source_layer.blobs(j), kReshape);
        LOG(FATAL) << "Cannot copy param " << j << " weights from layer '"
            << source_layer_name << "'; shape mismatch.  Source param shape is "
            << source_blob.shape_string() << "; target param shape is "
            << target_blobs[j]->shape_string() << ". "
            << "To learn this layer's parameters from scratch rather than "
            << "copying from a saved net, rename the layer.";
      }
      const bool kReshape = false;
      target_blobs[j]->FromProto(source_layer.blobs(j), kReshape);
    }
  }
}

3、

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章