PyTorch LongTensor科学计数法显示原因及整数转换与嵌入问题咨询
关于PyTorch LongTensor的几个问题解答
1. 为什么print(x)会输出科学计数法格式?
这只是PyTorch的默认打印显示规则搞的小把戏!当存储的整数数值达到一定量级(比如100000这个门槛),PyTorch会自动切换到科学计数法来显示内容,但这完全不影响内部实际存储的值——你的x里面存的依然是整数108500,只是打印时换了个更紧凑的排版方式而已。
如果想确认的话,可以试试打印x.item(),它会直接输出Python整数格式的108500;或者用print("{:d}".format(x[0])),强制用十进制整数格式显示。
2. LongTensor能不能存储大整数?
当然可以!LongTensor对应的是64位有符号整数类型,它能存储的数值范围是-2^63到2^63 - 1(大概是-9e18到9e18之间)。你用到的108500离这个上限还差得远,哪怕是几十亿、上万亿的整数,只要落在这个区间内都能稳稳存储。
3. 如何将x转换为适合嵌入操作的格式?
其实你可能误解了一点:nn.Embedding层本身就接受LongTensor类型作为输入索引,所以你的x已经是完全符合要求的格式了!直接把它传给嵌入层就行,比如:
import torch.nn as nn embedding = nn.Embedding(num_embeddings=200000, embedding_dim=128) output = embedding(x)
如果是想把tensor里的数值提取成Python原生整数(比如做其他非张量操作),可以用这两种方式:
- 单个元素的tensor:
x.item()→ 返回纯整数108500 - 批量tensor:
x.tolist()→ 返回包含整数的列表(这里就是[108500])
内容的提问来源于stack exchange,提问作者user3929423
相关产品推荐
相关产品推荐

