Caffe Net Surgery 是否需要微调?

Is Caffe Net Surgery requires fine tuning?

我是 Caffe 的新手,我想将已经训练好的 caffeNet 模型与 ImageNet 一起使用。我通过删除卷积中间 conv4 层来应用网络手术。

'layer {
     name: "relu3"
     type: "ReLU"
     bottom: "conv3"
     top: "conv3"
 }

 layer {
     name: "relu5-new"
     type: "ReLU"
     bottom: "conv5-new"
     top: "conv5-new"
 }

 layer {
     name: "pool5-new"
     type: "Pooling"
     bottom: "conv5-new"
     top: "pool5-new"
     pooling_param {
         pool: MAX
         kernel_size: 3
         stride: 2
      }
 }

 layer {
     name: "fc6"
     type: "InnerProduct"
     bottom: "pool5-new"
     top: "fc6"
     inner_product_param {
     num_output: 4096
     }
 }'

Full of prototxt file can be found here

保存这个新网络后准确率变为0。我应该对ImageNet验证集进行微调,还是我的新prototxt文件有问题?

任何帮助将不胜感激!

您开始使用的原始网络在 conv3conv5 之间有 conv4:这意味着 conv5 的过滤器(权重)需要一定数量的输入和某些 "order" 或 "meaning" 的输入。删除 conv4 后,您必须更改 conv5 以接受不同数量的输入。因此,必须训练新的 conv5 以适应它接收到的新输入。
在这种情况下,当你引入一个新的 conv5 层时,你应该在你的 prototxt 中定义 weight_filler 来指导 caffe 如何初始化新的权重。否则 caffe 会将权重设置为零,在这种情况下几乎不可能进行微调。