我是 pytorch 的新手。我读了很多大量使用张量的 pytorch 代码.data
成员。但我搜索.data
在官方文档和Google中,发现很少。我猜.data
包含张量中的数据,但我不知道什么时候需要它,什么时候不需要?
.data
是一个属性Variable
(对象代表Tensor
具有历史跟踪功能,例如用于自动更新),而不是Tensor
。实际上,.data
正在授予访问权限Variable
的底层Tensor
.
然而,自从 PyTorch 版本0.4.0
, Variable
and Tensor
已被合并(到更新的Tensor
结构),所以.data
沿着之前的路线消失了Variable
对象(好吧Variable
仍然存在向后兼容性,但已弃用)。
段落来自发行说明 https://github.com/pytorch/pytorch/releases/tag/v0.4.0对于版本0.4.0
(我建议阅读有关Variable
/Tensor
更新):
关于什么.data
?
.data
是获得基础资产的主要方式Tensor
从一个Variable
。合并后,调用y = x.data
还是有类似的
语义。所以y
将是一个Tensor
与共享相同的数据x
,与计算历史无关x
,并且有requires_grad=False
.
然而,.data
在某些情况下可能不安全。任何更改x.data
不会被跟踪autograd
,计算出的梯度将是
不正确的如果x
在向后传递中需要。更安全的替代方案是
使用x.detach()
,它还返回一个Tensor
共享数据的
和requires_grad=False
,但会进行就地更改
报道者autograd
if x
需要在后面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)