В данном коде веса не обновляются. Если вы запустите
list(model.parameters())[0].grad
, вы получите
tensor([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
или None. Поскольку градиенты нулевые веса не обновляются.
Если вы измените F.softmax (out) на F.log_softmax (out), это решит проблему. На данный момент я не имею глубоких знаний о том, почему это происходит. Но вы можете посетить: https://discuss.pytorch.org/t/weights-never-update-while-training/8418/9
У этой ссылки есть объяснение
Редактировать:
Комментарий, данный @jodag, объясняет реальное проблема.