python - .data 在 pytorch 中仍然有用吗?
问题描述
我是 pytorch 的新手。我阅读了很多大量使用张量.data
成员的 pytorch 代码。但是我.data
在官方文档和谷歌中搜索,发现很少。我猜.data
包含张量中的数据,但我不知道我们什么时候需要它,什么时候不需要?
解决方案
.data
是Variable
(使用历史跟踪表示的对象Tensor
,例如用于自动更新)的属性,而不是Tensor
. 实际上,.data
是允许访问Variable
's 底层的Tensor
.
但是,由于 PyTorch 版本0.4.0
和已被合并(到更新的结构中),所以沿先前的对象消失了(为了向后兼容,仍然存在,但已弃用)。Variable
Tensor
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
与 共享数据的a ,但如果需要反向requires_grad=False
报告其就地更改。autograd
x
推荐阅读
- java - AWS ProfileCredential 提供 AWS SDK1 VS AWS SDK 2 JAVA
- excel - VBA 将工作表上的跟踪号链接到网站
- python - 符号搜索:如何排除 html/js 文档文件或仅包含 `.py` 模块?
- mysql - 在 sql 中将分层数据作为列查看
- c - 分配一大块内存并事后管理它
- javascript - 如何在返回值之前等待 Cypress then() 命令完成?
- sql - 用于发送电子邮件 dbmail 的用户授权
- c# - FirstOrDefault() 导致 Collection 被修改;枚举操作可能无法执行。例外
- snowflake-sql - 在特定事件之后的行 FOR A KEY
- php - 使用googlespreadsheet api v4批量更新单个单元格?