loss.backward

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

如何计算:autograd包根据tensor进行过的数学运算来自动计算梯度
注意:1:autograd实现的。2:对tensor进行计算梯度。
之前损失计算:分割损失和边界损失计算正常。
踩坑1:模型有两个损失,分别为分割损失和边界损失,在loss function计算损失值。然后将损失值相加进行反向传播。其中分割损失采用了深监督,需要计算五次。之前的代码采用的append将所有损失放在一个列表中,通过sum相加,搜了一下,网上说append会不断地增加内存的消耗。因此推荐使用loss += loss.item().
问题就出现在这里:然后train就开始报错:
‘‘float has no attribution of backward’’。继续搜索发现回答是loss不是tensor格式。是因为item()函数将tensor转换为了float。
所以在
计算损失也就是loss.backward之前不能用loss.item()。修改为:loss += loss,这样loss就是tensor了,但是我的边界损失也是用的loss += loss.item()。那么也就是说我的边界损失也是float类型了。但是却可以正常运行:
loss.backward
于是继续搜索发现
tensor和float相加时候,会自动将float转换为tensor格式
但是,在反向传播时候却不能对边界损失进行反向更新,因此即使可以运行,结果也是错的,所以有多个分割损失和边界损失时候,不能用loss += loss.item()。loss.backward将损失反向传播,计算梯度,optimizer使用梯度下降法优化损失。
什么时候可以用呢:搜索发现在不需要损失梯度的地方可以用loss.item(),比如需要用logger记录损失时候可以使用。文章来源地址https://www.toymoban.com/news/detail-502766.html

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

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

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

相关文章

  • Pytorch反向传播——optimizer.zero_grad(), loss.backward(), optimizer.step() 作用

    在 PyTorch 中,optimizer.zero_grad() 用于清空优化器中的梯度。通常,在进行一次反向传播计算之前,我们需要先清空优化器中的梯度。这是因为 PyTorch 默认会在反向传播时累加梯度,而不是覆盖之前的梯度,因此我们需要先清空梯度,再进行反向传播计算。 具体来说,optimizer.

    2024年02月11日
    浏览(40)
  • PyTorch:梯度计算之反向传播函数backward()

    计算图,是一种用来描述计算的有向无环图。 我们假设一个计算过程,其中 X 1 mathbf{X_1} X 1 ​ 、 W 1 mathbf{W_1} W 1 ​ 、 W 2 mathbf{W_2} W 2 ​ 、 Y mathbf{Y} Y 都是 N N N 维向量。 X 2 = W 1 X 1 mathbf{X_2} = mathbf{W_1}mathbf{X_1} X 2 ​ = W 1 ​ X 1 ​ y = W 2 X 2 mathbf{y} = mathbf{W_2}mathbf{X_2} y

    2023年04月09日
    浏览(40)
  • 深度学习 -- pytorch 计算图与动态图机制 autograd与逻辑回归模型

    pytorch中的动态图机制是pytorch这门框架的优势所在,阅读本篇博客可以使我们对动态图机制以及静态图机制有更直观的理解,同时在博客的后半部分有关于逻辑回归的知识点,并且使用pytorch中张量以及张量的自动求导进行构建逻辑回归模型。 计算图是用来描述运算的有向无环

    2024年02月01日
    浏览(46)
  • 如何根据子网掩码计算出网络前缀(prefix)

    我们知道子网掩码是对IP地址的网络地址的标注。把IP地址中网络地址位设置为1,主机地址位设置为0,得到的就是子网掩码。除了用子网掩码表示IP地址的网络地址和主机地址外,还可以用network prefix(网络前缀),比如192.168.0.1/16,这里的16就是prefix,也就是网络地址位的位

    2023年04月15日
    浏览(39)
  • 计算机网络4小时速成:如何根据IP地址和子网掩码计算自己的网段和ip可用范围?

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月06日
    浏览(46)
  • pytorch如何使用Focal Loss

    Focal loss 是 文章 Focal Loss for Dense Object Detection 中提出对简单样本的进行 decay 的一种损失函数。是对标准的 Cross Entropy Loss 的一种改进。 FL 对于简单样本(p比较大)回应较小的loss。 如论文中的图1, 在p=0.6时, 标准的 CE 然后又较大的 loss , 但是对于FL就有相对较小的loss回应

    2024年02月10日
    浏览(39)
  • 损失函数(Loss Function)一文详解-分类问题常见损失函数Python代码实现+计算原理解析

    目录 前言 一、损失函数概述 二、损失函数分类 1.分类问题的损失函数

    2023年04月26日
    浏览(44)
  • java 计算年龄 Java 根据出生日期计算年龄

    1.把出生日期字符串转换为日期格式。  2.计算年龄  3.执行方法

    2024年02月11日
    浏览(56)
  • java 圆形坐标计算(根据角度和边长计算位置)

    通过三角函数计算 圆形的任意弧形角度都对应一个直角三角形,通过三角函数来计算直角三角形的边长,从而得出每个角度下圆形坐标位置 o 为起始位置, r为半径,求圆形坐标位置 代码实现 设坐标 24,24 半径24 通过计算得出的结果和图形如下图 代码摘自Java 开发之 根据坐标

    2024年02月13日
    浏览(36)
  • Pytorch中的.backward()方法

    参考 Pytorch中的.backward()方法_deephub的博客-CSDN博客_.backward requires_gard 是Tensor变量的一个属性,一般默认为False。 如果对于某Variable 变量 x ,其  x.requires_grad == True , 则表示它可以参与求导,也可以从它向后求导。 requires_grad == True  具有传递性:若  x.requires_grad == True , y.re

    2024年02月16日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包