如何将 torch.Tensor 替换为 python 中的值

how to replace torch.Tensor to a value in python

我在 pytorch 中的预测结果为 torch([0]) , torch([1])....,torch([25]),对应 26 个字母,即 A,B,C....Z。 我的预测将以 torch([0]) 的形式出现,我希望将其作为 A 等等。 知道如何进行此转换。

你想要Tensor.item()

>>> import torch
>>> t = torch.tensor([0])
>>> t.item()
0

如果你想把它转换成从AZ的字母你可以使用:

>>> import string
>>> string.ascii_uppercase[t.item()]
'A'

在执行此操作之前请仔细检查形状,或者将 try/except 包裹起来以获得可能的 ValueError:

>>> t = torch.tensor([0, 1])
>>> t.item()
Traceback (most recent call last):
  File "<ipython-input-6-dc80242434c0>", line 1, in <module>
    t.item()
ValueError: only one element tensors can be converted to Python scalars

要将字母索引转换为实际字母,您可以:

alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'  # the Alphabet
pred = torch.randint(0, 26, (30,))  # your prediction, int tensor with values in range[0, 25]
# convert to characters
pred_string = ''.join(alphabet[c_] for c_ in pred)

输出类似于:

'KEFOTIJBNTAPWHSBXUIQKTTJNSCNDF'

这也适用于具有单个元素的 pred,在这种情况下,转换可以更紧凑地完成:

alphabet[pred.item()]