Caffe中lr_mult=0的作用是什么?反卷积层参数疑问
关于Caffe中
lr_mult=0参数的作用解析 你在BerkeleyVision的pascalcontext-fcn8s项目的net.py里看到的这段反卷积代码:
L.Deconvolution(n.score_fr, convolution_param=dict(num_output=60, kernel_size=4, stride=2, bias_term=False), param=[dict(lr_mult=0)])
这里的lr_mult=0作用非常明确:完全冻结该层的权重参数,让它们在整个训练过程中不会被优化器更新。
你提到的“默认随机初始化但不更新似乎不合理”的疑惑很关键——在FCN这类语义分割模型中,这类反卷积层(主要用来做上采样,恢复特征图的空间尺寸)的权重确实不会用随机初始化,而是会从对应预训练下采样卷积层的权重做转置初始化,之后就固定下来不再更新。
具体细节可以拆解为:
- FCN是基于预训练的分类网络(比如VGG)改造而来,这类上采样用的反卷积层,其权重会被初始化为对应下采样卷积层权重的转置(简单说就是把下采样时用的卷积核翻转后转置,匹配上采样的像素映射逻辑),这样一开始就具备合理的上采样能力。
- 设置
lr_mult=0就是为了维持这个初始化好的权重不变,避免训练过程中破坏这种基于预训练网络的上采样逻辑——毕竟这类层的作用是还原特征尺寸,不需要再学习新的权重。
额外补充:lr_mult是Caffe中用于控制参数学习率缩放的配置项,默认值为1,设置为0就代表该参数的有效学习率为0,自然不会被优化器调整。如果你的代码开启了bias_term,还可以给偏置参数单独设置lr_mult,不过这段代码里已经关闭了偏置项。
内容的提问来源于stack exchange,提问作者Jim Biard
相关产品推荐
相关产品推荐

