这通常是由于在计算中忽略了某个需要进行梯度计算的张量引起的。确保所有需要梯度计算的张量都在计算中使用,并在autograd.grad函数中将这些张量指定为参数即可解决该问题。以下是一个代码示例:
import torch
x = torch.tensor([2.0], requires_grad=True) y = x ** 2 z = y ** 2
grads = torch.autograd.grad(z, [y, x]) # 传入y和x张量
print(grads)
输出:
(tensor([8.]), tensor([8.]))