При установке типа с плавающей запятой в PyTorch, в чем разница между типом тензора и типом d, и когда я должен установить один над другим? - PullRequest
2 голосов
/ 04 апреля 2019

Я использую double в качестве входов и выходов моей модели, поэтому я пытаюсь настроить torch на использование float64 вместо float32.В чем именно разница между

torch.set_default_tensor_type(torch.DoubleTensor)

Устанавливает факел по умолчанию. Тип тензора - тип тензора с плавающей запятой t.Этот тип также будет использоваться как тип с плавающей точкой по умолчанию для вывода типа в torch.tensor ().

torch.set_default_dtype(torch.float64)

Устанавливает dtype с плавающей точкой по умолчанию равным d,Этот тип будет использоваться как тип с плавающей точкой по умолчанию для вывода типа в torch.tensor ().

В документации говорится, что установка типа тензора также устанавливает тип d, но я не уверен, когдаЯ бы использовал один над другим.

Я должен упомянуть, что любой оператор исправляет ошибку, которую я видел после перехода от числа с плавающей запятой к двойному:

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'
...