运行时错误:预期是火炬类型的张量.FloatTensor,但发现了一个类型的火炬.序列元素的 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'

错误是因为k张量是 dtype torch.int32而其他张量是 dtype Pd_k 是 dtype torch.float32 。但是cat运算要求所有输入张量都是相同的类型。从文档

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

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

解决方案之一是将k转换为float dtype,如下所示:

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

最新更新