【发布时间】:2021-02-23 14:10:53
【问题描述】:
这个问题基本上是针对 Keras 的工作,或者tf.keras 适合对框架有非常深入了解的人
据我所知,tf.keras.optimizers.Adam 是一个优化器,它已经有一个自适应学习率方案。那么如果我们使用from keras.callbacks.ReduceLROnPlateau 和Adam 优化器或任何其他优化器,这样做不是没有意义吗?我没有基于Keras 的Optimizer 的内部工作原理,但对我来说,如果我们使用自适应优化器,为什么要使用它以及如果我们使用这个给定的回调,会发生什么?对训练有影响吗?
【问题讨论】:
-
实际上似乎不是一个编程问题——毕竟it works with Adam。你似乎在问一个理论问题。
-
Adam 仍然有一个“默认”学习率,它只是由所有自适应 thingamajigs 简单地缩放,所以对我来说似乎“很明显”它会影响学习。如果您想知道它如何影响它,为什么不尝试一下呢?
-
我将 Adam 优化器与 ReduceLROnPlateau 一起使用,效果很好。不确定 Adam 优化器在什么基础上调整学习率,如果实际上是这样,但您想要的是根据验证损失降低学习率。
-
AdaGrad still 具有全局学习率。是的,每个参数都有“不同的”学习率,但这些都是基于全局学习率。本质上,
learning_rate(param) = global_learning_rate * adaptive_terms(param)。更改 Keras 优化器中的学习率会修改此全局学习率,它充当所有每个参数学习率的尺度。 -
再添加一件事,一个优化器实际上是正确的,没有没有全局学习率是Adadelta。然而,这里 Keras 人只是在实现中添加了这个,即使它不在论文中。一般来说,我可以从许多实验中证实,即使使用像 Adam 这样的自适应优化器,减少高原上的 LR 也可以很多。试试看!
标签: tensorflow machine-learning keras deep-learning tf.keras