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 BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
python实现石头剪刀布小游戏
Jan 20 Python
Python3.5装饰器典型案例分析
Apr 30 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 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
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
php cli 小技巧
2013/06/03 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
python中round函数保留两位小数的方法
2020/12/04 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
法人任命书范本
2014/06/04 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
计划生育工作汇报
2014/10/28 职场文书