是否需要在caffe中的deploy.prototxt中定义dropout层?

时间:2016-04-19 09:34:02

标签: caffe conv-neural-network

在caffe的AlexNet实现中,我在deploy.prototxt文件中看到了以下层:

layer {
  name: "drop7"
  type: "Dropout"
  bottom: "fc7"
  top: "fc7"
  dropout_param {
    dropout_ratio: 0.5
  }
}

现在辍学的关键思想是在训练期间从神经网络中随机丢弃单位(及其连接)。

这是否意味着我可以直接从deploy.prototxt删除此图层,因为此文件仅用于测试期间?

1 个答案:

答案 0 :(得分:10)

是。测试期间不需要丢失。

即使您包含了一个辍学图层,测试期间也不会发生任何特殊情况。请参阅dropout forward pass的源代码:

  if (this->phase_ == TRAIN) {
    // Code to do something
  } else {
    caffe_copy(bottom[0]->count(), bottom_data, top_data);  //Code to copy bottom blob to top blob
  }

如源代码所示,如​​果底部blob数据不在训练阶段,则会将其复制到顶部blob数据内存中。