mindspore.nn.InverseDecayLR
- class mindspore.nn.InverseDecayLR(learning_rate, decay_rate, decay_steps, is_stair=False)[源代码]
基于逆时衰减函数计算学习率。
对于当前step,计算学习率的公式为:
\[decayed\_learning\_rate = learning\_rate / (1 + decay\_rate * p)\]其中,
\[p = \frac{current\_step}{decay\_steps}\]如果 is_stair 为True,则公式为:
\[p = floor(\frac{current\_step}{decay\_steps})\]- 参数:
learning_rate (float) - 学习率的初始值。
decay_rate (float) - 衰减率。
decay_steps (int) - 进行衰减的step数。
is_stair (bool) - 如果为True,则学习率每 decay_steps 次衰减一次。如果为False,则学习率每个step均衰减。默认值:
False
。
- 输入:
global_step (Tensor) - 当前step数,即current_step。
- 输出:
标量Tensor。当前step的学习率值,shape为 \(()\)。
- 异常:
TypeError - learning_rate 或 decay_rate 不是float。
TypeError - decay_steps 不是int或 is_stair 不是bool。
ValueError - decay_steps 小于1。
ValueError - learning_rate 或 decay_rate 小于或等于0。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor, nn >>> >>> learning_rate = 0.1 >>> decay_rate = 0.9 >>> decay_steps = 4 >>> global_step = Tensor(2, mindspore.int32) >>> inverse_decay_lr = nn.InverseDecayLR(learning_rate, decay_rate, decay_steps, True) >>> lr = inverse_decay_lr(global_step) >>> net = nn.Dense(2, 3) >>> optim = nn.SGD(net.trainable_params(), learning_rate=lr)