RuntimeError:类型为torch.DoubleTensor的预期对象,但发现类型为torch.FloatTensor的参数#2' weight'

时间:2018-03-21 13:13:30

标签: pytorch

我的输入张量是torch.DoubleTensor类型。但我得到了下面的RuntimeError:

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

我没有明确指出重量的类型(即我自己没有自己的重量。重量是由pytorch创造的)。什么会影响前进过程中的重量类型?

非常感谢!!

2 个答案:

答案 0 :(得分:24)

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上要慢得多。

答案 1 :(得分:0)

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

t = t.astype(np.float)

此处np.float转换为映射到DoubleTensor的64位浮点。因此,将其更改为

t = t.astype(np.float32)

解决了这个问题。