gpt4 book ai didi

python - Keras 中 Adam 优化器的衰减参数

转载 作者:行者123 更新时间:2023-12-01 00:05:06 24 4
gpt4 key购买 nike

我认为 Adam 优化器的设计可以自动调整学习率。但是 Keras 中有一个选项可以明确提及 Adam 参数选项中的衰减。我想澄清衰减对 Keras 中 Adam 优化器的影响。如果我们在 lr = 0.001 上使用衰减(例如 0.01)编译模型,然后拟合运行 50 个 epoch 的模型,那么每个 epoch 后学习率是否会降低 0.01 倍?

有什么方法可以指定学习率仅在运行一定数量的 epoch 后才衰减?

在 pytorch 中,有一个名为 AdamW 的不同实现,它不存在于标准 keras 库中。这与上面提到的每个时期后改变衰减相同吗?

提前感谢您的回复。

最佳答案

来自source code , decay调整lriterations根据

lr = lr * (1. / (1. + decay * iterations))  # simplified

参见image以下。这是与时代无关的。 iterations在每个批处理拟合时增加 1(例如,每次调用 train_on_batch 时,或者 x 中有多少个批处理用于 model.fit(x) - 通常为 len(x) // batch_size 批处理)。

要实现您所描述的内容,您可以使用如下回调:

from keras.callbacks import LearningRateScheduler
def decay_schedule(epoch, lr):
# decay by 0.1 every 5 epochs; use `% 1` to decay after each epoch
if (epoch % 5 == 0) and (epoch != 0):
lr = lr * 0.1
return lr

lr_scheduler = LearningRateScheduler(decay_schedule)
model.fit(x, y, epochs=50, callbacks=[lr_scheduler])

LearningRateScheduler接受一个函数作为参数,该函数被输入纪元索引和 lr在每个纪元的开始 .fit 。然后它更新lr根据该函数 - 因此在下一个时期,该函数将被输入更新 lr .

此外,我还有 AdamW、NadamW 和 SGDW 的 Keras 实现 - Keras AdamW .

<小时/>

<小时/>

澄清:第一次调用.fit()调用 on_epoch_begin epoch = 0 - 如果我们不希望lr要立即腐烂,我们应该添加 epoch != 0签到decay_schedule 。然后,epoch表示已经过去了多少个纪元 - 所以当 epoch = 5 时,应用衰减。

关于python - Keras 中 Adam 优化器的衰减参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60029027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com