mindspore.experimental.optim.lr_scheduler.LRScheduler
- class mindspore.experimental.optim.lr_scheduler.LRScheduler(optimizer, last_epoch=- 1)[源代码]
动态学习率的基类。
警告
这是一个实验性的动态学习率模块,需要和 mindspore.experimental.optim 下的接口配合使用。
- 参数:
optimizer (
mindspore.experimental.optim.Optimizer
) - 优化器实例。last_epoch (int,可选) - 当前scheduler的 step() 方法的执行次数。默认值:
-1
。
- 异常:
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)]