PyTorch中 tensor.detach() 和 tensor.data 的区别详解


Posted in Python onJanuary 06, 2020

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 的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python url 参数修改方法
Dec 26 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
pandas的qcut()方法详解
Jul 06 Python
Python 单例设计模式用法实例分析
Sep 23 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
python两个_多个字典合并相加的实例代码
Dec 26 Python
Python集合操作方法详解
Feb 09 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
python基础之停用词过滤详解
Apr 21 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 #Python
基于python+selenium的二次封装的实现
Jan 06 #Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 #Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 #Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 #Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 #Python
Python tkinter三种布局实例详解
Jan 06 #Python
You might like
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php缓存技术详细总结
2013/08/07 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
JavaScript中获取元素索引的函数
2010/09/10 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
详解Python中的正则表达式的用法
2015/04/09 Python
python3 爬取图片的实例代码
2018/11/06 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Python面向对象实现方法总结
2020/08/12 Python
python爬虫 requests-html的使用
2020/11/30 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
国际书籍零售商:Wordery
2017/11/01 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
乡镇交通安全实施方案
2014/03/29 职场文书
男女朋友协议书
2014/04/23 职场文书
汽修专业自荐信
2014/07/07 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Django程序的优化技巧
2021/04/29 Python
python数字图像处理:图像的绘制
2022/06/28 Python