运行时错误:火炬类型的预期对象。双张量,但找到类型火炬。参数 #2 'weight'的浮点张量



我的输入张量是火炬。双张量类型。但是我在下面得到了运行时错误:

RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'
我没有

明确指定重量的类型(即我没有自己初始化我的重量。重量由 pytorch 创建(。什么会影响正向过程中的重量类型?

多谢!!

weightsbiases 的默认类型是 torch.FloatTensor 。因此,您需要将模型强制转换为torch.DoubleTensor或将输入转换为torch.FloatTensor。对于投射您的输入,您可以执行

X = X.float()

或将完整模型转换为DoubleTensor

model = model.double()

您还可以使用

pytorch.set_default_tensor_type('torch.DoubleTensor')
最好

将输入转换为float而不是将模型转换为double,因为double数据类型的数学计算在GPU上要慢得多。

我也收到了完全相同的错误。根本原因是我的数据加载代码中的以下语句:

t = t.astype(np.float)

在这里,np.float 转换为映射到 DoubleTensor 的 64 位浮点数。所以把它改成,

t = t.astype(np.float32)

解决了这个问题。

最新更新