mindspore.experimental.optim.lr_scheduler.MultiStepLR

class mindspore.experimental.optim.lr_scheduler.MultiStepLR(optimizer, milestones, gamma=0.1, last_epoch=- 1)[源代码]

当epoch/step达到 milestones 时,将每个参数组的学习率按照乘法因子 gamma 进行变化。注意,这种衰减可能与外部对于学习率的改变同时发生。

警告

这是一个实验性的动态学习率接口,需要和 mindspore.experimental.optim 下的接口配合使用。

参数:
  • optimizer (mindspore.experimental.optim.Optimizer) - 优化器实例。

  • milestones (list) - 阈值列表,当 last_epoch 数达到阈值时将学习率乘以 gamma

  • gamma (float,可选) - 学习率的乘法因子。默认值: 0.1

  • last_epoch (int,可选) - 当前scheduler的 step() 方法的执行次数。默认值:-1

异常:
  • TypeError - milestones 不是列表。

  • TypeError - milestones 的元素不是int类型。

  • TypeError - gamma 不是float类型。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import nn
>>> from mindspore.experimental import optim
>>> net = nn.Dense(2, 3)
>>> optimizer = optim.Adam(net.trainable_params(), 0.05)
>>> # Assuming optimizer uses lr = 0.05 for all groups
>>> # lr = 0.05     if epoch < 2
>>> # lr = 0.005    if 2 <= epoch < 4
>>> # lr = 0.0005   if epoch >= 4
>>> scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[2,4], gamma=0.1)
>>> for i in range(6):
...     scheduler.step()
...     current_lr = scheduler.get_last_lr()
...     print(current_lr)
[Tensor(shape=[], dtype=Float32, value= 0.05)]
[Tensor(shape=[], dtype=Float32, value= 0.005)]
[Tensor(shape=[], dtype=Float32, value= 0.005)]
[Tensor(shape=[], dtype=Float32, value= 0.0005)]
[Tensor(shape=[], dtype=Float32, value= 0.0005)]
[Tensor(shape=[], dtype=Float32, value= 0.0005)]