x = torch.tensor(2.0,requires_grad=True) y = x ** 2 z = y * 4 z.backward() z.backward()
会有如下报错
1
RuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.
原因:一个计算图只能计算一次反向传播。当反向传播后,这个计算图的内存就会被释放。
更改为如下即可
1 2 3 4 5 6 7
import torch
x = torch.tensor(2.0,requires_grad=True) y = x ** 2 z = y * 4 z.backward(retain_graph=True) z.backward()