[解決済み] ディープラーニングによるナン損失の理由
質問
あまりに一般的な質問かもしれませんが、何が畳み込みニューラルネットワークを発散させるのか、どなたか説明できますか?
具体的には
Tensorflowのiris_trainingモデルを私自身のデータで使用していますが、次のような結果が出続けています。
ERROR:tensorflow:モデルは損失=NaNで発散しました。
トレースバック...
tensorflow.contrib.learn.python.learn.monitors.NanLossDuringTrainingError: 学習中にNaN損失が発生しました。
トレースバックはこの行から始まりました。
tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
hidden_units=[300, 300, 300],
#optimizer=tf.train.ProximalAdagradOptimizer(learning_rate=0.001, l1_regularization_strength=0.00001),
n_classes=11,
model_dir="/tmp/iris_model")
オプティマイザーを調整したり、学習率に0を使ったり、オプティマイザーなしを使ったりしてみました。ネットワーク層、データ サイズなどについての洞察があれば、教えてください。
どのように解決するのですか?
モデルが発散しているのを見たことがあるのですが、どうすればいいのでしょうか?
-
学習速度が高すぎる。 損失が増加し始め、その後無限大に発散する場合、このケースかどうかがよくわかります。
-
私は DNNClassifier についてあまり詳しくはありませんが、カテゴリ クロス エントロピーのコスト関数を使用していると思われます。 これは、予測がゼロに近づくと発散する予測値のログを取ることを含みます。 そのため、この発散を防ぐために、通常は予測値に小さなイプシロン値を追加します。DNNClassifierはおそらくこれを行うか、そのためにtensorflowのoppを使用するのだと思います。 おそらく問題ではありません。
-
他の数値的安定性の問題は、イプシロンを追加することで助けることができるゼロによる除算のように存在することができます。 もう 1 つのあまり明白ではない問題は、有限精度の数字を扱うときに適切に簡略化されないと発散する可能性がある平方根です。しかし、DNNClassifierの場合、これが問題であるとは思えません。
-
入力データに問題がある可能性があります。 試しに
assert not np.any(np.isnan(x))
を呼び出して、ナンを導入していないことを確認してください。 また、ターゲット値がすべて有効であることを確認してください。 最後に、データが適切に正規化されていることを確認してください。おそらく、[0, 255]ではなく、[-1, 1]の範囲にピクセルを持ちたいのでしょう。 -
ラベルは損失関数のドメイン内になければならないので、対数ベースの損失関数を使用する場合、すべてのラベルは非負でなければなりません (evan pu と以下のコメントによって指摘されたように)。
関連
-
[解決済み] NaN値をチェックするにはどうすればよいですか?
-
[解決済み] Pandas DataFrameの特定の列の値がNaNである行を削除する方法
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複