mindspore.nn.piecewise_constant_lr

mindspore.nn.piecewise_constant_lr(milestone, learning_rates)[源代码]

获取分段常量学习率。每个step的学习率将会被存放在一个列表中。

通过给定的 milestonelearning_rates 计算学习率。设 milestone 的值为 \((M_1, M_2, ..., M_t, ..., M_N)\)learning_rates 的值为 \((x_1, x_2, ..., x_t, ..., x_N)\) 。N是 milestone 的长度。 设 \(y\) 为输出学习率,那么对于第 \(i\) 步,计算 \(y[i]\) 的公式为:

\[y[i] = x_t,\ for\ i \in [M_{t-1}, M_t)\]
参数:
  • milestone (Union[list[int], tuple[int]]) - milestone列表。当达到指定的step时,使用对应的 learning_rates。 此列表是一个单调递增的列表。列表中的元素必须大于0。

  • learning_rates (Union[list[float], tuple[float]]) - 学习率列表。

返回:

list[float]。列表的大小为 \(M_N\)

异常:
  • TypeError - milestonelearning_rates 既不是tuple也不是list。

  • ValueError - milestonelearning_rates 的长度不相等。

  • ValueError - milestone 中的不是单调递增的。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore.nn as nn
>>>
>>> milestone = [2, 5, 10]
>>> learning_rates = [0.1, 0.05, 0.01]
>>> lr = nn.piecewise_constant_lr(milestone, learning_rates)
>>> # learning_rates = 0.1  if step <= 2
>>> # learning_rates = 0.05  if 2 < step <= 5
>>> # learning_rates = 0.01  if 5 < step <= 10
>>> net = nn.Dense(2, 3)
>>> optim = nn.SGD(net.trainable_params(), learning_rate=lr)