当前向包含多个自动分级节点时,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 关于使用非完整后向挂钩的警告的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch自动求解梯度

C#里treeview如何向指定NAME节点添加子节点?

自动驾驶分级 - 练习测验

pytorch1.0 搭建LSTM网络

PyTorch自动微分基本原理

苹果分类基于matlab机器视觉苹果疾病识别分类含Matlab源码 2325期