修正方法: runtimewarning: exp でオーバーフローが発生しました
Python で発生する可能性のある警告は次のとおりです。
RuntimeWarning: overflow encountered in exp
この警告は、 exp NumPy 関数を使用しているときに、処理できないほど大きすぎる値を使用した場合に発生します。
これは単なる警告であり、NumPy は要求された計算を引き続き実行しますが、デフォルトで警告が表示されることに注意することが重要です。
この警告が表示された場合、次の 2 つの選択肢があります。
1.無視します。
2.警告を完全に削除します。
次の例は、この警告に実際に応答する方法を示しています。
警告を再現する方法
Python で次の計算を実行するとします。
import numpy as np #perform some calculation print (1/(1+np. exp (1140))) 0.0 /srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:3: RuntimeWarning: overflow encountered in exp
NumPy は計算を実行しますが (結果は 0.0)、それでもRuntimeWarning が出力されることに注意してください。
この警告は、値 np.exp(1140) が e 1140という巨大な数を表すために出力されます。
基本的に、NumPy に次の計算を実行するように依頼しました。
- 1 / (1 + 巨大な数)
これは次のように簡略化できます。
- 1 / 巨大な数
これは確かに 0 なので、NumPy は結果を0.0として計算しました。
警告を解除する方法
必要に応じて、次のようにwarnsパッケージを使用して警告を抑制できます。
import numpy as np import warnings #remove warnings warnings. filterwarnings (' ignore ') #perform some calculation print (1/(1+np. exp (1140))) 0.0
NumPy は計算を実行しますが、RuntimeWarning は表示されないことに注意してください。
注: 一般に、警告は、実行に時間がかかるコード部分を特定するのに役立ちます。したがって、警告を削除するかどうかを決定するときは、慎重に選択してください。
追加リソース
次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。
パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした