web-dev-qa-db-ja.com

torch.nnモジュールの関数eval()の意味は何ですか

公式コメントは、「これはDropoutやBatchNormなどのモジュールにのみ効果がある」ことを示しています。しかし、私はその実装を理解していません。

14
闫伯元

ドロップアウトとBatchNorm(およびいくつかのカスタムモジュール)は、トレーニングおよび評価中に異なる動作をします。モデルで.eval()を呼び出して、評価モードにいつ切り替えるかをモデルに知らせる必要があります。

これにより、モデル内のすべてのモジュールに対してself.trainingFalseに設定されます。トレーニングおよび評価中に異なる動作をする必要がある独自のモジュールを実装している場合は、その間にself.trainingの値を確認できます。

15
litesaber