【发布时间】:2014-10-19 18:13:22
【问题描述】:
我正在使用线性回归运行循环,并在我经常以无穷大结束的地方进行计算。当我检查变量输出时,我注意到当我开始得到“NaNs”时事情会崩溃。我尝试了很多不同的方法来处理无穷大,但我的程序最终还是崩溃了。我已经完成了诸如用非常大或非常小的值替换 NaN 之类的事情,但现在我认为这一切都没用。我不应该一视同仁地对待所有的 NaN - 显然,有些 NaN 是在玩正无穷大时出现的,有些是负无穷大。
我真的需要知道我的代码究竟是在哪一点突然产生 NaN,以及产生它的是负无穷大还是正无穷大。在程序崩溃之前我该怎么做?
编辑
我知道如何检查 NaN。我可以简单地使用numpy.isnan,并且我已经使用它了。但我想知道什么时候它会发生。是不是有异常或者发生时可以调用或抛出警告的东西?
【问题讨论】:
-
可以分享你的代码。以便找到?
-
“我已经做过诸如用非常大或非常小的值替换 NaN 之类的事情,但现在我认为这一切都没用” 这主要是没有意义的。 NaN 是例如 infinity/infinity 。盲目地用“非常低”或“非常大的价值”来代替它是完全错误的。
-
@SylvainLeroux 是的,没错,这就是我所意识到的,这就是为什么我想知道 NaN 是什么时候以及是什么原因造成的。
-
不,它不是重复的,我知道如何“检查它”,我所做的就是使用 isnan,但我想检查 何时 它发生了,所以我可以看看为什么。
-
具体来说,您在做什么?您应该如何处理异常情况通常在很大程度上取决于您要解决的具体问题。
标签: python exception crash nan infinity