pytorch中为什么要用 zero_grad() 将梯度清零
pytorch中为什么要用 zero_grad() 将梯度清零
调用backward()函数之前都要将梯度清零,因为如果梯度不清零,pytorch中会将上次计算的梯度和本次计算的梯度累加。这样逻辑的好处是,当我们的硬件限制不能使用更大的bachsize时,使用多次计算较小的bachsize的梯度平均值来代替,更方便,坏处当然是每次都要清零梯度。
optimizer.zero_grad()
output = net(input)
loss = loss_f(output, target)
loss.backward()