在 theano 中,很容易获得给定损失的某个变量的梯度:
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
属性附加到变量,而不是获取梯度的调用,这看起来很奇怪)。
我的问题是是否有某种方法可以按需反向传播(即仅沿着计算所需的路径反向传播dl_dw
,就像在 theano 中那样)?