我在caffe框架下看到了以下代码。整个代码正在尝试编写caffe train_val.prototxt
和solver.prototxt
。
# Use different initial learning rate.
if use_batchnorm:
base_lr = 0.0004
else:
base_lr = 0.00004
为什么基础学习率不同?
答案 0 :(得分:0)
如果this paper有帮助,您可以尝试。 他们说,如果你不使用标准化,你需要“更仔细地”训练,这意味着使用较低的学习率。
略读第一页,我可以想象它的工作原理如下:
对于某些非线性,存在“良好的输入值范围”,批量规范将值带入该范围。高输入值很差并导致饱和(功能中的斜率很小,“消失的梯度”)。
因此,如果你没有规范化,你需要做出更小的步骤 - 更低的学习率 - 以避免“跳跃”到导致网内高值的权重。如何初始化权重也要更加小心。我想如果你使用ReLus,那不是一个问题。但如果其他人与ReLus有过不同的经历,请纠正我。