Keras 3 API 文档 / 优化器 / 学习率调度 API / CosineDecayRestarts

余弦衰减重启

[源代码]

CosineDecayRestarts

keras.optimizers.schedules.CosineDecayRestarts(
    initial_learning_rate,
    first_decay_steps,
    t_mul=2.0,
    m_mul=1.0,
    alpha=0.0,
    name="SGDRDecay",
)

使用带重启的余弦衰减的 LearningRateSchedule

参见 Loshchilov & Hutter, ICLR2016, SGDR: 带有热重启的随机梯度下降。

在训练模型时,通常需要在训练过程中降低学习率。此调度器在给定初始学习率的情况下,将余弦衰减函数与重启应用于优化器步。它需要一个 step 值来计算衰减的学习率。你可以只传递一个在每次训练步骤中递增的后端变量。

该调度器是一个一元可调用对象,在传递当前优化器步时会产生衰减的学习率。这在不同优化器函数调用之间改变学习率值时可能很有用。

学习率乘数首先在 first_decay_steps 步内从 1 衰减到 alpha。然后,会进行热重启。每一次新的热重启的周期为 t_mul 倍的步长,并且新的学习率为 m_mul 倍的初始学习率。

示例

first_decay_steps = 1000
lr_decayed_fn = (
    keras.optimizers.schedules.CosineDecayRestarts(
        initial_learning_rate,
        first_decay_steps))

你可以直接将此调度器作为学习率传递给 keras.optimizers.Optimizer。学习率调度器也可以使用 keras.optimizers.schedules.serializekeras.optimizers.schedules.deserialize 进行序列化和反序列化。

参数

  • initial_learning_rate: Python 浮点数。初始学习率。
  • first_decay_steps: 一个 Python 整数。衰减的步数。
  • t_mul: 一个 Python 浮点数。用于推导第 i 个周期的迭代次数。
  • m_mul: 一个 Python 浮点数。用于推导第 i 个周期的初始学习率。
  • alpha: 一个 Python 浮点数。最小学习率值,作为 initial_learning_rate 的分数。
  • name: 字符串。操作的可选名称。默认为 "SGDRDecay"

返回

一个接受一个参数的可调用学习率调度,该参数为当前的优化器步数,并输出衰减后的学习率,一个与 initial_learning_rate 类型相同的标量张量。