什么是最好和最快的方法迭代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]
如果可能的话,我宁愿不转换成麻木?
1条答案
按热度按时间xurqigkl1#
使用numpy,一切都变得简单了,因为
np.arrays
只是一组一直存储在CPU上的数字,因此,如果你迭代np.array
,你会得到这些float
数字。然而,在PyTorch中,Tensor不仅存储数字,还存储它们的梯度。此外,PyTorchTensor可以存储在CPU或GPU上。因此,为了保留所有这些“边信息”,PyTorch在迭代Tensor时返回单元素Tensor。
如果你坚持要从Tensor中得到简单的“数字”,你可以使用
tensor.item()
:或者,
tensor.tolist()
:如需numpy
np.array
s和torch.tensor
s之间差异的详细信息,请参阅this answer。