优化器调整策略

这篇具有很好参考价值的文章主要介绍了优化器调整策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

损失函数的作用是衡量模型输出与真实标签的差异。当我们有了这个loss之后,我们就可以通过反向传播机制得到参数的梯度,那么我们如何利用这个梯度进行更新参数使得模型的loss逐渐的降低呢?

优化器的作用

Pytorch的优化器: 管理更新模型中可学习参数的值, 使得模型输出更接近真实标签。

Optimizer的基本属性

优化器调整策略,深度学习,pytorch

optimizer = torch.optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay)
  • defaults: 优化器超参数,里面会存储一些学习率, momentum的值,衰减系数等
  • state: 参数的缓存, 如momentum的缓存(使用前几次梯度进行平均)
  • param_groups: 管理的参数组, 这是个列表,每一个元素是一个字典,在字典中有key,key里面的值才是我们真正的参数(这个很重要, 进行参数管理)
  • _step_count: 记录更新次数, 学习率调整中使用, 比如迭代100次之后更新学习率的时候,就得记录这里的100.

Optimizer的基本方法

优化器调整策略,深度学习,pytorch

  • zero_grad()梯度清零。清空所管理参数的梯度, 这里注意Pytorch有一个特性就是张量梯度不自动清零
  • step(): 执行一步更新
  • add_param_group(): 添加参数组, 我们知道优化器管理很多参数,这些参数是可以分组的,我们对不同组的参数可以设置不同的超参数, 比如模型finetune中,我们希望前面特征提取的那些层学习率小一些,而后面我们新加的层学习率大一些更新快一点,就可以用这个方法。
  • state_dict(): 获取优化器当前状态信息字典
  • load_state_dict(): 加载状态信息字典,这两个方法用于模型断点的一个续训练, 所以我们在模型训练的时候,一般多少个epoch之后就要保存当前的状态信息。
  • 优化器调整策略,深度学习,pytorch
    这里就是optimizer的__init__初始化部分了,可以看到上面介绍的那几个属性和它们的初始化方法,当然这里有个最重要的就是参数组的添加,我们看看是怎么添加的
    优化器调整策略,深度学习,pytorch
    这里重点说一下这个,我们还记得初始化SGD的时候传入了一个形参:optim.SGD(model.parameters(), lr=LR, momentum=0.9),这里的model.parameters() 就是神经网络的每层的参数, SGD在初始化的时候, 会把这些参数以参数组的方式再存起来, 上图中的params就是神经网络每一层的参数。

def __init__(self, params, defaults):这里的params其实就是实参model.parameters() 传入进来的
这就是优化器的初始化工作了, 初始化完了之后, 我们就可以进行梯度清空,然后更新梯度即可:
优化器调整策略,深度学习,pytorch

动量

Momentum:结合当前梯度与上一次更新信息, 用于当前更新。这么说可能有点抽象, 那么我们可以举个比较形象的例子:
优化器调整策略,深度学习,pytorch

指数加权平均在时间序列中经常用于求取平均值的一个方法,它的思想是这样,我们要求取当前时刻的平均值,距离当前时刻越近的那些参数值,它的参考性越大,所占的权重就越大,这个权重是随时间间隔的增大呈指数下降,所以叫做指数滑动平均。公式如下:

优化器调整策略,深度学习,pytorch
vt 是当前时刻的一个平均值,这个平均值有两项构成

  • 一项是当前时刻的参数值θt, 所占的权重是1 − β , 这个β是个参数。
  • 另一项是上一时刻的一个平均值, 权重是β。

假设我想求第100天温度的一个平均值,那么根据上面的公式:
优化器调整策略,深度学习,pytorch
我们发现,距离当前时刻越远的那些 θ 值,它的权重是越来越小的,因为 β 小于1, 所以间隔越远,小于1的这些数连乘,权重越来越小,而且是呈指数下降,因为这里是βi 。

Momentum梯度下降:
当前梯度的更新量会考虑到之前梯度, 上一时刻的梯度,前一时刻的梯度,这样一直往前,只不过越往前权重越小而已。

model.state_dict 和 optimizer.state_dict文章来源地址https://www.toymoban.com/news/detail-673365.html

到了这里,关于优化器调整策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 优化器调整策略

    损失函数的作用是衡量模型输出与真实标签的差异。当我们有了这个loss之后,我们就可以通过反向传播机制得到参数的梯度,那么我们如何 利用这个梯度进行更新参数使得模型的loss逐渐的降低 呢? 优化器的作用 Pytorch的优化器: 管理 并 更新 模型中可学习参数的值, 使得

    2024年02月11日
    浏览(22)
  • [深度学习实战]基于PyTorch的深度学习实战(上)[变量、求导、损失函数、优化器]

    PyTorch——开源的Python机器学习库   用了Matlab搭建神经网络才愈发感觉\\\" 人生苦短,我用PyTorch “是多么正确。毕竟 新的神经网络架构还是得自己一点点敲 ,现在是一点都笑不出来了, 指望Matlab提供的老框架和训练算法也做不出什么算法方法的突破,顶多就是在实现功能上

    2024年02月17日
    浏览(33)
  • 基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化

    我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时代已然来临。随着小

    2024年02月11日
    浏览(42)
  • PyTorch各种损失函数解析:深度学习模型优化的关键(2)

    目录 详解pytorch中各种Loss functions mse_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示  margin_ranking_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式  代码演示 multilabel_margin_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示 multilabel_soft_margin_

    2024年01月19日
    浏览(51)
  • PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化实践技术应用

    我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时代已然来临。随着小

    2024年02月10日
    浏览(51)
  • 【深度学习PyTorch入门】6.Optimizing Model Parameters 优化模型参数

    现在我们有了模型和数据,是时候通过优化数据上的参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型都会对输出进行猜测,计算其猜测中的误差( 损失 ),收集相对于其参数的导数的误差(如我们在上一节中看到的),并使用梯度下

    2024年01月24日
    浏览(51)
  • 60.网络训练中的超参调整策略—学习率调整2

    4、 inverse_time_decay 逆时衰减,这种方式和指数型类似。如图, 5、 cosine_decay

    2024年02月07日
    浏览(27)
  • 机器学习-学习率:从理论到实战,探索学习率的调整策略

    本文全面深入地探讨了机器学习和深度学习中的学习率概念,以及其在模型训练和优化中的关键作用。文章从学习率的基础理论出发,详细介绍了多种高级调整策略,并通过Python和PyTorch代码示例提供了实战经验。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构

    2024年02月05日
    浏览(34)
  • Redis内存碎片:深度解析与优化策略

    本文已收录至GitHub,推荐阅读 👉 Java随想录 微信公众号:Java随想录 原创不易,注重版权。转载请注明原作者和原文链接 目录 内存碎片如何产生的 内存分配器 怎么看是否有内存碎片 碎片率的意义 清理内存碎片 低于4.0-RC3版本的Redis 高于4.0-RC3版本的Redis 在我们探究和优化

    2024年02月08日
    浏览(29)
  • 深度学习超参数调整介绍

    深度学习模型的性能很大程度上取决于超参数的选择。超参数是指在训练过程中需要手动设置的参数,例如学习率、批大小、迭代次数、网络结构等等。选择合适的超参数可以提高模型的准确率和泛化能力。本教程将介绍一些常用的超参数和调参技巧,帮助您在深度学习项目

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包