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

Eri*_*ani 23 pytorch

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

RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'
Run Code Online (Sandbox Code Playgroud)

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

非常感谢!!

lay*_*yog 31

默认的类型weightsbiasestorch.FloatTensor.因此,您需要将模型转换为torch.DoubleTensor或投射输入torch.FloatTensor.为了投射您的输入,您可以做到

X = X.float()
Run Code Online (Sandbox Code Playgroud)

或投你的完整的模型,以DoubleTensor作为

model = model.double()
Run Code Online (Sandbox Code Playgroud)

您还可以使用设置所有张量的默认类型

pytorch.set_default_tensor_type('torch.DoubleTensor')
Run Code Online (Sandbox Code Playgroud)

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