検証セットでのモデルのパフォーマンスを評価したい場合、以下を使用することをお勧めします。
with torch.no_grad:
_または
model.eval()
both を使用します。彼らは異なることをし、異なるスコープを持っています。
with torch.no_grad
_-autograd
のグラデーションの追跡を無効にします。model.eval()
は、呼び出されたモジュールのforward()
動作を変更しますwith torch.no_grad
__torch.autograd.no_grad
_のドキュメント はこう言っています:
[シック]勾配計算を無効にするコンテキストマネージャー。
勾配計算を無効にすることは、
Tensor.backward()
を呼び出さないことが確実な場合に、推論に役立ちます。それ以外の場合は_requires_grad=True
_が必要な計算のメモリ消費量が削減されます。このモードでは、入力に_requires_grad=False
_が含まれている場合でも、すべての計算の結果に_requires_grad=True
_が含まれます。
model.eval()
_nn.Module.eval
_のドキュメント はこう言っています:
モジュールを評価モードに設定します。
これは特定のモジュールでのみ効果があります。影響を受ける場合、トレーニング/評価モードでの動作の詳細については、特定のモジュールのドキュメントを参照してください。
Dropout
、BatchNorm
など.