import torch
def analyze_your_actual_code(): """分析你的实际代码"""
a = torch.randn(4, requires_grad=True)
print(f"a: {a}")
print(f"a.grad: {a.grad}")
loss = a.sum()
loss.backward()
print(f" a.grad: {a.grad}")
loss.backward()
print(f" a.grad: {a.grad}")
analyze_your_actual_code()
Why I try to call loss.backward
twice, but the gradients still accumulate. The compute graph don't release as expected?
Code output:
a: tensor([-0.3121, -0.2331, 0.9317, -0.5075], requires_grad=True)
a.grad: None a.grad: tensor([1., 1., 1., 1.])
a.grad: tensor([2., 2., 2., 2.])