Python の scipy/numpy で exp がオーバーフローしますか? 質問する

Python の scipy/numpy で exp がオーバーフローしますか? 質問する

次のエラーは何ですか?

Warning: overflow encountered in exp

scipy/numpy で Python を使用すると、一般的に何を意味しますか? 次のように、log(a) + log(b) などの対数形式で比率を計算し、exp を使用して結果の指数を取得し、logsumexp を使用して合計します。

c = log(a) + log(b)
c = c - logsumexp(c)

配列 b の一部の値は意図的に 0 に設定されています。それらのログは -Inf になります。

この警告の原因は何でしょうか? ありがとうございます。

ベストアンサー1

あなたの場合、それbとても配列のどこかに小さい値があり、出力を格納するために使用している配列の dtype (float32、float64 など) に対して大きすぎる数値 (a/bまたは) が取得されます。exp(log(a) - log(b))

Numpyは次のように設定できます

  1. このようなエラーは無視してください。
  2. エラーを出力しますが、実行を停止するための警告は出しません (デフォルト)
  3. エラーを記録します。
  4. 警告を発する
  5. エラーを発生させる
  6. ユーザー定義関数を呼び出す

見るnumpy.seterr浮動小数点配列のアンダーフローやオーバーフローなどの処理方法を制御します。

おすすめ記事