原文链接请参考:https://dreamhomes.top/posts/201906081516/


PyTorch0.4中,.data 仍保留,但建议使用 .detach(), 区别在于 .data 返回和 x 的相同数据 tensor, 但不会加入到x的计算历史里,且require s_grad = False, 这样有些时候是不安全的, 因为 x.data 不能被 autograd 追踪求微分 。 .detach() 返回相同数据的 tensor ,且 requires_grad=False ,但能通过 in-place 操作报告给 autograd 在进行反向传播的时候.
举例:
tensor.data

>>> a = torch.tensor([1,2,3.], requires_grad =True)
>>> out = a.sigmoid()
>>> c = out.data
>>> c.zero_()
tensor([ 0., 0., 0.])>>> out                   #  out的数值被c.zero_()修改
tensor([ 0., 0., 0.])>>> out.sum().backward()  #  反向传播
>>> a.grad                #  这个结果很严重的错误,因为out已经改变了
tensor([ 0., 0., 0.])

tensor.detach()

>>> a = torch.tensor([1,2,3.], requires_grad =True)
>>> out = a.sigmoid()
>>> c = out.detach()
>>> c.zero_()
tensor([ 0., 0., 0.])>>> out                   #  out的值被c.zero_()修改 !!
tensor([ 0., 0., 0.])>>> out.sum().backward()  #  需要原来out得值,但是已经被c.zero_()覆盖了,结果报错
RuntimeError: one of the variables needed for gradient
computation has been modified by an

PyTorch中 tensor.detach() 和 tensor.data 的区别相关推荐

  1. 详解pytorch中的常见的Tensor数据类型以及类型转换

    文章目录 概览 Tensor的构建 补充 类型转换 附录 概览 本文主要讲pytorch中的常见的Tensor数据类型,例如:float32,float64,int32,int64.构造他们分别使用如 ...

  2. **Pytorch 中view函数和reshape函数的区别*

    Pytorch 中view函数和reshape函数的区别(我是一名大一刚学计算机的学生 希望我的说法对你有帮助) 首先:要了解这个问题我们要先了解一个基本知识 张量的储存方式 跟据图片我们可以清楚的看 ...

  3. pytorch的两个函数 tensor.detach(),tensor.detach_(),tensor.clone() 的作用和区别

    前言:当我们在训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整:或者值训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一 ...

  4. pytorch中的.detach和.data深入详解

    前言:这两个方法都可以用来从原有的计算图中分离出某一个tensor,有相似的地方,也有不同的地方,下面来比较性的看一看.PyTorch0.4以及之后的版本中,.data 仍保留,但建议使用 .deta ...

  5. pytorch中的.detach()和detach_()和.data和.cpu()和.item()的深入详解与区别联系

    detach().detach_()和data detach()与detach_() 在x->y->z传播中,如果我们对y进行detach(),梯度还是能正常传播的: 但如果我们对y进行d ...

  6. Pytorch 中的数据类型 torch.utils.data.DataLoader 参数详解

    DataLoader是PyTorch中的一种数据类型,它定义了如何读取数据方式.详情也可参考本博主的另一篇关于torch.utils.data.DataLoader(https://blog.csdn ...

  7. Pytorch中view()方法和resize()方法的区别

    1.view() 通过tensor.view方法可以调整tensor的形状,但必须保证调整前后元素总数一致.view不会修改自身的数据,返回的新tensor与源tensor共享内存,即更改其中一个,另 ...

  8. PyTorch中repeat、tile与repeat_interleave的区别

    . 目录 torch.Tensor.repeat torch.Tensor.tile torch.Tensor.repeat_interleave torch.Tensor.repeat repeat ...

  9. Pytorch 中的detach 和detach_

    本文转自 http://blog.csdn.net/u012436149/article/details/76714349 pytorch 的 Variable 对象中有两个方法,detach和 de ...

最新文章

  1. a*算法的时间复杂度_算法基础——时间复杂度amp;空间复杂度
  2. JavaScript 学习笔记— —类型判断
  3. Coursera, Big Data 1, Introduction (week 3)
  4. 服务器宕机造成英国航空史上最严重的大混乱
  5. 网络基础知识 快速计算子网掩码的2种方法
  6. 第 2-1 课:类与 Object + 面试题
  7. 智能手机之新手篇[转]
  8. 一款AI编程助手,阿里云智能编码插件
  9. JavaScript服务器端高级编程(Array.indexOf()和lastIndexOf()方法)
  10. Mybatis常见配置错误总结
  11. 网易云解析接口PHP源码,网易云解析/接口
  12. 企业网络信息安全意识宣贯——屏保制作
  13. ue怎么转换html格式,UE编辑器UltraEdit怎么格式化代码
  14. Python案例1—人民币与美元的汇率兑换V_5.0
  15. 机器学习笔记 - 什么是图注意力网络?
  16. 稍纵即逝的烟花蓄势于纸
  17. PHP后端处理苹果内购对接
  18. python画自定义颜色的坐标图
  19. golang直接调用ffmpeg预编译类库(windows)
  20. Layui+ssm修改

热门文章

  1. Debian10搭建bind9主服务器搭建
  2. 【原创】不想一轮游?大厂面试官教你怎么过笔试
  3. 开源ERP Tryton 内容介绍,用Python语言,2022年5月大更新,多语言,多货币,多国用户
  4. source insight 常用配置
  5. dedecms 自定义 html,怎样自定义织梦dedecms标签初探
  6. 输入年月日判断是本年的第多少天
  7. 清理 Mysql general_log
  8. 计算机毕设(附源码)JAVA-SSM泸定中学宿舍管理系统设计
  9. 网页文字无法选择【解决办法】
  10. 南阳nyoj586疯牛 和nyoj619详解总结