【chapter30】【PyTorch】[动量与学习率衰减】

这篇具有很好参考价值的文章主要介绍了【chapter30】【PyTorch】[动量与学习率衰减】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

    SGD的不足

【chapter30】【PyTorch】[动量与学习率衰减】

 ①呈“之”字型,迂回前进,损失函数值在一些维度的改变得快(更新速度快),在一些维度改变得慢(速度慢)- 在高维空间更加普遍

②容易陷入局部极小值和鞍点

 ③对于凸优化而言,SGD不会收敛,只会在最优点附近跳来跳去 

       这里面主要讲解一下梯度更新的两个技巧,在训练的时候

应用比较多.

目录:

  1.        momentum
  2.        learn rate decay

一  momentum

【chapter30】【PyTorch】[动量与学习率衰减】

 

     正常的梯度更新公式:

     【chapter30】【PyTorch】[动量与学习率衰减】

    

     通过动量更新梯度公式:

     【chapter30】【PyTorch】[动量与学习率衰减】

    【chapter30】【PyTorch】[动量与学习率衰减】

   当前的梯度更新方向 由当前的梯度和历史梯度叠加组成的。

【chapter30】【PyTorch】[动量与学习率衰减】

 

Momentum算法的优点:

当某个参数在最近一段时间内的梯度方向不一致时,其真实的参数更新幅度变小;

相反,当在最近一段时间内的梯度方向都一致时,其真实的参数更新幅度变大,起到加速作用。

一般而言,在迭代初期,梯度方向都比较一致,动量法会起到加速作用,可以更快地到达最优点。在迭代后期,梯度方向会取决不一致,在收敛值附近震荡,动量法会起到减速作用,增加稳定性。从某种角度来说,当前梯度叠加上部分的上次梯度,一定程度上可以近似看作二阶梯度


PyTorch  里面的API 函数

torch.optim.SGD(net.parameters(), lr=lr, momentum=0.9,weight_decay=wd)

对于ADM 这类优化器,是内部自带的,不需要手动设置。


二    learn rate decay

       学习率衰减

【chapter30】【PyTorch】[动量与学习率衰减】

   现有问题:

    1 学习率太小,长时间无法到达最优点

     2 学习率太大,参数激烈震荡,无法收敛

   默认的学习率是1e-3,1e-4

解决方案:

 learn rate decay

  每训练一些batch 后,学习率逐渐降低,如下图

【chapter30】【PyTorch】[动量与学习率衰减】

 如下图,随着训练的batch 增加,学习率降低,降低了

参数震荡,能够快速的朝一个方向收敛

 【chapter30】【PyTorch】[动量与学习率衰减】

 

PyTorch方案1

   通过观测loss 是否减少,来动态调整学习率

  • torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode=‘min’, factor=0.1, patience=10, verbose=False, threshold=0.0001, threshold_mode=‘rel’, cooldown=0, min_lr=0, eps=1e-08)

  • 【chapter30】【PyTorch】[动量与学习率衰减】

     【chapter30】【PyTorch】[动量与学习率衰减】

     

PyTorch方案2:

如下图,每训练30次

【chapter30】【PyTorch】[动量与学习率衰减】

 

参考:

课时59 动量与学习率衰减_哔哩哔哩_bilibili

https://www.cnblogs.com/shiliuxinya/p/12261966.html

pytorch 中ReduceLROnPlateau 的使用_pytorch的reducelronplateau_zx66zx的博客-CSDN博客

【pytorch 优化器】ReduceLROnPlateau详解_reducelronplateau参数_devil_son1234的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-428734.html

到了这里,关于【chapter30】【PyTorch】[动量与学习率衰减】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【PyTorch】权重衰减

    通过对模型过拟合的思考,人们希望能通过某种工具 调整模型复杂度 ,使其达到一个合适的平衡位置。 权重衰减(又称 L 2 L_2 L 2 ​ 正则化)通过为损失函数 添加惩罚项 ,用来惩罚权重的 L 2 L_2 L 2 ​ 范数,从而限制模型参数值,促使模型参数更加稀疏或更加集中,进而调

    2024年02月04日
    浏览(34)
  • PyTorch深度学习实战(30)——Deepfakes

    Deepfakes 是一种利用深度学习技术生成伪造视频和图像的技术。它通过将一个人的脸部特征或动作应用于另一个人的图像或视频中,以产生逼真的虚假内容。 Deepfakes 技术在短时间内取得了显著的进展,并引起了广泛的关注和担忧,为了能够更好的采取相应的检测和防御措施,

    2024年02月01日
    浏览(30)
  • 【深度学习笔记】动量梯度下降法

    本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记,视频由网易云课堂与 deeplearning.ai 联合出品,主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习,视频的链接如下: 神经网络和深度学习 - 网易云课堂 也欢迎对神经网

    2024年02月15日
    浏览(32)
  • 第4周:Pytorch——综合应用和实战项目 Day 28-30: 学习资源和社区参与

    第4周:综合应用和实战项目 Day 28-30: 学习资源和社区参与 在这个阶段,我们将探索更多的学习资源并鼓励参与PyTorch和TensorFlow的社区,以进一步提升技术和融入开发者社群。 学习资源: 论文:阅读最新的机器学习和深度学习论文,了解领域的最新进展。推荐资源包括arXiv、

    2024年01月20日
    浏览(41)
  • [PyTorch][chapter 51][PyTorch GPU]

    二 查看具体使用情况

    2024年02月12日
    浏览(22)
  • [PyTorch][chapter 44][RNN]

    简介             循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) [1]  。             对循环神经网络的研究始于二十世纪80-

    2024年02月15日
    浏览(22)
  • [PyTorch][chapter 54][GAN- 1]

    前言:         GAN playground: Experiment with Generative Adversarial Networks in your browser          生成对抗网络(Generative Adversarial Nets,GAN)是一种基于对抗学习的深度生成模型,最早由Ian Goodfellow于2014年在《Generative Adversarial Nets》中提出. 生成对抗网络(Generative Adversarial Network)由一

    2024年02月09日
    浏览(28)
  • [PyTorch][chapter 46][LSTM -1]

    前言:            长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的。 目录:      背景简介      LSTM Cell      LSTM 反向传播算法      为什么能解决梯度消失       LSTM 模

    2024年02月13日
    浏览(24)
  • [PyTorch][chapter 47][LSTM -2]

    目录:    双向LSTM    torch.nn.embedding()实现词嵌入层    nn.LSTM    nn.LSTMCell     LSTM 情感分类例子 一  双向LSTM       1 原理                    正向输出的结果是        反向输出的结果是        nn.LSTM模块他在最后会将正向和反向的结果进行拼接concat.得到          

    2024年02月13日
    浏览(25)
  • [PyTorch][chapter 39][nn.Module]

    前言:           pytorch.nn是专门为神经网络设计的模块化接口. nn构建于autograd之上,可以用来定义和运行神经网络.是所有类的父类.          目录:     基本结构     常用模块    container(容器)     CPU,GPU 部署     train-test 环境切换     flatten     MyLinear      一 基本结

    2024年02月08日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包