冻结VGG19网络中的权重,用于Caffe中的转移学习

问题描述 投票:0回答:1

我问这个问题的原因是因为在VGG19中有批量标准化层(例如,与VGG16不同)。

我正在尝试在Caffe中训练一个更快的RCNN网络。我是这样做的:

  • 下载VGG19 ImageNet预训练模型(权重+原型文件)
  • 从原型文件中删除完全连接的图层
  • 在VGG19主干卷积层之上添加RPN和Fast-RCNN层

关于卷积层的lr_mult值,我没有改变任何东西。在prototxt文件中,卷积层(如conv1_1等具有非零lr_mult值,而批量标准化层'lr_mult值设置为0(层命名为q​​azxswpoi)。

批量标准化层是否被冻结这一事实是否意味着卷积层也被冻结了?或者我应该在名为conv1_1/bn的图层中将lr_mult设置为0?


更新:在对所有卷积层的convX_X进行归零的同时运行另一个训练过程后,训练时间急剧减少,这意味着答案是lr_mult值也需要在lr_mult层中设置为0。

caffe vgg-net transfer-learning faster-rcnn
1个回答
1
投票

要在Caffe中使用batchnorm正确冻结卷积层,您应该:

  • 对于卷积层:将convX_X param设置为0
  • 对于batchnorm图层:将lr_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

© www.soinside.com 2019 - 2024. All rights reserved.