关于Caffe中param重复设置及微调相关问题咨询
解答你的Caffe参数设置疑问
Hey Nima, let's tackle your three questions about Caffe's param settings clearly:
1. 为什么“param”会被设置两次?
在Caffe中,param字段是用来单独配置层中每个可学习参数组的训练行为的。举个常见的例子:卷积层(Convolution)和全连接层(InnerProduct)通常有两组可学习参数——权重(weights)和偏置(biases)。
- 第一个
param块对应权重参数,用来设置它的学习率倍数(lr_mult)、权重衰减倍数(decay_mult)等; - 第二个
param块对应偏置参数,我们往往会给偏置设置不同的配置(比如关闭权重衰减,或者设置更低的学习率)。
这种分开设置的方式,能让你针对不同类型的参数做精细化的训练控制。
2. 若不想该层在微调时发生变化,是否需要将所有param设为0?
不需要把所有param字段设为0,核心是把参数的**lr_mult设为0**。
当lr_mult为0时,训练过程中该参数的梯度不会被应用(相当于学习率为0),参数值会一直保持初始状态,不会被更新。如果你的层配置里有decay_mult,也可以把它设为0,避免权重衰减对参数产生影响,但最关键的还是lr_mult=0。
3. 仅需在train_val.prototxt中修改这些设置,还是也需要在deploy.prototxt中修改?
只需要修改train_val.prototxt就够了。
train_val.prototxt是用于训练(包括微调)的配置文件,里面的param字段控制训练时的参数更新行为;deploy.prototxt是用于模型推理(预测)的配置,它不需要训练相关的参数配置(比如lr_mult、decay_mult这些字段在deploy文件里根本不会生效),所以完全不需要修改它。
内容的提问来源于stack exchange,提问作者Nima
相关产品推荐
相关产品推荐

