mindspore.nn.ExponentialDecayLR

class mindspore.nn.ExponentialDecayLR(learning_rate, decay_rate, decay_steps, is_stair=False)[源代码]

基于指数衰减函数计算学习率。

对于当前step,计算学习率的公式为:

\[decayed\_learning\_rate = learning\_rate * 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

输入:
  • global_step (Tensor) - 当前step数,即上述公式中的 \(current\_step\)

输出:

标量Tensor。当前step的学习率值,shape为 \(()\)

异常:
  • TypeError - learning_ratedecay_rate 不是float。

  • TypeError - decay_steps 不是int或 is_stair 不是bool。

  • ValueError - decay_steps 小于1。

  • ValueError - learning_ratedecay_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)
>>> exponential_decay_lr = nn.ExponentialDecayLR(learning_rate, decay_rate, decay_steps)
>>> lr = exponential_decay_lr(global_step)
>>> net = nn.Dense(2, 3)
>>> optim = nn.SGD(net.trainable_params(), learning_rate=lr)