【问题标题】:pytorch beginner :torch.data.new() torch.new()pytorch 初学者:torch.data.new() torch.new()
【发布时间】:2020-07-30 14:02:17
【问题描述】:

我有一个小问题,tensor.data.new() 和 tensor.new() 有什么区别?似乎它们都返回一个空张量,其 dtype 和设备与自张量相同。 谢谢

【问题讨论】:

标签: python pytorch


【解决方案1】:

没有区别。这有点令人费解,但是,您可以将.data 视为与持有它的张量基本相同的对象。每个张量都有一个.data,而.data 本身就是一个张量,所以会有一些循环引用。

最重要的部分是它们总是指向相同的数据,因此所有不需要对张量或 .data 进行梯度的操作都会得到相同的结果。

import torch
a = torch.randn((1,2))
a.data.data_ptr() == a.data_ptr()
# True -- indicating it's precisely the same memory/buffer

.data 属性是 .grad 属性的对应部分。但是,为了方便起见,由于大多数人只关心数据,而不关心与它们相关的梯度,因此 .data 也指向张量的默认缓冲区。

【讨论】:

    猜你喜欢
    • 2020-04-01
    • 2018-08-22
    • 2018-11-19
    • 2022-01-17
    • 2012-12-20
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多