RuntimeError: _th_normal не поддерживается в CPUType для Long - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь сгенерировать число из нормального распределения, используя:

from torch.distributions import Normal
noise = Normal(th.tensor([0]), th.tensor(3.20))
noise = noise.sample()

Но я получаю эту ошибку: RuntimeError: _th_normal not supported on CPUType for Long

1 Ответ

1 голос
/ 05 апреля 2020

Ваш первый тензор th.tensor([0]) имеет torch.Long тип из-за автоматического вывода типа c из переданного значения, в то время как float или FloatTensor требуется функцией.

Вы можете решить это, передав 0.0 явно следующим образом:

import torch

noise = torch.distributions.Normal(torch.tensor([0.0]), torch.tensor(3.20))
noise = noise.sample()

Еще лучше, отбросьте torch.tensor в целом, в этом случае Python типы будут автоматически преобразованы в float, если это возможно, так что это также верно:

import torch

noise = torch.distributions.Normal(0, 3.20)
noise = noise.sample()

И, пожалуйста, не используйте псевдоним torch как th, это не официально, используйте полное имя, поскольку это только смущает всех.

...