很久没写过了...
最近被一个bug困扰了很久,为了赶进度之前都绕过去了,今天静下心来debug完好像发现了问题,记录一下。
问题:
code中每一个epoch train完以后有一个操作模型参数的动作,之前的function会在with torch.no_grad()里面写逻辑,后来魔改太多function,就没加with torch.no_grad().结果发现用新的function,模型参数虽然改了,但是下个epoch继续train,模型好像一直在原地踏步
解决方案:
最后的方案就是记得把所有不需要 require gradients的,想要操作模型参数的,一定记得加上with torch.no_grad()!!具体解释...盲猜应该是计算图没有被detach的情况下,可能有个默认复原的机制?事情太多,只能不求甚解了...