Pytorch, не может запустить backward () даже в самой простой сети без ошибки - PullRequest
0 голосов
/ 21 мая 2018

Я новичок в pytorch и не могу запустить backward () даже в самой простой сети без выдачи ошибки.Например:

(Linear(6, 6)(Variable(torch.zeros([10, 6]))) - Variable(torch.zeros([10, 6]))).backward()

Выдает следующую ошибку

{RuntimeError}element 0 of variables does not require grad and does not have a grad_fn

Что я сделал неправильно в коде, чтобы создать эту проблему?

Ответы [ 2 ]

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

Эта ошибка возникает, когда PyTorch не может найти параметры модели, которые имеют requires_grad = True, т.е. все параметры модели имеют requires_grad = False.

Существуют разные причины, но может быть, что вы замораживаете всемодель, или то, что вы не правильно меняете местами последние слои модели - например, в остальных сетях это должен быть model.fc, а не model.classifier -.

Вы всегда должны быть осторожны вВы размещаете это:

for param in model.parameters():
    param.requires_grad = False
0 голосов
/ 21 мая 2018

Попробуйте добавить grad_output соответствующей формы в качестве параметра к обратному:

(Линейный (6, 6) (Переменная (torch.zeros ([10, 6]))) - Переменная (torch.zeros([10, 6]))). Backward (torch.zeros ([10, 6]))

В следующем ответе более подробно: Почему функция backward должна вызываться только для 1тензор элемента или с градиентами относительно переменной?

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