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
术语的作用。在查看文档后我的第一个猜测是它应该阻止对内核权重的任何更新,但这看起来很奇怪,因为我假设默认初始化是随机的。这是做什么的?是否有其他代码或参数文件在某处初始化内核?
- 你是对的。设置
lr_mult=0
冻结层的权重。权重将保持固定,并且在整个训练过程中不会改变其初始值。
- 如果您遵循代码,您会看到对
surgery.interp
的调用,此函数在 训练开始之前 设置放大层的初始权重。由于 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
术语的作用。在查看文档后我的第一个猜测是它应该阻止对内核权重的任何更新,但这看起来很奇怪,因为我假设默认初始化是随机的。这是做什么的?是否有其他代码或参数文件在某处初始化内核?
- 你是对的。设置
lr_mult=0
冻结层的权重。权重将保持固定,并且在整个训练过程中不会改变其初始值。 - 如果您遵循代码,您会看到对
surgery.interp
的调用,此函数在 训练开始之前 设置放大层的初始权重。由于lr_mult=0
,权重保持固定为这些值。