我想用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'
答案 0 :(得分:0)
错误是因为k
张量是torch.int32
的类型,而其他张量P
和d_k
是torch.float32
的类型。但是cat
操作要求所有输入张量都属于同一类型。从documentation
torch.cat(张量,dim = 0,out =无)→张量
张量(张量的序列)–张量的任何python序列 相同类型。
解决方案之一是将k
转换为float
dtype,如下所示:
k = torch.from_numpy(k).float()