我问这个问题的原因是因为在VGG19中有批量标准化层(例如,与VGG16不同)。
我正在尝试在Caffe中训练一个更快的RCNN网络。我是这样做的:
关于卷积层的lr_mult
值,我没有改变任何东西。在prototxt文件中,卷积层(如conv1_1
等具有非零lr_mult
值,而批量标准化层'lr_mult
值设置为0(层命名为qazxswpoi)。
批量标准化层是否被冻结这一事实是否意味着卷积层也被冻结了?或者我应该在名为conv1_1/bn
的图层中将lr_mult
设置为0?
更新:在对所有卷积层的convX_X
进行归零的同时运行另一个训练过程后,训练时间急剧减少,这意味着答案是lr_mult
值也需要在lr_mult
层中设置为0。
要在Caffe中使用batchnorm正确冻结卷积层,您应该:
convX_X
param设置为0lr_mult
参数设置为0,将lr_mult
设置为use_global_stats
:true
批量标准化层是否被冻结这一事实是否意味着卷积层也被冻结了?
当然不是。但是,通过使用layer {
name: "bn1"
type: "BatchNorm"
bottom: "pool1"
top: "bn1"
batch_norm_param {
use_global_stats: true
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
}
param你可以达到这个效果:propagate_down
。