首页 > 解决方案 > .data 在 pytorch 中仍然有用吗?

问题描述

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

标签: pythonversionpytorchtensor

解决方案


.dataVariable(使用历史跟踪表示的对象Tensor,例如用于自动更新)的属性,而不是Tensor. 实际上,.data是允许访问Variable's 底层的Tensor.

但是,由于 PyTorch 版本0.4.0和已被合并(到更新的结构中),所以沿先前的对象消失了(为了向后兼容,仍然存在,但已弃用)。VariableTensorTensor.dataVariableVariable


版本发布说明中的段落0.4.0(我建议阅读有关Variable/Tensor更新的整个部分):

怎么样.data

.dataTensorVariable. 在这次合并之后,调用y = x.data仍然具有相似的语义。所以y将是一个Tensor与 共享相同数据 x,与 的计算历史无关x,并且具有 的requires_grad=False

但是,.data在某些情况下可能不安全。上的任何更改x.data 都不会被 跟踪,并且如果在后向传递中需要,autograd计算出的梯度将是不正确的。x一个更安全的替代方法是使用x.detach(),它也返回Tensor与 共享数据的a ,但如果需要反向requires_grad=False报告其就地更改。autogradx


推荐阅读