RuntimeError:预期类型为torch.FloatTensor的张量,但发现序列元素的类型为torch.IntTensor

时间:2019-01-28 14:20:24

标签: python numpy pytorch

我想用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'

1 个答案:

答案 0 :(得分:0)

错误是因为k张量是torch.int32的类型,而其他张量Pd_ktorch.float32的类型。但是cat操作要求所有输入张量都属于同一类型。从documentation

  

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

     

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

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

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