为什么我们需要在`zero_grad`中调用`detach_`?

问题描述 投票:2回答:1

我正在阅读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_()不够?

pytorch
1个回答
1
投票

您不希望先前的渐变更新影响将来的渐变更新,因此您将从图形中分离先前的渐变。

© www.soinside.com 2019 - 2024. All rights reserved.