web-dev-qa-db-ja.com

NaNを検出するPytorch操作

TensorsでNaNsを検出するPytorch内部手順はありますか? Tensorflowには_tf.is_nan_および_tf.check_numerics_演算があります... Pytorchはどこかに似たものを持っていますか?ドキュメントでこのようなものを見つけることができませんでした...

CPUだけでなくGPUでもこれを実行したいので、特にPytorch内部ルーチンを探しています。これは、numpyベースのソリューション(np.isnan(sometensor.numpy()).any()など)を除外します...

23
cleros

あなたはいつでもnan != nan

>>> x = torch.tensor([1, 2, np.nan])
tensor([  1.,   2., nan.])
>>> x != x
tensor([ 0,  0,  1], dtype=torch.uint8)

Pytorch 0.4には torch.isnan

>>> torch.isnan(x)
tensor([ 0,  0,  1], dtype=torch.uint8)
37
nemo

PyTorch 0.4.1以降、 _detect_anomaly_ コンテキストマネージャがあり、逆伝播のすべてのステップの間にassert not torch.isnan(grad).any()と同等のアサーションを自動的に挿入します。逆方向パス中に問題が発生した場合に非常に役立ちます。

22
Jatentaki