1、梯度清零
# 反向传播[loss.backward()]之前要梯度清零
optimizer.zero_grad()
2、权值更新
optimizer.step()
3、动量(冲量):结合当前梯度与上一次更新信息,用于当前更新
4、优化器
## SGD:对参数敏感,但合适的参数会使效果更好
## Adam:每次迭代,学习率有一个确定的范围,使参数更新稳定
# rmsprop优化器是自适应学习率梯度下降法adagrad的改进
@随机梯度下降法
# params:管理的参数组
# lr:初始学习率
# momentum:动量系数beta(如0.9)
# weight_decay:L2正则化系数
# nesterov:是否采样NAG
optim.SGD(params,lr,momentum=0,dampening=0,weight_decay=0,nesterov=False)
@其他九种优化器
@建议用Adam
# RMSprop结合Momentum
torch.optim.Adam(model.parameters(), lr=lr)
# RMSprop
optim.RMSprop
# Adam增加学习率上限
optim.Adamax
# 稀疏版Adam
optim.SparseAdam