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调用windows api锁定计算机示例
Apr 17 Python
使用python开发vim插件及心得分享
Nov 04 Python
python实现将元祖转换成数组的方法
May 04 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
Python占用的内存优化教程
Jul 28 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
PYcharm 激活方法(推荐)
Mar 23 Python
基于Python实现简单学生管理系统
Jul 24 Python
python3字符串输出常见面试题总结
Dec 01 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
详解Python函数print用法
Jun 18 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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
文章推荐系统(三)
2006/10/09 PHP
php录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
对于Python装饰器使用的一些建议
2015/06/03 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Python continue语句实例用法
2020/02/06 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
医院总经理职责
2013/12/26 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
外贸专业求职信
2014/03/09 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
团队会宣传标语
2014/10/09 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
政风行风整改方案
2014/10/25 职场文书
2014年老干部工作总结
2014/11/21 职场文书
会议室管理制度范本
2015/08/06 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书