Keras 3 API 文档 / 优化器 / 学习率调度 API / 分段常数衰减

分段常数衰减

[来源]

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 <= boundaries[0]时,接收step的 1 参数函数的输出为values[0];当step > boundaries[0]step <= boundaries[1]时,输出为values[1];以此类推,当step > boundaries[-1]时,输出为values[-1]

引发异常

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