mindspore.experimental
实验性模块。
实验性优化器
接口名 |
概述 |
支持平台 |
用于参数更新的优化器基类。 |
|
|
Adaptive Moment Estimation (Adam)算法的实现。 |
|
|
Adaptive Moment Estimation Weight Decay(AdamW)算法的实现。 |
|
|
随机梯度下降算法。 |
|
LRScheduler类
本模块中的动态学习率都是LRScheduler的子类,此模块仅与mindspore.experimental.optim下的优化器配合使用,使用时将优化器实例传递给LRScheduler类。在训练过程中,LRScheduler子类通过调用 step 方法进行学习率的动态改变。
import mindspore
from mindspore import nn
from mindspore.experimental import optim
# Define the network structure of LeNet5. Refer to
# https://gitee.com/mindspore/docs/blob/r2.2/docs/mindspore/code/lenet.py
net = LeNet5()
loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
optimizer = optim.Adam(net.trainable_params(), lr=0.05)
scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=2, gamma=0.1)
def forward_fn(data, label):
logits = net(data)
loss = loss_fn(logits, label)
return loss, logits
grad_fn = mindspore.value_and_grad(forward_fn, None, optimizer.parameters, has_aux=True)
def train_step(data, label):
(loss, _), grads = grad_fn(data, label)
optimizer(grads)
return loss
for epoch in range(6):
# Create the dataset taking MNIST as an example. Refer to
# https://gitee.com/mindspore/docs/blob/r2.2/docs/mindspore/code/mnist.py
for data, label in create_dataset(need_download=False):
train_step(data, label)
scheduler.step()
接口名 |
概述 |
支持平台 |
动态学习率的基类。 |
|
|
保存多个学习率调度器的链表,调用 ChainedScheduler.step() 可以执行 schedulers 中每一个学习率调度器的 step() 函数。 |
|
|
将每个参数组的学习率按照衰减因子 factor 进行衰减,直到 last_epoch 达到 total_iters。 |
|
|
使用余弦退火对优化器参数组的学习率进行改变。 |
|
|
|
使用余弦退火热重启对优化器参数组的学习率进行改变。 |
|
根据循环学习率策略(CLR)设置每个参数组的学习率。 |
|
|
每个epoch呈指数衰减的学习率,即乘以 gamma 。 |
|
|
将每个参数组的学习率设定为初始学习率乘以指定的 lr_lambda 函数。 |
|
|
线性减小学习率乘法因子 ,并将每个参数组的学习率按照此乘法因子进行衰减,直到 last_epoch 数达到 total_iters。 |
|
|
将每个参数组当前的学习率按照传入的 lr_lambda 函数乘以指定的乘法因子。 |
|
|
当epoch/step达到 milestones 时,将每个参数组的学习率按照乘法因子 gamma 进行变化。 |
|
|
每个epoch,学习率通过多项式拟合来调整。 |
|
|
当指标停止改进时降低学习率。 |
|
|
SequentialLR 接收一个将被顺序调用的学习率调度器列表 schedulers,及指定的间隔列表 milestone,milestone 设定了每个epoch哪个调度器被调用。 |
|
|
每 step_size 个epoch按 gamma 衰减每个参数组的学习率。 |
|