在用pytorch搭建和训练神经网络时,有时为了查看非叶子张量的梯度,比如网络权重张量的梯度,会用到retain_grad()函数。但是几次实验下来,发现用或不用retain_grad()函数,最终神经网络的准确率会有一点点差异。用retain_grad()函数的训练结果会差一些。目前还没有去探究这里面的原因。

所以,建议是,调试神经网络时,可以用retain_grad()函数,但最终训练神经网络时,最好不要用retain_grad()函数。

retain_grad()函数对神经网络训练没有影响。