Pytrochは、トレーニングとテストでさまざまな出力を実現します
私たちは以前、model.train()
それmodel.eval()
がBNとドロップアウトの実現につながると言ってきました。どうしてこれなの?
BNとDropoutは、トレーニングとテストの操作が異なるためです。したがって、トレーニングとテストを区別する必要があります。
コードをトレーニングまたはテストする前に、次のことを規定します。
- 追加するトレーニング
model.train()
- 追加するテスト
model.eval()
これは、そのようなモデルのtraining
属性が設定されているtrue
か、である可能性があるためfalse
です。このようにして、モデルがトレーニングされているかどうかがわかります。
class Model(nn.Module):
def __init__(self):
pass
def isTraining(self):
if self.training:
return True
else:
return False
model = Model()
model.train()
print(model.training)
model.isTraining()
model.eval()
print(model.training)
model.isTraining()
result:
True
True
False
False