Keras 3 API 文档 / 优化器 / 学习率调度器 API / 余弦退火重启

余弦退火重启

[source]

CosineDecayRestarts class

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: Stochastic Gradient Descent with Warm Restarts.

在训练模型时,随着训练的进行降低学习率通常是有用的.该调度器应用带有重启的余弦衰减函数到优化器步骤,给定一个提供的初始学习率. 它需要一个step值来计算衰减的学习率.你可以直接传递一个在后端变量,在每次训练步骤中递增.

该调度器是一个1-arg可调用对象,当传递当前优化器步骤时,生成一个衰减的学习率.这对于在不同优化器函数调用中改变学习率值很有用.

学习率乘数首先在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".

返回: 一个1-arg可调用学习率调度器,接受当前优化器步骤并输出衰减的学习率,一个与initial_learning_rate类型相同的标量张量.