私はやや複雑で非標準的なNNアーキテクチャをデバッグしようとしています。フォワードパスを計算することはうまくいくと思いますが、予想される結果が得られますが、Adamや標準オプティマイザを使用して最適化しようとすると、非常に小さな学習率で繰り返してもどこでもナンを得ることができます。私はそれらをローカライズしようとしていますが、最初のオカレンスをキャッチして、それがどのように発生したかを検出する方法があるかどうか疑問に思っていましたか?私はtf.add_check_numerics_ops()
を試しましたが、それは何もしていないようです、あるいは私はそれを間違って使っています。逆方向パスのナンをデバッグ
11
A
答えて
18
大規模なネットワークを使用している場合は、特にNaNのデバッグが難しい場合があります。 tf.add_check_numerics_ops()
は、グラフの各浮動小数点テンソルにNaN値が含まれていないと主張するopsをグラフに追加しますが、デフォルトではこれらのチェックを実行しません。次のように代わりにそれは、あなたが定期的に実行することができますオペアンプを返し、またはステップごとに:
train_op = ...
check_op = tf.add_check_numerics_ops()
sess = tf.Session()
sess.run([train_op, check_op]) # Runs training and checks for NaNs
2
たぶん、あなたは、OPSのプリント値を疑うために、この
print_ops = []
for op in ops:
print_ops.append(tf.Print(op, [op],
message='%s :' % op.name, summarize=10))
print_op = tf.group(*print_ops)
sess.run([train_op, print_op])
のようなものを印刷OPSを追加することができますすべての操作に追加するには、add_check_numerics_ops
の行に沿ってループを実行できます。
関連する問題
- 1. ナン
- 2. GWT(IE)の逆方向リンク
- 3. C#ラムダ式逆方向<=
- 4. CSS-アニメーション/アニメーション方向/逆
- 5. ログベース2とナン
- 6. 順方向と逆方向の繰り返しの変更
- 7. バックボーンルーティングは、順方向か逆方向かを検出します
- 8. ユニコードテキストを逆方向にデコードする
- 9. python pandas:逆方向df列の順序
- 10. 最後のレコードから逆方向または逆方向のテーブルをクエリする効率的なメソッド
- 11. Pythonの再インデックス産ナン
- 12. 逆方向のすべてのファイルを読む方法
- 13. suckerfishメニューの方向を逆にする方法(ドロップダウン)
- 14. llddによる逆デバッグ
- 15. Listオブジェクトを逆方向に取得する方法は?
- 16. Googleマップの方向パスの色を変更する方法v3
- 17. jQueryの効果の方向を逆にする
- 18. ポストスクリプトファイルの向きを逆にする
- 19. 回転divの子要素を逆方向に回転
- 20. 複数のレベルで逆方向リンクを実装する
- 21. FFmpegを使用したMPEG逆方向フレームの復号
- 22. UINavigationController:逆方向のコントローラをポップします
- 23. アンドロイドの向きを逆さまにする方法は?
- 24. VS 2010で片方向ワークフローサービスをデバッグする方法は?
- 25. gdbで逆アセンブルされたライブラリのデバッグ
- 26. Visual Studioデバッグ実行パス
- 27. IntelliJで逆方向ルーティングメソッドを解決できません
- 28. 常に双方向リレーションシップの逆マッピングですか?
- 29. 指数ハザードモデル係数の逆方向(サプレグとglmポアソン付き)
- 30. D * Liteでパスの方向を定義する
問題は、train_opを実行すると、ネットワーク全体にナンバーが伝播するため、その原因を見つけることは役に立たないということです。私がやりたいことは、順方向パスと逆方向パスを実行することです。そして、nanが生成されるとすぐに、違反操作によって例外がスローされます。 –
'train_op'と' check_op'を一緒に実行すると、NaNを持つ最初のノードを報告するエラーが発生します。発生した 'tf.InvalidArgumentError'を捕捉し、その' opから 'opを抽出できます。 op'プロパティを使用します。 opのハンドルを使って、 'op.inputs [0]'プロパティにアクセスして、どのテンソルがNaN値を持っているかを知ることができます。 – mrry
これはありがとう! –