Deep Learning Academy · Lektion

torch.no_grad() für Inferenz

Überspringen Sie die Graphverfolgung, um Speicher zu sparen.

Lektion 4 von 413 Schritte

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

Bestätigen Sie, wann Sie no_grad verwenden sollten.

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. 🚀

Kostenlos starten

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

  1. requires_grad und der Berechnungsgraph
  2. Mit backward() Gradienten berechnen
  3. .grad auslesen und auf null setzen
  4. torch.no_grad() für Inferenz
← Zurück zu Deep Learning Academy