Как назначить numpy .int64 для torch.cuda.FloatTensor? - PullRequest
0 голосов
/ 02 апреля 2020

Я не могу назначить int64 тензору факела. У меня есть следующий тензор

tempScale = torch.zeros((total, len(scale))).cuda() if useGpu else torch.zeros((nbPatchTotal, len(scale)))

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

tmpScale[:, j] = scale

Сообщение об ошибке

TypeError: can't assign a numpy.int64 to a torch.cuda.FloatTensor

что мне не хватает?

1 Ответ

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

Вы должны преобразовать scale в тензор факела того же типа и устройства, что и tmpScale до назначения.

tmpScale[:, j] = torch.from_numpy(scale).to(tmpScale)

Обратите внимание, что это приведение scale из int64 в float32, что, вероятно, приведет к потере точности , если значения в scale имеют величину больше 2 24 (около 16 миллионов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...