我正在阅读optimizer.zero_grad()
http://pytorch.org/docs/master/_modules/torch/optim/optimizer.html#Optimizer.zero_grad
def zero_grad(self):
"""Clears the gradients of all optimized :class:`Variable` s."""
for group in self.param_groups:
for p in group['params']:
if p.grad is not None:
p.grad.detach_()
p.grad.zero_()
我想知道为什么detach_()
是必要的?它对detach
一个渐变变量而不是一个普通变量意味着什么?
为什么zero_()
不够?
答案 0 :(得分:1)
您不希望以前的渐变更新影响将来的渐变更新,因此您要从图形中分离以前的渐变。