逆时间衰减

[源代码]

InverseTimeDecay

tf_keras.optimizers.schedules.InverseTimeDecay(
    initial_learning_rate, decay_steps, decay_rate, staircase=False, name=None
)

使用反时间衰减计划的学习率调度程序。

在训练模型时,降低训练过程中的学习率通常很有用。此调度程序根据提供的手动学习率,将反衰减函数应用于优化器步骤。它需要一个 step 值来计算衰减后的学习率。您只需传递一个在每个训练步骤中递增的 TensorFlow 变量即可。

该调度是一个单参数可调用对象,当传入当前优化器步骤时,它会产生一个衰减的学习率。这对于在优化器函数不同调用之间更改学习率值非常有用。它的计算方式如下:

def decayed_learning_rate(step):
  return initial_learning_rate / (1 + decay_rate * step / decay_step)

或者,如果 staircaseTrue,则为:

def decayed_learning_rate(step):
  return initial_learning_rate / (1 + decay_rate * floor(step / decay_step))

您可以直接将此计划作为学习速率传递给 tf.keras.optimizers.Optimizer示例

使用 0.5 的衰减率拟合一个学习率为 1/t 的 TF-Keras 模型

...
initial_learning_rate = 0.1
decay_steps = 1.0
decay_rate = 0.5
learning_rate_fn = keras.optimizers.schedules.InverseTimeDecay(
  initial_learning_rate, decay_steps, decay_rate)

model.compile(optimizer=tf.keras.optimizers.SGD(
                  learning_rate=learning_rate_fn),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(data, labels, epochs=5)

返回

一个接受当前优化器步并输出衰减的学习速率(与 initial_learning_rate 类型相同的标量 Tensor)的 1 参数可调用学习速率计划。