pytorch - pytorch 是否检测溢出或下溢?
问题描述
因为深度神经网络和RNN涉及多次乘法,我猜,上溢或下溢会很频繁。
我只是好奇深度学习库是否检测到溢出或下溢操作并显示任何警告消息,或者只是忽略它。
解决方案
您可以通过跟踪梯度随时间的变化来跟踪与消失/爆炸梯度相关的问题。尽管这种方法更适合检测爆炸梯度,而不是消失梯度。
一种方法是查看最大梯度的值:
max(p.grad.detach().abs().max() for p in model.parameters() if p.grad is not None)
或者通过查看所有堆叠参数的范数(将其视为单个张量)。
torch.nn.utils.clip_grad_norm_
这是用于确定是否需要裁剪渐变的两种方法:以下是源代码中的实际行。
推荐阅读
- github - 有没有办法在你的 GitHub 存储库中隐藏新的“使用者”指标?
- java - 如何从 JFlex 中的 .bnf 解析器中引用属性?
- java - 在 Appium 和 Java 中找不到 ID
- javascript - 将动态按钮的值传递给模态表单
- node.js - 动态数据未发送到 sendgrid 模板
- c++ - 为什么新创建的socket是可读写的,被select()监控的?
- android - “Gboard 语音输入”如何在不询问 RECORD_AUDIO 许可的情况下工作?
- xsd - 当缺少必需元素时,如何使 JAXB 失败?
- angular - 如果组件不是当前组件,如何删除本地存储 - 角度
- python - 简短描述不适用于删除选定内容(delete_selected.short_description 未更改名称)