PyTorch中 tensor.detach() 和 tensor.data 的区别
原文链接请参考: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 的区别相关推荐
- 详解pytorch中的常见的Tensor数据类型以及类型转换
文章目录 概览 Tensor的构建 补充 类型转换 附录 概览 本文主要讲pytorch中的常见的Tensor数据类型,例如:float32,float64,int32,int64.构造他们分别使用如 ...
- **Pytorch 中view函数和reshape函数的区别*
Pytorch 中view函数和reshape函数的区别(我是一名大一刚学计算机的学生 希望我的说法对你有帮助) 首先:要了解这个问题我们要先了解一个基本知识 张量的储存方式 跟据图片我们可以清楚的看 ...
- pytorch的两个函数 tensor.detach(),tensor.detach_(),tensor.clone() 的作用和区别
前言:当我们在训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整:或者值训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一 ...
- pytorch中的.detach和.data深入详解
前言:这两个方法都可以用来从原有的计算图中分离出某一个tensor,有相似的地方,也有不同的地方,下面来比较性的看一看.PyTorch0.4以及之后的版本中,.data 仍保留,但建议使用 .deta ...
- pytorch中的.detach()和detach_()和.data和.cpu()和.item()的深入详解与区别联系
detach().detach_()和data detach()与detach_() 在x->y->z传播中,如果我们对y进行detach(),梯度还是能正常传播的: 但如果我们对y进行d ...
- Pytorch 中的数据类型 torch.utils.data.DataLoader 参数详解
DataLoader是PyTorch中的一种数据类型,它定义了如何读取数据方式.详情也可参考本博主的另一篇关于torch.utils.data.DataLoader(https://blog.csdn ...
- Pytorch中view()方法和resize()方法的区别
1.view() 通过tensor.view方法可以调整tensor的形状,但必须保证调整前后元素总数一致.view不会修改自身的数据,返回的新tensor与源tensor共享内存,即更改其中一个,另 ...
- PyTorch中repeat、tile与repeat_interleave的区别
. 目录 torch.Tensor.repeat torch.Tensor.tile torch.Tensor.repeat_interleave torch.Tensor.repeat repeat ...
- Pytorch 中的detach 和detach_
本文转自 http://blog.csdn.net/u012436149/article/details/76714349 pytorch 的 Variable 对象中有两个方法,detach和 de ...
最新文章
- a*算法的时间复杂度_算法基础——时间复杂度amp;空间复杂度
- JavaScript 学习笔记— —类型判断
- Coursera, Big Data 1, Introduction (week 3)
- 服务器宕机造成英国航空史上最严重的大混乱
- 网络基础知识 快速计算子网掩码的2种方法
- 第 2-1 课:类与 Object + 面试题
- 智能手机之新手篇[转]
- 一款AI编程助手,阿里云智能编码插件
- JavaScript服务器端高级编程(Array.indexOf()和lastIndexOf()方法)
- Mybatis常见配置错误总结
- 网易云解析接口PHP源码,网易云解析/接口
- 企业网络信息安全意识宣贯——屏保制作
- ue怎么转换html格式,UE编辑器UltraEdit怎么格式化代码
- Python案例1—人民币与美元的汇率兑换V_5.0
- 机器学习笔记 - 什么是图注意力网络?
- 稍纵即逝的烟花蓄势于纸
- PHP后端处理苹果内购对接
- python画自定义颜色的坐标图
- golang直接调用ffmpeg预编译类库(windows)
- Layui+ssm修改