当前位置: 首页 > news >正文

asp 网站管理系统安徽建设工程信息网官网优秀中项网

asp 网站管理系统,安徽建设工程信息网官网优秀中项网,网站开发专业成功人士,网站开发 进度表1.介绍 在深度学习中#xff0c;自动求导是一项核心技术#xff0c;它使得我们能够方便地计算梯度并优化模型参数。PyTorch 提供了一个强大的自动求导模块(Autograd)#xff0c;它可以自动计算张量的导数得出梯度信息#xff0c;同时也支持高阶导数计算。 1.1 概念词 在学…1.介绍 在深度学习中自动求导是一项核心技术它使得我们能够方便地计算梯度并优化模型参数。PyTorch 提供了一个强大的自动求导模块(Autograd)它可以自动计算张量的导数得出梯度信息同时也支持高阶导数计算。 1.1 概念词 在学习PyTorch的过程中经常会看到这些词汇: 自动求导、梯度计算、前向传播、反向传播、动态计算图等下面是一些简单介绍: 自动求导PyTorch 的 Autograd 模块负责自动计算张量的梯度。当我们在 PyTorch 中定义了一个张量并设置了 requires_gradTrue 时PyTorch 会自动跟踪对该张量的所有操作并构建一个动态计算图。梯度计算梯度是函数在某一点上的导数表示函数在该点的变化率。在深度学习中梯度可以告诉我们在参数空间中哪些方向可以使得损失函数值减小最快。PyTorch 的 Autograd 模块通过构建计算图并使用反向传播算法自动计算张量的梯度。前向传播前向传播是指数据从输入层经过隐藏层传递到输出层的过程。在前向传播过程中每一层的输入经过权重和偏置的线性变换然后经过激活函数计算得到输出。反向传播反向传播是训练神经网络时使用的一种优化算法。它利用链式法则计算损失函数对模型参数的梯度从而实现模型参数的更新。在 PyTorch 中反向传播算法通过计算动态计算图的梯度来实现。动态计算图动态计算图是 PyTorch 中的一个重要特性它与静态计算图不同可以根据代码的执行情况动态构建计算图。动态计算图使得 PyTorch更加灵活可以处理各种动态的模型结构和数据流动。 他们之间的依赖关系 自动求导依赖于动态计算图因为动态计算图记录了张量之间的依赖关系从而使得 PyTorch 能够跟踪对张量的操作梯度计算依赖于自动求导和动态计算图因为梯度是通过自动求导和反向传播算法在动态计算图中计算得到的。前向传播和反向传播是损失函数优化的过程依赖于梯度计算和动态计算图。 2.导数 2.1 导数定义 在学习自动求导模块(Autograd)之前我们先简单回忆下高数中是如何定义导数的 2.2 导数作用 从导数的定义上来看不但理解起来比较费劲也很难看出导数在深度学习中有什么作用针对大部分场景的求导本质上都是求某个函数在某一点的切线。如下图是一个经典的切线模型,求的是 x 0 x_0 x0​处的导数: 看到这里可能还是没有想明白导数在深度学习中到底有什么作用在学习AI时经常会听到道士下山的故事故事里最后抛出的问题是: 怎么样让道士快速下山? 最快的办法就是顺着坡度最陡峭的地方走下去。那么怎么样找到最陡峭的地方呢 答案就是: 求导 上面说了求导的本质就是某点的切线切线则有斜率斜率越大的地方也就是越陡峭的点然后沿着相反的方向进行这也是梯度下降算法的原理。 3.梯度计算 注: 求导后得到的结果在深度学习中被称为梯度。 只有体会到复杂操作后的过程才能真实感受到工具的便捷性下面分别使用两种方式对函数 f ( x ) 3 x 2 2 x 1 f(x) 3x^22x1 f(x)3x22x1进行求导下图是列举一些常见函数对应的的求导函数公式方便后续手动计算时进行参考 更多常见函数的求导函数示例https://baike.baidu.com/item/导数/579188#3 3.1 手动计算 3.2 自动计算 import torch# 定义函数 def myfunction(x):return 3 * x ** 2 2 * x 1if __name__ __main__:# 定义变量并为其指定需要计算梯度t torch.tensor(2.0, requires_gradTrue)# 计算函数的值result myfunction(t)# 反向传播进行梯度计算result.backward()# 打印梯度print(打印梯度:, t.grad)# 打印梯度:tensor(14.)调用 backward() 方法时PyTorch会从张量的节点开始沿着计算图反向传播计算所有叶子节点相对于该张量的梯度。需要特别注意的是: 在每次调用 backward() 方法之后PyTorch 会自动清空计算图中的梯度信息。因此多次调用 backward() 方法会尝试在没有梯度信息的情况下进行反向传播从而导致运行时错误。 注: 从上面示例可以看出Autograd便捷性如果没有自动求导包Autograd的存在想想当函数变的复杂时,该怎么去计算某点的导数… 4.梯度累积 在 PyTorch 中反向传播函数 backward() 只能在一个张量或者一系列张量对应的图中被调用一次因为它会计算当前图中所有叶子节点的梯度。如果多次调用backward()会发生梯度累积导致数据不准确 4.1 错误示例 修改【3.2】代码示例: def doBackward(var: torch.tensor):# 计算函数的值result myfunction(var)# 反向传播进行梯度计算result.backward()print(打印梯度:, var.grad)if __name__ __main__:# 定义变量并为其指定需要计算梯度t torch.tensor(2.0, requires_gradTrue)# 请求多次for i in range(3):doBackward(t) 打印梯度: tensor(14.) 打印梯度: tensor(28.) 打印梯度: tensor(42.)通过上面运行输出发现自动求导的结果(梯度)进行了累积为了避免这种问题的出现通常需要我们在模型训练过程中手动清除之前计算的梯度。 4.2 清除梯度 通常情况下在每次进行反向传播之前需要调用 optimizer.zero_grad() 来清空之前计算的梯度。这样可以避免梯度累积确保每次反向传播都是基于当前的梯度计算。修改上面示例中的部分代码 def doBackward(var: torch.tensor):# 计算函数的值result myfunction(var)# ------- 假设有个优化器optimizer -------# 在每次迭代之前清零梯度optimizer.zero_grad()# 反向传播进行梯度计算result.backward()print(计算结果:, var.grad)4.3 累积影响 为什么梯度不能累积呢根据资料查询可以发现梯度累积可能会导致几个问题尤其是在训练深度神经网络时 减慢收敛速度梯度累积会导致每个参数的梯度在多次迭代中被累积起来。如果梯度一直累积而不进行更新可能会导致收敛速度减慢因为参数更新的幅度变小了。数值不稳定性梯度累积可能导致数值不稳定性尤其是在使用较大的学习率时。由于梯度的累积更新的幅度可能会变得非常大导致数值溢出或梯度爆炸的问题。内存占用梯度累积会增加内存的占用因为需要保存多次迭代中的梯度信息。在内存受限的情况下梯度累积可能导致内存不足的问题从而无法完成训练。局部最优解陷阱梯度累积可能会导致模型陷入局部最优解而无法跳出。由于梯度的累积模型可能会固定在一个局部最优解附近无法继续搜索更好的解决方案。 因此在训练深度神经网络时通常建议避免梯度累积确保每次迭代都使用当前的梯度进行更新以保证训练的稳定性和收敛速度。 5.局部禁用 什么场景用: 当需要在训练过程中固定某些参数或者临时关闭梯度计算时;怎么使用: 可以使用 torch.no_grad() 上下文管理器或者在张量上调用 .detach() 方法来实现局部禁用梯度计算。 下面列举一些情况下可能需要使用局部禁用梯度计算的具体示例: 5.1 固定模型参数禁用 在迁移学习或者模型微调中通常会冻结预训练模型的一部分参数只更新其中的部分参数。为了实现这一目的可以使用 torch.no_grad() 上下文管理器来禁用梯度计算。 # 示例冻结预训练模型的一部分参数 with torch.no_grad():for param in model.parameters():param.requires_grad False# 只对新添加的层的参数进行训练optimizer torch.optim.SGD(model.fc.parameters(), lr0.001)5.2 模型推断时禁用 在模型推断时不需要计算梯度因此可以使用 torch.no_grad() 上下文管理器来禁用梯度计算以提高推断速度和减少内存占用。 # 示例在前向推断时禁用梯度计算 with torch.no_grad():output model(input)5.3 计算某些指标时禁用 在计算模型的性能指标如准确率、损失值等时不需要计算梯度因此可以使用 torch.no_grad() 上下文管理器来禁用梯度计算以提高计算效率。 # 示例在计算指标时禁用梯度计算 with torch.no_grad():loss criterion(output, target)通过局部禁用梯度计算可以灵活地控制梯度计算的范围提高训练和推断的效率并且可以避免不必要的梯度计算和内存消耗。 本文由mdnice多平台发布
http://www.w-s-a.com/news/956435/

