pytorch基础(十五)-----------优化器optimizer

pytorch的优化器的作用:管理并更新模型中可学习参数的值, 使得模型输出更接近真实标签(更新采用是梯度下降)

一、optimizer的基本参数

defaults:优化器超参数
state:参数的缓存,如momentum的缓存
param_groups:管理的参数组
_step_count:记录更新次数,学习率调整中使用(比如要在第n次迭代后降低学习率)

二、optimizer的基本使用方法

zero_grad():清空所有参数的梯度,因为张量不会自动清零会自动累加,在梯度求导之前需要进行梯度清零
step():进行一步更新
add_param_groups():添加一组参数
state_dict():获取优化器当前状态信息字典
load_state_dict():加载状态信息字典

三、lr学习率

学习率的作用就是控制更新的步伐,防止loss激增导致梯度爆炸,设置一个相对合适的学习率有利于模型的快速收敛
公式: w = w i − l r ∗ 梯 度 w = w_i - lr*梯度 w=wilr

四、动量

momentum(动量):结合当前梯度与上一次更新信息,用于当前更新,通俗的讲就是参考上一次的更新方向,利用相对较少迭代次数完成收敛
公式: 更 新 量 = m ∗ 上 一 次 的 更 新 量 + 梯 度 更新量 = m*上一次的更新量 + 梯度 =m+
w = w i − l r ∗ 更 新 量 w=w_i - lr*更新量 w=wilr

五、optim.SGD

optim.SGD是pytorch中最常用的优化器
主要参数:
params:管理的参数组
lr:初始学习率
momentum:动量系数
weight_decay:L2正则化系数
nesterov:是否采用NAG,布尔变量

六、常见的优化器

1、optim.SGD:随机梯度下降法,大部分都会使用SGD
2、optim.Adagrad:自适应学习率梯度下降法
3、optim.RMSprop:Adagrad的改进
4、optim.Adadelta:Adagrad的改进
5、optim.Adam:RMSprop结合Momentum
6、optim.Adamax:Adam增加学习率上限
7、optim.SparseAdam:稀疏版的Adam
8、optim.ASGD:随机平均梯度下降
9、optim.Rprop:弹性反向传播,通常是在所有样本一起计算梯度时使用,但是现在一般是分批量计算
10、optim.LBFGS:BFGS的改进

你可能感兴趣的:(计算机视觉,pytorch,深度学习)