今天写代码写到半夜,遇到了2次pytorch的loss不下降的问题。打印出网络参数,印证了参数并没有更新。通过搜集网上的资料,总结出了解决问题的3种办法。
(1) 用torch.autograd.Variable,把输入转换为Variable。但是对于离散型输入不适用
(2)计算出loss后,loss = loss.requires_grad_()。此方法有效。
(3)检查optimizer,如果model更新了,那么要重新运行一次
optimizer = optim.Adam(model.parameters(), lr=0.001)
否则,optimizer.step()无效。
参考的是:
https://discuss.pytorch.org/t/loss-doesnt-decrease-reuqires-grad-true/108071