Trainings- und Evaluationsmodus
Warum sich model.train() und model.eval() unterscheiden.
Trainings- und Evaluationsmodus ist eine kostenlose Deep Learning Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Deep Learning Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Deep Learning Academy-Kurs umfasst insgesamt 4 Lektionen.
Ein Modell hat zwei Seiten
Ihr Netzwerk verhält sich beim Lernen anders als beim Testen. PyTorch bezeichnet diese beiden Zustände als train-Modus und eval-Modus. 🎭
In den Train-Modus wechseln
Rufen Sie vor dem Training model.train auf. Dadurch weisen Sie jede Schicht an, sich so zu verhalten, wie es beim aktiven Lernen aus Daten vorgesehen ist.
model.train()In den Eval-Modus wechseln
Rufen Sie vor der Validierung oder einer Vorhersage model.eval auf. Das Netzwerk wechselt nun zu seinem stabilen, deterministischen Verhalten für eine verlässliche Messung.
model.eval()Dropout berücksichtigt den Modus
Dropout setzt während des Trainings zufällig Neuronen auf null, um Overfitting zu verhindern. Im Eval-Modus wird es vollständig deaktiviert, sodass jedes Neuron zur Vorhersage beiträgt.
Auch Batch Norm berücksichtigt den Modus
Batch Norm verwendet während des Trainings die Statistiken jedes Batches, wechselt zur Evaluierungszeit jedoch zu gespeicherten gleitenden Mittelwerten, um stabile und konsistente Ausgaben zu liefern.
Es ist nur ein Schalter
Diese Aufrufe trainieren oder testen selbst nichts. Sie ändern lediglich ein Flag, das Dropout- und Norm-Schichten mitteilt, welches Verhalten sie verwenden sollen.
Eval ist nicht no_grad
Eine häufige Verwechslung: eval ändert das Verhalten der Schichten, während no_grad die Gradientenverfolgung deaktiviert. Sie lösen unterschiedliche Probleme, daher verwenden Sie normalerweise beide zusammen.
model.eval()
with torch.no_grad():
pred = model(x)Eval zu vergessen schadet
Wenn Sie ohne eval validieren, behalten Dropout und Batch-Normalisierung ihr Trainingsverhalten bei. Ihre Messwerte werden verrauscht und wirken schlechter, als das Modell tatsächlich ist.
Training zu vergessen, schadet
Auch umgekehrt ist das problematisch: Lassen Sie das Modell im Eval-Modus, wird Dropout nie aktiviert, sodass seine Regularisierung während des Trainings unbemerkt wegfällt.
In die Schleife integrieren
Machen Sie den Wechsel zur Gewohnheit: Setzen Sie vor dem Trainingsdurchlauf train und vor der Validierung eval – in jeder einzelnen Epoche –, damit das Modell nie im falschen Modus bleibt.
for epoch in range(epochs):
model.train()
# ... train ...
model.eval()
# ... validate ...Kleiner Aufruf, große Wirkung
Zwei winzige Aufrufe, und doch entscheiden sie darüber, ob Ihre Metriken vertrauenswürdig sind. Betrachten Sie den Wechsel des Modus als unverzichtbaren Bestandteil jeder Schleife.
Schnelltest
Was ändert der Aufruf model.eval() tatsächlich?
Zusammenfassung
Sie haben die beiden Modi kennengelernt: train aktiviert Dropout und Batch-Statistiken, eval macht sie deterministisch. Wechseln Sie in jeder Epoche den Modus und kombinieren Sie eval mit no_grad. 🎉
Lerne Python mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „Trainings- und Evaluationsmodus“ kostenlos?
Ja — der vollständige Text von „Trainings- und Evaluationsmodus“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Deep Learning Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Deep Learning Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Trainings- und Evaluationsmodus“?
Warum sich model.train() und model.eval() unterscheiden. Du übst Deep Learning Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Deep Learning Academy zu starten?
Keine Vorkenntnisse erforderlich. Deep Learning Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Trainings- und Evaluationsmodus“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Deep Learning Academy-Lektion Code schreiben und ausführen?
Ja. Jede Deep Learning Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Forward-Pass, Loss, Backward, Step
- Eine minimale Trainingsschleife schreiben
- Genauigkeit während des Trainings verfolgen
- Trainings- und Evaluationsmodus