pytorch 迭代 Torch Tensor

nhaq1z21  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(228)

什么是最好和最快的方法迭代Tensor。这是令人困惑的,为什么我得到Tensor而不是值。
得到了这个:

[ x for x in t]
  Out[122]: [tensor(-0.12), tensor(-0.11), tensor(0.68), tensor(0.68), tensor(0.17)]

但预期会出现以下行为:

[ x for x in t.numpy() ]
  Out[123]: [-0.11932722, -0.114598714, 0.67563725, 0.6756373, 0.16548502]

如果可能的话,我宁愿不转换成麻木?

xurqigkl

xurqigkl1#

使用numpy,一切都变得简单了,因为np.arrays只是一组一直存储在CPU上的数字,因此,如果你迭代np.array,你会得到这些float数字。
然而,在PyTorch中,Tensor不仅存储数字,还存储它们的梯度。此外,PyTorchTensor可以存储在CPU或GPU上。因此,为了保留所有这些“边信息”,PyTorch在迭代Tensor时返回单元素Tensor。
如果你坚持要从Tensor中得到简单的“数字”,你可以使用tensor.item()

[x.item() for x in t]

或者,tensor.tolist()

t.tolist()

如需numpy np.array s和torch.tensor s之间差异的详细信息,请参阅this answer

相关问题