- torch.optim.SGD
optimizer = torch.optim.SGD(params, lr=0.00001,
momentum=0.9, weight_decay=0.0005)
参数:
1. lr:学习率。学习率较小时,收敛到极值的速度较慢。学习率较大时,容易在搜索过程中发生震荡。 简单的梯度下降法:。:是对param的一阶导数。
2. momentum:冲量,可以使用累积效应。普通的梯度下降法仅仅只是使用当前对参数的导数,没有考虑到之前训练的情况。当使用冲量时,每次参数的更新从变成,其中v为上一次的更新值。momentum值介于[0, 1]。
这样的效果就是:
- 当本次梯度下降的方向与上次更新量v的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。
- 当本次梯度下降的方向与上次更新量v的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。
3. weight_decay:权重衰减,即L2正则化前面的参数, 权重衰减的使用既不是为了提高你所说的收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合。
- torch.optim.lr_scheduler.StepLR
lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
step_size=10,
gamma=0.1)
1.功能:实现对lr的更新,每过step_size个epoch更新lr,lr为原来的gamma倍大小
参考链接:(31条消息) python torch.optim.SGD_Florence_Janie的博客-CSDN博客