men*_*lin 52 neural-network tensorflow
我正在使用Adam优化器训练网络进行图像本地化,有人建议我使用指数衰减.我不想尝试,因为Adam优化器本身会降低学习速度.但那家伙坚持认为他说他之前就这么做过.我应该这样做,你的建议背后有什么理论吗?
nes*_*uno 65
这取决于.ADAM使用个人学习速率更新任何参数.这意味着网络中的每个参数都具有相关的特定学习速率.
但是参数的单个学习率是使用lambda(初始学习率)作为上限来计算的.这意味着每个学习速率可以从0(无更新)到lambda(最大更新)变化.
学习速度在训练阶段适应自己,这是真的,但如果你想确保每个更新步骤都不超过lambda,你可以使用指数衰减或其他任何方式降低lambda.当先前关联的lambda参数的计算损失已经停止减少时,它可以帮助减少最新训练步骤期间的损失.
Aus*_*tin 13
Adam 有一个单一的学习率,但它是一个自适应的最大学习率,所以我认为没有多少人使用学习率调度。
由于自适应特性,默认率相当稳健,但有时您可能想要对其进行优化。你可以做的是事先找到一个最佳的违约率,从一个非常小的比率开始,增加它直到损失停止减少,然后查看损失曲线的斜率并选择与损失减少最快的学习率(不是损失实际上最低的点)。Jeremy Howard 在 fast.ai 深度学习课程及其循环学习率论文中提到了这一点。
编辑:人们最近开始与 Adam 一起使用单周期学习率策略,并取得了很好的效果。
是的,一点没错。根据我自己的经验,这对亚当的学习率下降非常有用。如果没有衰减,则必须将学习速率设置得很小,这样损失减少到一定程度后才不会开始分散。在这里,我发布代码以使用Adam使用TensorFlow降低学习率。希望它对某人有帮助。
decayed_lr = tf.train.exponential_decay(learning_rate,
global_step, 10000,
0.95, staircase=True)
opt = tf.train.AdamOptimizer(decayed_lr, epsilon=adam_epsilon)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28500 次 |
| 最近记录: |