是否可以一次向后运行一个节点的autograd?

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

假设我有一个包含很多层的复杂模型。

当我获得模型的输出时,我计算损失。

现在,当我运行 loss.backward() 时,它会立即计算所有层的梯度。

但是是否可以一次运行backward()一层?

所以我想做的是首先获取第 1 层的梯度,将它们传递给优化器,然后立即将 grads 设置为 None 以释放内存。然后继续计算第 2 层的梯度,依此类推,直到使用循环到达最后一层。这可能吗?

python python-3.x pytorch torch autograd
1个回答
0
投票

是的,这是可能的,但这不是标准方法,可能需要一些手动干预。 PyTorch 处理梯度的典型方法是使用 loss.backward() 一次性计算所有梯度。您可以通过手动控制计算图和梯度来实现您的要求。

first a Forward Pass then a Layer-by-Layer Backward Pass
© www.soinside.com 2019 - 2024. All rights reserved.