【发布时间】:2019-03-22 17:51:05
【问题描述】:
我的问题是关于 pytorch register_hook 的语法。
x = torch.tensor([1.], requires_grad=True)
y = x**2
z = 2*y
x.register_hook(print)
y.register_hook(print)
z.backward()
输出:
tensor([2.])
tensor([4.])
这个 sn-p 只是分别打印 z w.r.t x 和 y 的梯度。
现在我(很可能是微不足道的)问题是如何返回中间渐变(而不仅仅是打印)?
更新:
看来调用retain_grad() 解决了叶节点的问题。前任。 y.retain_grad().
但是,retain_grad 似乎无法解决非叶节点的问题。有什么建议吗?
【问题讨论】: