lr_mult = 0 有什么影响?

What is the impact of lr_mult = 0?

我正在查看一些 Caffe 网络构建代码(在 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 术语的作用。在查看文档后我的第一个猜测是它应该阻止对内核权重的任何更新,但这看起来很奇怪,因为我假设默认初始化是随机的。这是做什么的?是否有其他代码或参数文件在某处初始化内核?

  1. 你是对的。设置 lr_mult=0 冻结层的权重。权重将保持固定,并且在整个训练过程中不会改变其初始值。
  2. 如果您遵循代码,您会看到对 surgery.interp 的调用,此函数在 训练开始之前 设置放大层的初始权重。由于 lr_mult=0,权重保持固定为这些值。