Verwirrung über model.train () [Duplikat]
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
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.
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.