Numpy 在PyTorch中设置浮点类型时,tensor类型和dtype之间的区别是什么,何时应该设置一个而不是另一个?

Numpy 在PyTorch中设置浮点类型时,tensor类型和dtype之间的区别是什么,何时应该设置一个而不是另一个?,numpy,runtime-error,pytorch,Numpy,Runtime Error,Pytorch,我使用double作为我的模型输入和输出,所以我尝试设置torch使用float64而不是float32。两者之间到底有什么区别 torch.set\u default\u tensor\u type(torch.DoubleTensor) 将默认torch.Tensor类型设置为浮点Tensor类型t。此类型也将用作torch.tensor()中类型推断的默认浮点类型 torch.set\u default\u数据类型(torch.float64) 将默认浮点数据类型设置为d。此类型将用作to

我使用double作为我的模型输入和输出,所以我尝试设置torch使用float64而不是float32。两者之间到底有什么区别

torch.set\u default\u tensor\u type(torch.DoubleTensor)

将默认torch.Tensor类型设置为浮点Tensor类型t。此类型也将用作torch.tensor()中类型推断的默认浮点类型

torch.set\u default\u数据类型(torch.float64)

将默认浮点数据类型设置为d。此类型将用作torch.tensor()中类型推断的默认浮点类型

文档告诉我,设置张量类型也会设置数据类型,但我不确定什么时候我会使用一个而不是另一个

我应该提到的是,这两条语句都修复了我在从浮点更改为双精度后看到的错误:

Traceback (most recent call last):
  File "train.py", line 122, in train_model  
    output = net(action)  
  File "/opt/anaconda3/lib/python3.7/site- packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "models.py", line 25, in forward
    return self.fc2(F.relu(self.fc1(x)))
  File "/opt/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "/opt/anaconda3/lib/python3.7/site-packages/torch/nn/modules/linear.py", line 67, in forward
    return F.linear(input, self.weight, self.bias)
  File "/opt/anaconda3/lib/python3.7/site-packages/torch/nn/functional.py", line 1352, in linear
    ret = torch.addmm(torch.jit._unwrap_optional(bias), input, weight.t())
RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'

我可以想象,
set\u default\u tensor\u type
也接受自定义的tensor类型。查看源代码,发现他们正在调用
at::set\u default\u dtype(default\u tensor\u type->typeMeta())无论如何,因此
set\u default\u tensor\u type
更通用。例如,它们可能具有相同的效果。