mindspore.experimental.optim.lr_scheduler.LRScheduler

class mindspore.experimental.optim.lr_scheduler.LRScheduler(optimizer, last_epoch=- 1)[源代码]

动态学习率的基类。

警告

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

参数:
异常:
  • TypeError - optimizer 不是优化器。

  • KeyError - last_epoch 不是 -1 且 'initial_lr' 不在参数组内。

  • ValueError - last_epoch 不是int类型。

  • ValueError - last_epoch 小于-1。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import nn
>>> from mindspore.experimental import optim
>>>
>>> class ConstantLR(optim.lr_scheduler.LRScheduler):
...     def __init__(self, optimizer, factor=0.5, total_iters=3, last_epoch=-1):
...         self.factor = factor
...         self.total_iters = total_iters
...         super(ConstantLR, self).__init__(optimizer, last_epoch)
...
...     def get_lr(self):
...         if self.last_epoch == 0:
...             return [lr * self.factor for lr in self._last_lr]
...         if self.last_epoch != self.total_iters:
...             return [lr * 1. for lr in self._last_lr]
...         return [lr / self.factor for lr in self._last_lr]
>>>
>>> net = nn.Dense(8, 2)
>>> optimizer = optim.SGD(net.trainable_params(), 0.01)
>>> scheduler = ConstantLR(optimizer)
>>> for i in range(4):
...     scheduler.step()
...     current_lr = scheduler.get_last_lr()
...     print(current_lr)
[Tensor(shape=[], dtype=Float32, value= 0.005)]
[Tensor(shape=[], dtype=Float32, value= 0.005)]
[Tensor(shape=[], dtype=Float32, value= 0.01)]
[Tensor(shape=[], dtype=Float32, value= 0.01)]
get_last_lr()[源代码]

返回当前使用的学习率。

step(epoch=None)[源代码]

按照定义的计算逻辑计算并修改学习率。

参数:
  • epoch (int,可选) - epoch数。默认值: None