RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'
我的输入张量是torch.DoubleTensor类型。但是我得到了下面的 RuntimeError:
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'
我没有明确指定权重的类型(即我没有自己初始化权重。权重是由 pytorch 创建的)。什么会影响转发过程中权重的类型?
非常感谢!!
weights
和 biases
的默认类型是 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)
解决了问题。
我的输入张量是torch.DoubleTensor类型。但是我得到了下面的 RuntimeError:
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'
我没有明确指定权重的类型(即我没有自己初始化权重。权重是由 pytorch 创建的)。什么会影响转发过程中权重的类型?
非常感谢!!
weights
和 biases
的默认类型是 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)
解决了问题。