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 类型相同的标量张量。