当前向包含多个自动分级节点时,PyTorch 关于使用非完整后向挂钩的警告
Posted
技术标签:
【中文标题】当前向包含多个自动分级节点时,PyTorch 关于使用非完整后向挂钩的警告【英文标题】:PyTorch warning about using a non-full backward hook when the forward contains multiple autograd Nodes 【发布时间】:2021-07-03 18:33:04 【问题描述】:我对 pytorch 和构建神经网络比较陌生。
最近一次升级后,在运行我的 pytorch 循环时,我现在收到警告“using a non-full backward hook when the forward contains multiple autograd Nodes
”。
训练仍在运行并完成,但我不确定应该将 register_full_backward_hook
函数放在哪里。
我尝试将它添加到我的神经网络中的每一层,但这会导致使用不同钩子时出现更多错误。
谁能给点建议?
【问题讨论】:
【参考方案1】:PyTorch 版本 1.8.0 弃用了 register_backward_hook
(source code),取而代之的是 register_full_backward_hook
(source code)。
您可以在此处的补丁说明中找到它:Deprecated old style nn.Module
backward hooks (PR #46163)
您收到的警告:
当 forward 包含多个 autograd 节点时使用非完整的后向钩子已被弃用,并将在未来的版本中删除。这个钩子会丢失一些
grad_input
。请使用register_full_backward_hook
获取记录的行为。
仅表示您应该在代码中将所有 register_backward_hook
调用替换为 register_full_backward_hook
以获得文档页面中描述的行为。
【讨论】:
以上是关于当前向包含多个自动分级节点时,PyTorch 关于使用非完整后向挂钩的警告的主要内容,如果未能解决你的问题,请参考以下文章