相关文章:

  • 长春服务好的网站建设百度推广话术全流程
  • 做的网站浏览的越多越挣钱基于jsp的网站开发开题报告
  • 好的做问卷调查的网站好网站调用时间
  • 广州微网站建设平台阿里云国外服务器
  • 如何把做好的网站代码变成网页wordpress shortcode土豆 视频
  • 网站改版竞品分析怎么做中山网站建设文化价格
  • 玉林市网站开发公司电话做网站空间 阿里云
  • 南充做网站略奥网络免费的正能量视频素材网站
  • 电子商务网站开发的基本原则汕头网站制作流程
  • 网站访问量突然增加合肥宣传片制作公司六维时空
  • 建设购物网站流程图怎么找网站
  • 阿里云部署多个网站制作小程序网站源码
  • 博罗东莞网站建设网站免费源代码
  • 网站规划与设计范文桂平网站建设
  • 网站备案号密码wordpress邮箱发送信息错误
  • 模板的网站都有哪些关键词搜索工具爱站网
  • 鲜花网站建设的利息分析企业网站建设方案书
  • 深圳网站平台石家庄做商城网站的公司
  • 微网站营销是什么私人订制网站有哪些
  • 浙江建设工程合同备案网站新手做网站教程
  • 网站优化关键词排名自己怎么做wordpress安装主题失败
  • 成都建设银行招聘网站网站的切换语言都是怎么做的
  • 网站网业设计wordpress 很差
  • 网站开发软件著作权归谁网站悬浮窗广告
  • 如何提升网站alexa排名货运网站源码
  • 如何看自己网站流量梧州网站设计理念
  • 商城网站建设特点有哪些信息门户
  • 弄一个网站临沂有哪几家做网站的
  • 广州个人网站制作公司网站建设公司价
  • 免费建设网站赚钱小程序开发文档pdf