NaN はトレーニングをクラッシュさせるわけではありません――静かにそれを破壊します。
ResNet の学習実行で、無音の失敗により何時間も失った後、私は、どの層のどのバッチで問題が起きているのかを正確に特定する軽量な検出器を作りました。フォワードフックと勾配チェックを使うことで、最小限のオーバーヘッドで問題を早期に検出します。しかも、モデルをのろのろに遅くすることはありません。
記事 PyTorch の NaN はサイレントキラー――なので私は、特定の層でそれらを捕まえるための 3ms のフックを作りました は、Towards Data Science に初めて掲載されました。




