Python 为什么Pytorch给我一个数据类型错误:Float vs Double?

Python 为什么Pytorch给我一个数据类型错误:Float vs Double?,python,types,pytorch,Python,Types,Pytorch,我正在将我在网上找到的一些工作Pytorch代码(这是一个使用MNIST数据的2D图像分类示例;很抱歉,我失去了原始源的踪迹,无法找到它)迁移到我需要的代码,这是将1D值集合转换为数字分数。我创建了自己的Dataset类。当我调用model()时,我得到一个错误:RuntimeError:应该是标量类型Float的对象,但在调用_th_addmm时,参数#2'mat1'得到了标量类型Double。我的第一个困惑是,即使有双数据类型,我也找不到任何对Python的引用。我的第二个问题是为什么会出现

我正在将我在网上找到的一些工作Pytorch代码(这是一个使用MNIST数据的2D图像分类示例;很抱歉,我失去了原始源的踪迹,无法找到它)迁移到我需要的代码,这是将1D值集合转换为数字分数。我创建了自己的Dataset类。当我调用model()时,我得到一个错误:
RuntimeError:应该是标量类型Float的对象,但在调用_th_addmm时,参数#2'mat1'得到了标量类型Double
。我的第一个困惑是,即使有双数据类型,我也找不到任何对Python的引用。我的第二个问题是为什么会出现错误——当我输入调试代码来显示mat1的数据类型及其元素时,我被告知这是一个张量,它声称是float64。我还想知道为什么它期望mat1使用标量,文档将其描述为矩阵/张量

完整错误转储为

Traceback (most recent call last):
  File "mlalan.py", line 174, in <module>
    outputs = model(images)
  File "/usr/home/adf/.local/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "mlalan.py", line 80, in forward
    x = activate(self.fc1(x))
  File "/usr/home/adf/.local/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/home/adf/.local/lib/python3.7/site-packages/torch/nn/modules/linear.py", line 87, in forward
    return F.linear(input, self.weight, self.bias)
  File "/usr/home/adf/.local/lib/python3.7/site-packages/torch/nn/functional.py", line 1610, in linear
    ret = torch.addmm(bias, input, weight.t())
RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #2 'mat1' in call to _th_addmm

完整的源代码位于。

默认情况下,在Python中,float表示float32。然而,在熊猫和Numpy中,float的意思是float64。我可以通过如下所示添加对astype的调用来解决这个问题。“32”是它工作所必需的

raw = self.data_frame.values[idx].astype(np.float32)
谢谢


现在我可以转到下一个崩溃:-)

尝试将其转换为浮点,float(num)顺便说一句,float64是双精度的;Float是float32。Pandas可能正在以双精度加载数据。您的模型需要浮点张量。调用(some_tensor.float(),将任何张量作为nn.Module实例的输入。
raw = self.data_frame.values[idx].astype(np.float32)