在theano中,很容易得到某些变量的梯度w.r.t.给定的损失:
loss = f(x, w)
dl_dw = tt.grad(loss, wrt=w)
我得到了pytorch的不同范式,你可以做以下事情:
loss = f(x, w)
loss.backwards()
dl_dw = w.grad
问题是我可能不希望通过图形进行完全向后传播 - 只需沿着需要到达w的路径 .
我知道你可以用 requires_grad=False
定义变量,如果你不想通过它们反向传播 . 但是你必须在变量创建时决定(并且 requires_grad=False
属性附加到变量,而不是获得渐变的调用,这似乎很奇怪) .
My Question is 是否有某种方式可以根据需要进行反向传播(即,只需沿着计算 dl_dw
所需的路径进行反向传播,就像在theano中那样)?
1 回答
事实证明,这真的很容易 . 只需使用torch.autograd.grad
例:
感谢JerryLin回答了问题here .