1. ホーム
  2. python

[解決済み] python - ログで無効な値が検出されました。

2022-02-09 15:01:03

質問

次のような式があります。 log = np.sum(np.nan_to_num(-y*np.log(a+ 1e-7)-(1-y)*np.log(1-a+ 1e-7)))

と表示され、以下のような警告が表示されます。

RuntimeWarning: invalid value encountered in log
  log = np.sum(np.nan_to_num(-y*np.log(a+ 1e-7)-(1-y)*np.log(1-a+ 1e-7)))

何が無効な値なのか、なぜこのようなことが起こるのか、理解できません。どんなことでもご相談ください。

ノート : これは、クロスエントロピーのコスト関数に 1e-7 のように、logの中に0が入らないようにするためです。 y &です。 a はnumpyの配列であり numpy としてインポートされます。 np .

解決方法は?

ログに負の値が残っているため、実数でナンが表示されるのでしょう。

ay は0から1の間の確率を表しているはずなので、なぜそこで値が小さくなったり大きくなったりするのかを確認する必要があります。1e-7を追加すると、何か怪しいことがわかります。 np.log(0) 与える -inf というのが、あなたが欲しい値だと思います。