CNNs in PyTorch erstellen und trainieren
nn.Conv2d, nn.MaxPool2d, nn.Linear, Trainingsschleife, Optimizer, Loss, Verfolgen der Genauigkeit.
CNNs in PyTorch erstellen und trainieren ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Warum CNNs für Bilder?
Faltungsneuronale Netze lernen räumliche Muster: Kanten, Texturen und anschließend Formen und Objekte. Faltungen verwenden gemeinsame Gewichte im gesamten Bild. Dadurch sind CNNs effizient und translationsbewusst und bilden das Rückgrat der Computer Vision.
import torch
import torch.nn as nnDie Basisklasse nn.Module
Modelle leiten sich von nn.Module ab. Sie definieren die Layer in __init__ und den Datenfluss in forward. PyTorch verfolgt Parameter und Gradienten automatisch.
class CNN(nn.Module):
def __init__(self):
super().__init__()Faltungsschichten
nn.Conv2d(in_channels, out_channels, kernel_size) verschiebt lernbare Filter über das Bild, um Feature-Maps zu erzeugen. Die erste Faltung verarbeitet 3 Kanäle (RGB) und gibt mehrere Kanäle aus, die verschiedene Merkmale erfassen.
self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(16, 32, kernel_size=3, padding=1)Pooling-Schichten
nn.MaxPool2d verkleinert Feature-Maps, indem es in jedem Fenster den Maximalwert beibehält. Dadurch wird die räumliche Größe reduziert, der Rechenaufwand verringert und eine gewisse Translationsinvarianz hinzugefügt.
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)Vollständig verbundene Schichten
Nach den Faltungen wandeln Sie die Features in einen Vektor um und führen sie durch nn.Linear-Schichten, um Klassenwerte zu erzeugen. Die abschließende Linear-Schicht gibt einen Wert pro Klasse aus.
self.fc1 = nn.Linear(32 * 8 * 8, 128)
self.fc2 = nn.Linear(128, 10) # 10 classesDie forward-Methode
Die Methode forward legt fest, wie die Daten fließen: Faltung, ReLU, Pooling, wiederholt, anschließend Umwandlung in einen Vektor und Weitergabe an die linearen Schichten. F.relu fügt die Nichtlinearität hinzu, mit der das Netz komplexe Muster lernen kann.
import torch.nn.functional as F
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(x.size(0), -1) # flatten
x = F.relu(self.fc1(x))
return self.fc2(x)Loss und Optimizer
Verwenden Sie für Klassifikationsaufgaben CrossEntropyLoss. Ein Optimizer wie Adam aktualisiert die Gewichte anhand der Gradienten. Übergeben Sie die Modellparameter und eine Lernrate.
model = CNN()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)Die Trainingsschleife: Gradienten auf null setzen
Jeder Schritt beginnt damit, alte Gradienten mit optimizer.zero_grad() zu löschen. Wenn Sie das überspringen, sammeln sich die Gradienten über mehrere Batches hinweg an und verfälschen Ihre Aktualisierungen.
for images, labels in loader:
optimizer.zero_grad()Vorwärtsdurchlauf und Loss
Führen Sie den Batch durch das Modell, um Vorhersagen zu erhalten, und berechnen Sie anschließend den Loss, indem Sie die Vorhersagen mit den tatsächlichen Labels vergleichen. Der Loss ist eine einzelne Zahl, die angibt, wie falsch das Modell liegt.
outputs = model(images)
loss = criterion(outputs, labels)Backward und Step
loss.backward() berechnet die Gradienten mithilfe von Autograd, und optimizer.step() verändert die Gewichte leicht, um den Loss zu reduzieren. Zusammen bilden sie einen Lernschritt.
loss.backward()
optimizer.step()Genauigkeit verfolgen
Überwachen Sie den Fortschritt, indem Sie korrekte Vorhersagen zählen. Wenden Sie argmax auf die Ausgaben an, um die vorhergesagten Klassen zu erhalten, vergleichen Sie sie mit den Labels und teilen Sie die Treffer durch die Gesamtzahl.
preds = outputs.argmax(dim=1)
correct = (preds == labels).sum().item()
acc = correct / labels.size(0)
print("batch acc:", acc)Kurzer Test
Testen Sie Ihr Wissen über Trainingsschleifen.
Zusammenfassung: CNNs erstellen und trainieren
Sie haben ein CNN erstellt, indem Sie nn.Module mit nn.Conv2d-, nn.MaxPool2d- und nn.Linear-Schichten sowie einer forward-Methode abgeleitet haben. Sie haben es mit der folgenden Schleife trainiert: zero_grad, Vorwärtsdurchlauf, loss.backward(), optimizer.step(), und die Genauigkeit über argmax verfolgt.
Häufig gestellte Fragen
Ist die Lektion „CNNs in PyTorch erstellen und trainieren“ kostenlos?
Ja — der vollständige Text von „CNNs in PyTorch erstellen und trainieren“ 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 „CNNs in PyTorch erstellen und trainieren“?
nn.Conv2d, nn.MaxPool2d, nn.Linear, Trainingsschleife, Optimizer, Loss, Verfolgen der Genauigkeit. 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 3 von 4.
Wie lange dauert die Lektion „CNNs in PyTorch erstellen und trainieren“?
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