Как конвертировать torch int64 в факел LongTensor? - PullRequest
0 голосов
/ 09 июня 2019

Я прохожу курс, в котором используется устаревшая версия PyTorch, которая не меняет torch.int64 на torch.LongTensor по мере необходимости. Текущий раздел кода, который выдает ошибку:

loss = loss_fn(Ypred, Ytrain_) # calc loss on the prediction

Я считаю, что в этом разделе следует изменить dtype:

Ytrain_ = torch.from_numpy(y_train.values).view(1, -1)[0].

При тестировании типа данных с использованием Ytrain_.dtype возвращается torch.int64. Я попытался преобразовать его, применив функцию long() следующим образом: Ytrain_ = Ytrain_.long() безрезультатно.

Я также пытался найти его в документации , но кажется, что там написано torch.int64 ИЛИ torch.long, что, как я предполагаю, означает, что torch.int64 должно работать.

RuntimeError                              Traceback (most recent call last)
----> 9     loss = loss_fn(Ypred, Ytrain_) # calc loss on the prediction
RuntimeError: Expected object of scalar type Long but got scalar type Int for argument #2 'target'

1 Ответ

0 голосов
/ 09 июня 2019

Как указано user8426627, вы хотите изменить тип тензора, а не тип данных. Поэтому решение было добавить .type(torch.LongTensor), чтобы преобразовать его в LongTensor.

Финальный код:

Ytrain_ = torch.from_numpy(Y_train.values).view(1, -1)[0].type(torch.LongTensor)

Тип тестового тензора:

Ytrain_.type()

'torch.LongTensor'

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