【发布时间】:2020-10-10 13:33:57
【问题描述】:
使用torch.tensor(sourcetensor) 和tensor.clone().detach() 复制张量有什么区别?
就像torch.tensor(srctsr) 总是复制数据,tensor.clone().detach() 也复制数据。
x = torch.tensor([1, 2, 3])
y1 = x.clone().detach()
y2 = torch.tensor(x)
x[0] = 0
print(y1, y2) # both are same
所以它们看起来完全一样。以下是 PyTorch 文档中关于 torch.tensor() 和 torch.clone().detach() 的解释
因此 torch.tensor(x) 等价于 x.clone().detach() 并且 torch.tensor(x, requires_grad=True) 等价于 x.clone().detach().requires_grad_(True) .推荐使用 clone() 和 detach() 的等价物。
那么如果它们彼此等价,为什么.clone().detach()比另一个更受欢迎?
【问题讨论】:
-
这能回答你的问题吗? Pytorch preferred way to copy a tensor
-
好的。 “x 轴是创建的张量的维度,y 轴显示时间。该图是线性比例的。正如您所看到的,与其他三种方法相比,tensor() 或 new_tensor() 需要更多时间。”但是为什么会这样呢?
-
你最好在 PyTorch 官方论坛上提问,因为开发人员可以更好地回答。
标签: pytorch