首页 > 解决方案 > pytorch 是否检测溢出或下溢?

问题描述

因为深度神经网络和RNN涉及多次乘法,我猜,上溢或下溢会很频繁。

我只是好奇深度学习库是否检测到溢出或下溢操作并显示任何警告消息,或者只是忽略它。

标签: pytorch

解决方案


您可以通过跟踪梯度随时间的变化来跟踪与消失/爆炸梯度相关的问题。尽管这种方法更适合检测爆炸梯度,而不是消失梯度。

一种方法是查看最大梯度的值:

max(p.grad.detach().abs().max() for p in model.parameters() if p.grad is not None)

或者通过查看所有堆叠参数的范数(将其视为单个张量)。

torch.nn.utils.clip_grad_norm_这是用于确定是否需要裁剪渐变的两种方法:以下是源代码中的实际行。


推荐阅读