【PyTorch】retain_graph的作用

在PyTorch中,连续调用backward方法可能导致中间变量被释放从而引发错误。通过设置retain_graph=True,可以保留计算图,使得多个backward操作能够正确进行,尤其在有共享中间变量的情况下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

x = torch.randn((1, 4), dtype=torch.float32, requires_grad=True)
x
Out[54]: tensor([[ 0.1351,  0.8179,  0.1422, -0.3021]], requires_grad=True)
y = x ** 2
z = y * 4

output1 = z.mean()
output2 = z.sum()
output1.backward()
output2.backward()

Traceback (most recent call last):
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\lib\site-packages\IPython\core\interactiveshell.py", line 2885, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-60-90eaf9dc15fc>", line 1, in <module>
    output2.backward()
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\lib\site-packages\torch\tensor.py", line 93, in backward
    torch.autograd.backward(self, gradient, retain_graph, create_graph)
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\lib\site-packages\torch\autograd\__init__.py", line 90, in backward
    allow_unreachable=True)  # allow_unreachable flag
RuntimeErro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值