Pytorch, Невозможно получить repr для - PullRequest
0 голосов
/ 24 июня 2018

Я реализую RL в PyTorch, и мне пришлось написать собственную функцию mse_loss (которую я нашел в Stackoverflow;)).Функция потерь:

def mse_loss(input_, target_):    
    return torch.sum(
        (input_ - target_) * (input_ - target_)) / input_.data.nelement()

Теперь, в моем цикле тренировки, первый вход выглядит примерно так:

tensor([-1.7610e+10]), tensor([-6.5097e+10])

Input tensor

С этим вводом я получу ошибку:

Unable to get repr for <class 'torch.Tensor'>

Вычисление a = (input_ - target_) работает нормально, в то время как b = a * a соответственно b = torch.pow(a, 2) завершится с ошибкой, упомянутой выше.

Кто-нибудь знает, как исправить это?

Большое спасибо!

Обновление : Я только что попытался использовать torch.nn.functional.mse_loss, что приведет к той же ошибке ..

Ответы [ 2 ]

0 голосов
/ 21 января 2019

У меня была такая же ошибка, когда я использую код ниже

criterion = torch.nn.CrossEntropyLoss().cuda()
output=output.cuda()
target=target.cuda()
loss=criterion(output, target)

но я наконец-то обнаружил, что ошибся: вывод похож на tensor([[0.5746,0.4254]]), а цель - tensor([2]), число 2 выходит за пределы индекса вывода

когда я не использую графический процессор, это сообщение об ошибке:

RuntimeError: Assertion `cur_target >= 0 && cur_target < n_classes' failed.  at /opt/conda/conda-bld/pytorch-nightly_1547458468907/work/aten/src/THNN/generic/ClassNLLCriterion.c:93
0 голосов
/ 27 июня 2018

Вы используете графический процессор?

У меня была проблема с симилларом (но я использовал операции сбора), и когда я переместил свои тензоры в ЦП, я мог получить правильное сообщение об ошибке. Я исправил ошибку, переключился обратно на GPU и все было в порядке. Может быть, Pytorch испытывает проблемы с выводом правильной ошибки, когда она поступает из GPU.

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