首页 > 解决方案 > RuntimeError: 期望一个 Torch.FloatTensor 类型的张量,但为序列元素找到了一个类型 torch.IntTensor

问题描述

我想用 python 生成一些随机数,然后用 pytorch 将其转换为张量。这是我生成随机数并将其转换为张量的代码。

import numpy as np
import torch

P = np.random.uniform(0.5, 1, size=[20, 1])
k = np.random.randint(1, 20, size=[20, 1])
d_k = np.random.uniform(0, np.sqrt(80000), size=[20, 1])

P = torch.from_numpy(P).float()
k = torch.from_numpy(k).int()
d_k = torch.from_numpy(d_k).float()

torch.cat((P, k, d_k), dim=-1)

之后,我收到了一些错误,显示:

RuntimeError: Expected a Tensor of type torch.FloatTensor but found a type torch.IntTensor for sequence element 1 in sequence argument at position #1 'tensors'

标签: pythonnumpypytorch

解决方案


错误是因为k张量属于 dtypetorch.int32而其他张量P属于d_kdtype torch.float32。但是该cat操作要求所有输入张量的类型相同。从文档

torch.cat(tensors, dim=0, out=None) → 张量

张量(张量序列)——任何相同类型的张量的python序列。

解决方案之一是转换kfloatdtype 如下:

k = torch.from_numpy(k).float()

推荐阅读