实际上当optimizer使用optim.Optimzer进行定义后,那么在模型训练过程中model.zero_grad()和optimzier.zero_grad()两者是等效的,当然我更加推荐使用前者,因为更好理解一些。
if optimizer = optim.Optimizer(net.parameters())
, model.grad_zero() and optimizer.grad_zero() are the same, they are interchangable.
From: https://discuss.pytorch.org/t/zero-grad-optimizer-or-net/1887