我目前正在训练 CNN,Keras
并且正在使用 Adam 优化器。我的计划是在每个 epoch 之后逐渐降低学习率。这就是我认为衰减参数的用途。对我来说,文档并没有清楚地解释它是如何工作的:
衰减:浮动> = 0。每次更新的学习率衰减。
但是,当查看 tensorboard 中使用的学习率时,它与初始学习率保持不变。那么,这个衰减参数实际上是如何工作的呢?
我目前正在训练 CNN,Keras
并且正在使用 Adam 优化器。我的计划是在每个 epoch 之后逐渐降低学习率。这就是我认为衰减参数的用途。对我来说,文档并没有清楚地解释它是如何工作的:
衰减:浮动> = 0。每次更新的学习率衰减。
但是,当查看 tensorboard 中使用的学习率时,它与初始学习率保持不变。那么,这个衰减参数实际上是如何工作的呢?
Adam 使用小批量进行优化。在优化期间,您可能需要使用高学习率快速下坡,成本函数。当您到达接近相对最佳点的点时,您必须降低学习率以免错过最佳点。换句话说,您必须通过降低学习率来衰减学习率以获得更准确的步骤。小批量优化器在一个时期内有多个步骤,这些步骤可能并不都是正确的,但因为它们试图最小化每批输入数据的成本,它们最终达到了相对最优点。
对于每个 epoch,TensorFlow
使用相同的学习率,在完成 epoch 后,下一个 epoch 将使用当前学习率除以衰减参数开始。它不应该是负面的,因为您使用的是梯度下降,这意味着向低级别移动。
Keras
发现如下代码:
if self.initial_decay > 0:
lr *= (1. / (1. + self.decay * K.cast(self.iterations,
K.dtype(self.decay))))
学习在每次迭代而不是每个时期都会改变。