公式コメントは、「これはDropoutやBatchNormなどのモジュールにのみ効果がある」ことを示しています。しかし、私はその実装を理解していません。
ドロップアウトとBatchNorm(およびいくつかのカスタムモジュール)は、トレーニングおよび評価中に異なる動作をします。モデルで.eval()
を呼び出して、評価モードにいつ切り替えるかをモデルに知らせる必要があります。
これにより、モデル内のすべてのモジュールに対してself.training
がFalse
に設定されます。トレーニングおよび評価中に異なる動作をする必要がある独自のモジュールを実装している場合は、その間にself.training
の値を確認できます。