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

分段常数衰减

[源代码]

PiecewiseConstantDecay

keras.optimizers.schedules.PiecewiseConstantDecay(
    boundaries, values, name="PiecewiseConstant"
)

一个使用分段常数衰减调度的 LearningRateSchedule

该函数返回一个 1 参数的可调用对象,当传入当前优化器步数时,计算分段常数。这对于在不同优化器函数调用中更改学习率值很有用。

示例

在最初的 100001 步中使用 1.0 的学习率,在接下来的 10000 步中使用 0.5 的学习率,并在任何额外的步骤中使用 0.1 的学习率。

step = ops.array(0)
boundaries = [100000, 110000]
values = [1.0, 0.5, 0.1]
learning_rate_fn = keras.optimizers.schedules.PiecewiseConstantDecay(
    boundaries, values)

# Later, whenever we perform an optimization step, we pass in the step.
learning_rate = learning_rate_fn(step)

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

参数

  • boundaries: 一个 Python 数字列表,其中条目严格递增,并且所有元素的类型与优化器步数相同。
  • values: 一个 Python 数字列表,指定由 boundaries 定义的间隔的值。它应该比 boundaries 多一个元素,并且所有元素的类型应该相同。
  • name: 一个字符串。操作的可选名称。默认为 "PiecewiseConstant"

返回

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

接受 step 的 1 参数函数的输出为,当 step <= boundaries[0] 时为 values[0],当 step > boundaries[0]step <= boundaries[1] 时为 values[1],...,当 step > boundaries[-1] 时为 values[-1]

引发

  • ValueError: 如果 boundariesvalues 列表中的元素数量不匹配。