Pytorch中有四种常用的优化器,SGD、Momentum、RMSProp、Adam,那我们该如何选择呢。

1.SGD

参数介绍:

--lr(float) :学习率

--momentum(float,可选):动量因子(默认为0)

--weight_decay(float,可选):权重衰减(L2惩罚,默认为0)

--dampening(float,可选):动量的抑制因子(默认为0)

--nesterov(bool,可选):使用Nesterov动量(默认为false)

示例代码:

optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

优缺点:

优点:使用mini-batch的时候,模型可以收敛的更快

缺点:在随机选择梯度的时候会引入噪声,使得权重更新的方向不一定正确。

不能解决局部最优解的问题。

推荐指数: 0星

2.RMSProp(Root Mean Square Prop,均方根传递)

RMSProp是RProp的改进版,同时也是Adagard的改进版,它的思想上:在梯度震动较大的项,在下降时,减小其下降速度;对于震动幅度较小的项,在下降时,加速其下降速度。同时RMSProp采用均方根作为分母,可以缓解Adagard学习率下降过快的问题。

其对于RNN具有很好的效果。

参数介绍:

--lr(float) :学习率

--momentum(float,可选):动量因子(默认为0)

--alpha(float,可选):平滑常数(默认:0.99)

--eps (float, 可选):为了增加数值计算的稳定性而加到分母里的项(默认:1e-8)

--centered (bool, 可选):如果为True,计算中心化的RMSProp,并且用它的方差预测值对梯度进行归一化

--weight_decay(float,可选):权重衰减(L2惩罚,默认为0)

示例代码:

optimizer = torch.optim.RMSprop(model.parameters(), lr=0.01)

优缺点:

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

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

推荐程度:四星半 RMSProp算法已被证明是一种有效且实用的深度神经网络优化算法。目前它是深度学习从业者经常采用的优化算法之一。

3.Adam(AMSGrad)

它是一种将Momentum算法和RMSProp算法结合起来而使用的一种算法,既使用动量来累计梯度,又使得收敛速度更快同时使得波动的幅度更小,并进行偏差修正。

参数介绍:

--lr(float) :学习率

--betas (Tuple[float,float], 可选):用于计算梯度以及梯度平方的运行平均值的系数(默认:0.9,0.999)

--eps (float, 可选):为了增加数值计算的稳定性而加到分母里的项(默认:1e-8)

--weight_decay(float,可选):权重衰减(L2惩罚,默认为0)

示例代码:

optimizer = torch.optim.Adam(model.parameters(),lr=0.01)

优点:

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

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

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

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

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

推荐程度:五星。 非常推荐,基本上是目前最常用的优化方法。

四种常用优化器Loss函数比较图

对于重要参数学习率,这里推荐设置1e-3或者1e-2.

Pytorch的优化器推荐相关推荐

  1. [源码解析] PyTorch分布式优化器(1)----基石篇

    [源码解析] PyTorch分布式优化器(1)----基石篇 文章目录 [源码解析] PyTorch分布式优化器(1)----基石篇 0x00 摘要 0x01 从问题出发 1.1 示例 1.2 问题点 ...

  2. 简单粗暴PyTorch之优化器

    优化器 一.优化器属性与方法 二.pytorch中的优化器 一.优化器属性与方法 pytorch的优化器: 管理并更新模型中可学习参数的值,使得模型输出更接近 真实标签 导数:函数在指定坐标轴上的变化 ...

  3. 【Pytorch的优化器总结归纳】

    文章目录 1.SGD(随机梯度下降) 2.ASGD(随机平均梯度下降) 3.AdaGrad算法 4.AdaDelta算法 5.Rprop(弹性反向传播) 6.RMSProp(Root Mean Squ ...

  4. Pytorch的优化器总结归纳

    pytorch的几类优化器 笔记总结自: https://pytorch.org/docs/stable/optim.html 在博客https://www.jianshu.com/p/39dac1e ...

  5. Pytorch:优化器、损失函数与深度神经网络框架

    Pytorch: 优化器.损失函数与深度神经网络框架 Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, Schoo ...

  6. PyTorch(13)---优化器_随机梯度下降法

    优化器:随机梯度下降法 反向传播-梯度下降 import torch import torchvision from torch import nn from torch.nn import Conv ...

  7. pytorch中优化器optimizer.param_groups

    optimizer.param_groups: 是长度为2的list,其中的元素是2个字典: optimizer.param_groups[0]: 长度为6的字典,包括['amsgrad', 'par ...

  8. PyTorch的损失函数和优化器

    文章目录 PyTorch的损失函数和优化器 损失函数 优化器 总结 PyTorch的损失函数和优化器 损失函数 一般来说,PyTorch的损失函数有两种形式:函数形式和模块形式.前者调用的是torch ...

  9. pytorch adagrad_【学习笔记】Pytorch深度学习—优化器(二)

    点击文末 阅读原文,体验感更好哦! 前面学习过了Pytorch中优化器optimizer的基本属性和方法,优化器optimizer的主要功能是 "管理模型中的可学习参数,并利用参数的梯度gr ...

最新文章

  1. 7 个漂亮的 JavaScript 的时间轴组件 [转]
  2. 一个计算crc校验的小工具的编写。
  3. SegmentFault D-Day 「杭州场: 前端移动端」回顾文章
  4. 软件测试之Selenium IDE
  5. 感知机中任一点到超平面的距离的公式推导
  6. 平均年薪60.8万,腾讯阿里最近都在抢这类人才!
  7. CodeForces - 451A - Game With Sticks(博弈论)
  8. python 新闻摘要_每日新闻摘要:运营商承诺他们不再出售您的位置…
  9. Guns 编辑功能实现_入门试炼06
  10. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解
  11. opengl入门6。1
  12. 523. 连续的子数组和
  13. FineUIPro控件库深度解析
  14. [翻译]CSS变量让你轻松制作响应式网页
  15. Nginx 配置生成自签证书
  16. 如何将pdf转换成word文档,文件格式转换器选择
  17. mock模拟接口测试_Python接口测试之mock(上)
  18. 计算机的神奇小游戏,电脑课我们常玩的13个小游戏
  19. Godot Shader特效:用SCREE_TEXTURE实现简单的屏幕滤镜
  20. 【前端优化】在线图片压缩有这4个网站就够了(免费又好用)

热门文章

  1. 第二十七课.深度强化学习(二)
  2. Anaconda入门使用指南(一)
  3. USEARCH — 最简单易学的扩增子分析流程(中国总代理)
  4. NBT:设计稳定无毒的抗菌肽杀灭耐药菌
  5. 9月,最值得看的30篇肠道健康文献!
  6. pandas使用set_table_attributes函数、display_html函数等在jupyter notebook中并排显示两个dataframe的内容(side by side)
  7. R语言ggplot2可视化自定义图例标签间距实战:自定义图例标签间距、自定义图例与图像之间的间距
  8. R语言data.table导入数据实战:data.table使用字符向量创建新的数据列
  9. 机器学习数据清洗之异常数据处理、标准差法、MAD法、箱图法、图像对比法、异常值处理准则
  10. permutation_importance是什么?背后的思想又是什么?是如何使用permutation_importance计算特征重要度的?