【问题标题】:Keras callback ReduceLROnPlateau - cooldown parameterKeras 回调 ReduceLROnPlateau - 冷却参数
【发布时间】:2018-09-14 19:20:34
【问题描述】:

Keras 中的ReduceLROnPlateau 回调似乎是用于训练模型的有趣工具。但我无法真正弄清楚 Keras 中的回调函数 ReduceLROnPlateau 中的 cooldown 参数是什么意思。

文档是这样说的:

一、函数的接口:

keras.callbacks.ReduceLROnPlateau(monitor='val_loss', 
                                  factor=0.1, 
                                  patience=10, 
                                  verbose=0, 
                                  mode='auto', 
                                  min_delta=0.0001, 
                                  cooldown=0, 
                                  min_lr=0)

ReduceLROnPlateau:一旦学习停滞,模型通常会受益于将学习率降低 2-10 倍。此回调监控一个数量,如果“耐心”的 epoch 数量没有改善,则学习率会降低。

cooldown: 减少 lr 后恢复正常操作之前等待的 epoch 数。

这个解释并没有让我很清楚。这里的意思是: - 说lr=A。如果在patience epoch 数期间相关监控指标没有改善,则学习率会降低。 (并在减少它之后说lr=B。) - 在cooldown epoch 数之后,学习率设置为它的第一个值(再次lr=A)。

我的理解正确吗?如果不是,这里冷却参数的真正作用是什么?

PS。当我谷歌它时,我看到一些例子,人们将cooldown参数设置为零,这让我觉得我对这个参数的看法是错误的。

【问题讨论】:

    标签: tensorflow machine-learning callback keras


    【解决方案1】:

    确实,它没有在描述中明确说明。这意味着如果您设置了冷却时间,则必须等待才能恢复正常操作(即开始监控在patience 时期内监控的指标是否有任何改进)。

    例如,假设cooldown=5。学习率降低后,算法会等待5 epochs,然后再次开始监控指标。所以如果metric和patience=10没有改善,在15 epochs之后学习率会再次降低。

    您可以通过查看相应的code 来确认这一点。

    【讨论】:

    • 很好的解释!在您的示例中,只要监控的指标没有改善,我现在是否知道 lr 每 15 个 epoch 就会减少一次? (这意味着 lr 不能比完成 15 个 epoch 更快地“再次”减少。)
    • 是的,在第一个 5 时期(或 cooldown 规定的许多时期)甚至没有监控指标。
    • 这么有效地,这只是修改了耐心,但让您在第一次运行时使用不同的(更短的)耐心?
    • @Ataxias 是的,但它可能(并且通常是)比耐心更长。如果您考虑一下,这是有道理的。您希望您的模型首先在一定程度上收敛于高学习率,然后再降低它并让它进一步收敛。
    • @Djib2011 谢谢。我想我们说的是同一件事。如果您有 P 的耐心和 C 步/周期的冷却时间,那么要进行第一次学习率降低,您需要等待(至少)P,然后等待 C+P,它始终 > P。您还说使用 C > P 是有意义的,我认为这通常是合理的。
    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 2021-05-20
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多