修正方法: 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: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です