我想用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 P
和 d_k
是 dtype torch.float32
。但是cat
运算要求所有输入张量都是相同的类型。从文档
torch.cat(张量,dim=0,out=none) →张量
张量(张量序列) – 任何 python 张量序列 相同类型。
解决方案之一是将k
转换为float
dtype,如下所示:
k = torch.from_numpy(k).float()