.data
是的属性Variable
(Tensor
用历史跟踪表示的对象,例如用于自动更新)Tensor
。实际上,.data
正在访问Variable
的底层Tensor
。
然而,由于PyTorch版本0.4.0
,Variable
并Tensor
已经合并(到更新的Tensor
结构),所以.data
沿着以前消失Variable
的对象(以及Variable
仍然存在的向后兼容性,但不建议使用)。
从段落发行说明的版本0.4.0
(我建议你阅读关于全款Variable
/Tensor
更新):
.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
如果x
需要向后报告,则会报告其就地更改。