栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch优化器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch优化器

Pytorch 一共有11个优化器 其中比较常用的主要有4种 SGD、Momentum、RMSProp、Adam。

SGD

实现随机梯度下降。

CLASS torch.optim.SGD(params, lr required parameter , momentum 0, dampening 0, 
weight_decay 0, nesterov False)
参数 params (iterable) –待优化参数的iterable或者是定义了参数组的dictlr (float) – 学习率momentum (float, 可选) – 动量因子 默认 0 通常设置为0.9 0.8 weight_decay (float, 可选) – 权重衰减 L2惩罚 默认 0 dampening (float, 可选) – 动量的抑制因子 默认 0 nesterov (bool, 可选) – 使用Nesterov动量 默认 False 例子
 optimizer torch.optim.SGD(model.parameters(), lr 0.1, momentum 0.9)
 optimizer.zero_grad()
 loss_fn(model(input), target).backward()
 optimizer.step()

优点 ①使用mini-batch的时候 可以收敛得很快

缺点 ①在随机选择梯度的同时会引入噪声 使得权值更新的方向不一定正确
②不能解决局部最优解的问题

Momentum

使用动量的随机梯度下降法。更新的时候在一定程度上保留之前更新的方向 用法为在torch.optim.SGD的momentum参数不为零。

优点 加快收敛速度 有一定摆脱局部最优的能力 一定程度上缓解了没有动量的时候的问题

缺点 仍然继承了一部分SGD的缺点

RMSProp

实现均方根传递。
思想 梯度震动较大的项 在下降时 减小其下降速度 对于震动幅度小的项 在下降时 加速其下降速度

CLASS torch.optim.RMSprop(params, lr 0.01, alpha 0.99, eps 1e-08, weight_decay 0, momentum 0,
 centered False)
参数 params (iterable) –待优化参数的iterable或者是定义了参数组的dictlr (float) – 学习率momentum (float, 可选) – 动量因子 默认 0 通常设置为0.9 0.8 alpha (float, 可选) – 平滑常数 默认 0.99 为了增加数值计算的稳定性而加到分母里的项 默认 1e-8 centered (bool, 可选) –如果为True 计算中心化的RMSProp 并且用它的方差预测值对梯度进行归一化weight_decay (float, 可选) – 权重衰减 L2惩罚 默认 0

优点 可缓解Adagrad学习率下降较快的问题 并且引入均方根 可以减少摆动 适合处理非平稳目标 对于RNN效果很好

缺点 依然依赖于全局学习率

Adam

将Momentum算法和RMSProp算法结合起来使用的一种算法 既用动量来累积梯度 又使得收敛速度更快同时使得波动的幅度更小 并进行了偏差修正。最常用的优化器。

CLASS torch.optim.Adam(params, lr 0.001, betas (0.9, 0.999), eps 1e-08, weight_decay 0,
 amsgrad False)
参数 params (iterable) –待优化参数的iterable或者是定义了参数组的dictlr (float) – 学习率betas (Tuple[float, float], 可选) – 动量因子 默认 0 通常设置为0.9 0.8 eps (float, 可选) – 为了增加数值计算的稳定性而加到分母里的项 默认 1e-8 weight_decay (float, 可选) – 用于计算梯度以及梯度平方的运行平均值的系数 默认 0.9 0.999 amsgrad (boolean, 可选) – 是否使用AMSGrad变量 (默认: False)

优点

1、对目标函数没有平稳要求 即loss function可以随着时间变化

2、参数的更新不受梯度的伸缩变换影响

3、更新步长和梯度大小无关 只和alpha、beta_1、beta_2有关系。并且由它们决定步长的理论上限

4、更新的步长能够被限制在大致的范围内 初始学习率

5、能较好的处理噪音样本 能天然地实现步长退火过程 自动调整学习率

6、很适合应用于大规模的数据及参数的场景、不稳定目标函数、梯度稀疏或梯度存在很大噪声的问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号