python - 迭代 torch 张量

标签 python pytorch iteration 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]

如果可能的话,我不想转换为 numpy ?

最佳答案

使用 numpy 一切都变得更简单,因为 np.arrays 只是始终存储在 CPU 上的数字集合。因此,如果您迭代 np.array,您会得到这些float 数字。
然而,在 PyTorch 中,张量不仅存储数字,还存储它们的梯度。此外,PyTorch 张量可以存储在 CPU 或 GPU 上。因此,为了保留所有这些“辅助信息”,PyTorch 在迭代张量时返回单元素张量。

如果您坚持从张量中获取简单的“数字”,您可以使用 tensor.item() :

 [x.item() for x in t]

或者,tensor.tolist() :

t.tolist()

有关 numpy np.arraytorch.tensor 之间差异的更多信息,请参阅 this answer .

关于python - 迭代 torch 张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73725148/

相关文章:

java - 迭代器添加了错误的地址

JavaScript For 循环数组迭代问题 - 使用一个循环与两个循环

python - 用 matplotlib.pyplot 绘制 vlines

python - 将抓取的结果集保存到 CSV 文件中

python - Model() 获得参数 'nr_class' 的多个值 - SpaCy 多分类模型(BERT 集成)

python - 我是否在 pytorch 中使用多项式回归?

python - 如何在文档字符串中正确显示 Pytorch 的数学符号?

Python - 每次修改整个字典时找到平均值的最快方法?

python - 处理由单击按钮触发的文件下载

java - 可以用Java实现twisted吗?