Verwirrung über model.train () [Duplikat]

Sep 07 2020

Ich bin ein Anfänger in Pytorch. Ich habe auf Github gesehen, dass einige Deep-Learning-Modelle model.train () haben und andere nicht, aber sie können normal ausgeführt werden. Ich möchte wissen, ob model.train () notwendig ist. Was ist der Effekt?

Antworten

1 hkchengrex Sep 07 2020 at 13:06

trainModus oder evalModus ist nur wichtig, wenn Sie Module haben, die sich beim Training / Testen asymmetrisch verhalten (z. B. BatchNorm, Dropout). Ich möchte betonen, dass es die Gradientenakkumulation überhaupt nicht beeinflusst. Selbst mit asymmetrischen Modulen kann man ein Modell perfekt im evalModus trainieren . Einige tun dies, um beim Training mit einem vorab trainierten ImageNet-Modell Speicherplatz zu sparen.

Wenn Sie keine asymmetrischen Module haben, spielt dies keine Rolle.

Standardmäßig beginnen alle Module mit training=True.

2 gspr Sep 07 2020 at 12:25

trainund sein Gegenstück evalschalten das Modell zwischen Trainings- und Bewertungsmodus um.

Im Trainingsmodus werden die verfolgten Gradienten im Allgemeinen bei jeder Bewertung des Modells aktualisiert. Dies ist erforderlich, um den für das Training verwendeten Gradientenabstieg durchzuführen. Im Auswertemodus sind sie nicht.