PyTorch-Tensoren und Autograd
torch.Tensor, requires_grad, backward(), Gradientenberechnung, Tensoroperationen.
PyTorch-Tensoren und Autograd ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 1 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 Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was ist PyTorch?
PyTorch ist ein Deep-Learning-Framework rund um Tensoren, also mehrdimensionale Arrays mit GPU-Beschleunigung und automatischer Differenzierung. Die beiden Grundlagen, die Sie zuerst beherrschen müssen, sind Tensoren und autograd.
pip install torch
import torchTensoren erstellen
Ein Tensor ähnelt einem NumPy-Array, kann aber auf einer GPU liegen und Gradienten verfolgen. Erstellen Sie einen mit torch.tensor. Tensoren haben eine shape und einen dtype.
x = torch.tensor([1.0, 2.0, 3.0])
print(x.shape) # torch.Size([3])
print(x.dtype) # torch.float32Operationen mit Tensoren
Tensoren unterstützen elementweise Mathematik, Matrixmultiplikation und Umformungen. Operationen sind vektorisiert und werden auf der Hardware schnell ausgeführt. Das ist die Rechenbasis jedes neuronalen Netzes.
a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
b = torch.tensor([[5.0, 6.0], [7.0, 8.0]])
print(a + b)
print(a @ b) # matrix multiplyrequires_grad: Gradienten verfolgen
Um Gradienten zu berechnen, erstellen Sie einen Tensor mit requires_grad=True. PyTorch zeichnet anschließend jede darauf ausgeführte Operation auf und erstellt einen Berechnungsgraphen, den es später differenzieren kann.
x = torch.tensor([2.0, 3.0], requires_grad=True)
print(x.requires_grad) # TrueEine Berechnung aufbauen
Wenden Sie Operationen auf einen Tensor mit Gradientenverfolgung an, um eine skalare Ausgabe zu erzeugen. Hier quadrieren wir jedes Element und bilden die Summe. So erhalten wir eine einzelne Zahl, nach der wir in Bezug auf x differenzieren können.
x = torch.tensor([2.0, 3.0], requires_grad=True)
y = x.pow(2).sum() # y = x0^2 + x1^2
print(y) # tensor(13., grad_fn=...)backward() aufrufen
Rufen Sie .backward() für einen Skalar auf, um Gradienten per Backpropagation zu berechnen. PyTorch durchläuft den aufgezeichneten Graphen rückwärts und trägt die Ableitungen automatisch ein.
y.backward().grad auslesen
Nach backward() enthält jeder Eingabetensor seinen Gradienten in .grad. Für y = sum(x^2) ist die Ableitung 2x, daher lautet der Gradient [4, 6].
print(x.grad) # tensor([4., 6.])Gradienten sammeln sich an
Ein wichtiger Stolperstein: Gradienten addieren sich über mehrere Aufrufe von backward(). In einer Trainingsschleife müssen Sie sie in jedem Schritt mit x.grad.zero_() oder dem zero_grad() des Optimizers auf null setzen.
x.grad.zero_() # reset before the next backward()torch.no_grad() für die Inferenz
Während der Inferenz benötigen Sie keine Gradienten, und ihre Verfolgung verschwendet Speicher. Umschließen Sie den Vorhersagecode mit with torch.no_grad():, um das Erstellen des Graphen zu deaktivieren und die Ausführung zu beschleunigen.
with torch.no_grad():
preds = x.pow(2).sum()
print(preds.requires_grad) # Falsedetach() beendet den Gradientenfluss
.detach() gibt einen Tensor zurück, der dieselben Daten verwendet, aber aus dem Berechnungsgraphen entfernt ist. Verwenden Sie ihn, um einen Wert zu nutzen, ohne dass Gradienten durch ihn zurückfließen, beispielsweise zum Protokollieren oder zum Einfrieren eines Teils des Netzes.
z = x.detach()
print(z.requires_grad) # FalseWarum Autograd wichtig ist
Autograd macht Deep Learning erst praxistauglich: Sie definieren die Vorwärtsberechnung, und PyTorch leitet die Gradienten für die Backpropagation automatisch her. Jede Trainingsschleife, die Sie schreiben, basiert auf requires_grad, backward und .grad.
Kurzer Test
Testen Sie Ihr Verständnis von Autograd.
Zusammenfassung: Tensoren und Autograd
Sie haben Tensoren mit torch.tensor erstellt und die Gradientenverfolgung über requires_grad=True aktiviert. Sie haben eine Ausgabe berechnet, .backward() ausgeführt und die Ableitungen aus .grad ausgelesen. Sie haben gelernt, dass sich Gradienten ansammeln, torch.no_grad() für die Inferenz verwendet und mit .detach() den Gradientenfluss unterbrochen.
Häufig gestellte Fragen
Ist die Lektion „PyTorch-Tensoren und Autograd“ kostenlos?
Ja — der vollständige Text von „PyTorch-Tensoren und Autograd“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „PyTorch-Tensoren und Autograd“?
torch.Tensor, requires_grad, backward(), Gradientenberechnung, Tensoroperationen. Du übst Learn AI with Python 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 Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python 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 1 von 4.
Wie lange dauert die Lektion „PyTorch-Tensoren und Autograd“?
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 Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-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
- PyTorch-Tensoren und Autograd
- Benutzerdefinierte Datasets und DataLoader
- CNNs in PyTorch erstellen und trainieren
- Objekterkennung mit YOLOv8