我试图将以下项目实施到Tensorflow / Keras中。 https://github.com/jacobgil/pytorch-pruning
我很难理解register_hook的作用?它可以在finetune.py第66行找到。 x.register_hook(self.compute_rank)
我已经搜索了有关此功能的明确解释,并尝试找到Keras等效物,没有任何运气。你对这些问题有答案吗?
答案 0 :(得分:0)
首先,首先是文档:
http://pytorch.org/docs/master/autograd.html#torch.autograd.Variable.register_hook
这允许您将方法注册到Variable
Variable
更新时调用的.grad
,即在后向传递中,并取{ {1}}作为输入。如果您只是想要读取渐变来执行其他操作,则该方法可以返回将替换原始grad
或Variable
的{{1}}。
如果以这种方式更新渐变,则计算图中的更低节点会在向后传递中看到新的更新渐变,并将使用更新的值计算各自的渐变。
我不是Tensorflow专家,但.grad
装饰器(documentation)似乎也可以这样做,例如,请参阅this answer。