torch.no_grad() für Inferenz
Überspringen Sie die Graphverfolgung, um Speicher zu sparen.
torch.no_grad() für Inferenz 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.
Nicht jeder Durchlauf benötigt Gradienten
Gradienten benötigen Sie nur beim Training. Wenn Sie lediglich Vorhersagen erstellen möchten, ist das Aufzeichnen des Graphen unnötiger Aufwand. Daher können Sie es in PyTorch deaktivieren. 🛑
torch.no_grad kennenlernen
Wenn Sie Code in einen torch.no_grad()-Block einschließen, beendet autograd darin die Aufzeichnung. Es wird kein Graph erstellt und es werden keine Gradienten gespeichert.
with torch.no_grad():
preds = model(x)Warum den Graphen überspringen
Das Erstellen des Graphen benötigt Speicher, um jeden Schritt für einen späteren Backward-Durchlauf zu behalten, der nie stattfinden wird. Bei der Inferenz ist dieser Aufwand reine Verschwendung.
Schneller und ressourcenschonender
Innerhalb von no_grad benötigt Ihr Forward-Durchlauf weniger Speicher und läuft etwas schneller. Bei großen Modellen können Sie so beim reinen Vorhersagen größere Batches verarbeiten.
Ausgaben sind losgelöst
Tensoren, die innerhalb des Blocks erstellt werden, haben requires_grad false. Es handelt sich um gewöhnliche Ergebnisse, die Sie problemlos ausgeben, speichern oder in NumPy umwandeln können.
Für die Auswertung verwenden
Validierungs- und Testschleifen sollten immer unter no_grad laufen. Sie bewerten das Modell, statt es zu trainieren, daher gibt es keinen Grund, Gradienten aufzuzeichnen.
with torch.no_grad():
for x, y in val_loader:
out = model(x)Mit dem eval-Modus kombinieren
Setzen Sie für die Inferenz model.eval() und schließen Sie die Aufrufe gemeinsam in no_grad ein. eval korrigiert das Verhalten von Schichten wie Dropout, no_grad stoppt den Graphen. Beide lösen unterschiedliche Probleme.
Es ist ein Context Manager
no_grad wirkt sich nur auf den Code innerhalb des with-Blocks aus. Sobald Sie ihn verlassen, aktiviert autograd die Aufzeichnung für Ihren nächsten Trainingsschritt automatisch wieder.
Die Decorator-Form
Sie können auch eine ganze Funktion mit @torch.no_grad() markieren. Jede Tensor-Operation innerhalb dieser Funktion läuft dann, ohne einen Graphen zu erstellen.
@torch.no_grad()
def predict(x):
return model(x)Einen einzelnen Tensor loslösen
Möchten Sie nur einen Tensor aus dem Graphen lösen, statt einen ganzen Block? Rufen Sie für ihn .detach() auf, um eine Kopie ohne Gradientenhistorie zu erhalten.
frozen = output.detach()Eine sichere, verbreitete Gewohnheit
Verwenden Sie no_grad immer dann, wenn Sie nicht lernen: bei Inferenz, Metriken oder dem Speichern von Ausgaben. Diese kleine Änderung spart unauffällig Speicher und Zeit.
Kurztest
Zusammenfassung
Schließen Sie die Inferenz in torch.no_grad() ein, um das Erstellen des Graphen zu überspringen und Speicher sowie Zeit zu sparen. Kombinieren Sie es mit model.eval(), wann immer Sie Vorhersagen erstellen statt zu trainieren. 🚀
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 „torch.no_grad() für Inferenz“ kostenlos?
Ja — der vollständige Text von „torch.no_grad() für Inferenz“ 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 „torch.no_grad() für Inferenz“?
Überspringen Sie die Graphverfolgung, um Speicher zu sparen. 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 „torch.no_grad() für Inferenz“?
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
- requires_grad und der Berechnungsgraph
- Mit backward() Gradienten berechnen
- .grad auslesen und auf null setzen
- torch.no_grad() für Inferenz