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

CosineDecayRestarts

[源代码]

CosineDecayRestarts

tf_keras.optimizers.schedules.CosineDecayRestarts(
    initial_learning_rate, first_decay_steps, t_mul=2.0, m_mul=1.0, alpha=0.0, name=None
)

一个使用带重启的余弦衰减调度的 LearningRateSchedule。

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

在训练模型时,随着训练的进行降低学习率通常很有用。此调度将带重启的余弦衰减函数应用于优化器步骤,给定提供的初始学习率。它需要一个 step 值来计算衰减后的学习率。您只需传递一个 TensorFlow 变量,在每个训练步骤中递增该变量。

此调度是一个 1 参数可调用函数,在传递当前优化器步骤时生成衰减后的学习率。这对于更改优化器函数不同调用之间的学习率值很有用。

学习率乘数首先从 1 衰减到 alpha,持续 first_decay_steps 步。然后,执行热重启。每次新的热重启运行的时间是之前 t_mul 倍,并且初始学习率是之前 m_mul 倍作为新的学习率。

使用示例

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

您可以将此调度直接传递到 tf.keras.optimizers.Optimizer 作为学习率。学习率调度还可以使用 tf.keras.optimizers.schedules.serializetf.keras.optimizers.schedules.deserialize 进行序列化和反序列化。

返回值

一个 1 参数可调用学习率调度,它接收当前优化器步骤并输出衰减后的学习率,一个与 initial_learning_rate 类型相同的标量 Tensor