[Python][Tensorflow] lossがNaNになったときの解決策

 tf.logの中に1e-12くらいの小さい値を加えれば解決できます。

cross_entropy = -tf.reduce_mean(self._t * tf.log(self._prediction_result + 1e-12))

 logの中に0が入ってしまうことが原因です。

 なので0にしないために、無視できるほど小さい値である1e-12を加算することで解決します。

 どういう時に起こるかというと、3分類のとき推論結果が{0.2, 0.8, 0.0}などになるときです。logに0が入りNaNになってしまいます。

 ある程度学習進んでいくうちに過学習気味になったり学習率が高めだと起こりやすいです。

コメントを残す

メールアドレスが公開されることはありません。