.data在pytorch中仍然有用吗?

May*_*ybe 14 python version pytorch tensor

我是pytorch的新手.我读了大量使用张量.data成员的pytorch代码.但我.data在官方文件和谷歌搜索,发现很少.我想.data包含张量中的数据,但我不知道什么时候需要它,什么时候不需要?

ben*_*che 15

.dataVariable(对象表示Tensor历史跟踪,例如自动更新)的属性,而不是Tensor.实际上,.data正在提供对Variable底层的访问Tensor.

然而,由于PyTorch版本0.4.0,VariableTensor已经合并(到更新的Tensor结构),所以.data沿着以前消失Variable的对象(以及Variable仍然存在的向后兼容性,但不建议使用).


从段落发行说明的版本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如果x在向后需要的话,将报告其就地变化.