mindspore.nn.piecewise_constant_lr
- mindspore.nn.piecewise_constant_lr(milestone, learning_rates)[源代码]
获取分段常量学习率。每个step的学习率将会被存放在一个列表中。
通过给定的 milestone 和 learning_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 - milestone 或 learning_rates 既不是tuple也不是list。
ValueError - milestone 和 learning_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)