0Pricing
Learn AI with Python · Lektion

Benutzerdefinierte Datasets und DataLoader

torch.utils.data.Dataset, __len__/__getitem__, DataLoader, Transforms, Datenaugmentation.

Benutzerdefinierte Datasets und DataLoader ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 2 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.

Daten in ein Modell einspeisen

Für das Training benötigen Sie eine effiziente Möglichkeit, Daten einzulesen, umzuwandeln und zu Batches zusammenzufassen. PyTorch stellt dafür zwei Abstraktionen bereit: Dataset (weiß, wie ein einzelnes Beispiel abgerufen wird) und DataLoader (bildet daraus Batches und mischt sie).

from torch.utils.data import Dataset, DataLoader

Die Dataset-Schnittstelle

Eine benutzerdefinierte Unterklasse von Dataset muss zwei Methoden implementieren: __len__ (wie viele Beispiele vorhanden sind) und __getitem__ (gibt das Beispiel an einem Index zurück). PyTorch ruft diese Methoden auf, um Daten abzurufen.

__len__ implementieren

__len__ teilt PyTorch die Größe des Datensatzes mit. So weiß PyTorch, wie viele Indizes vorhanden sind und wie viele Batches eine Epoche enthält.

class ImageDataset(Dataset):
    def __init__(self, paths, labels):
        self.paths = paths
        self.labels = labels

    def __len__(self):
        return len(self.paths)

__getitem__ implementieren

__getitem__ lädt anhand eines Index ein Beispiel (und dessen Label) und gibt es zurück. Hier öffnen Sie beispielsweise eine Bilddatei und wandeln sie in einen Tensor um.

from PIL import Image

    def __getitem__(self, idx):
        img = Image.open(self.paths[idx]).convert("RGB")
        label = self.labels[idx]
        return img, label

Warum Transformationen?

Rohbilder unterscheiden sich in Größe und Pixelbereich. Transformationen vereinheitlichen sie: Sie skalieren sie auf eine feste Form, wandeln sie in einen Tensor um und normalisieren die Pixelwerte, damit das Modell stabil trainiert.

from torchvision import transforms

transforms.Compose

transforms.Compose verknüpft mehrere Transformationen zu einer Pipeline, die sie der Reihe nach anwendet. Eine typische Kette besteht aus Resize, dann ToTensor und anschließend Normalize.

tf = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406],
                         std=[0.229, 0.224, 0.225])
])

Die Transformationen verstehen

Resize legt die räumliche Größe fest; ToTensor wandelt ein PIL-Bild in einen Tensor um und skaliert die Pixel auf [0,1]; Normalize verschiebt und skaliert jeden Kanal auf Mittelwert null und Einheitsvarianz, was die Konvergenz beschleunigt.

Transformationen im Dataset anwenden

Übergeben Sie die Transformation an das Dataset und wenden Sie sie innerhalb von __getitem__ an, damit jedes Beispiel beim Abruf einheitlich vorverarbeitet wird.

class ImageDataset(Dataset):
    def __init__(self, paths, labels, transform):
        self.paths, self.labels, self.transform = paths, labels, transform

    def __getitem__(self, idx):
        img = Image.open(self.paths[idx]).convert("RGB")
        return self.transform(img), self.labels[idx]

In einen DataLoader verpacken

Der DataLoader wandelt ein Dataset in eine iterierbare Folge von Batches um. Legen Sie mit batch_size fest, wie viele Beispiele pro Schritt verarbeitet werden, und verwenden Sie shuffle=True, um die Reihenfolge in jeder Epoche zufällig zu mischen (beim Training wichtig).

dataset = ImageDataset(paths, labels, tf)
loader = DataLoader(dataset, batch_size=32, shuffle=True)

num_workers für mehr Geschwindigkeit

num_workers startet parallele Unterprozesse, die Daten laden und transformieren, während die GPU trainiert, und verbirgt so die I/O-Latenz. Ein Wert wie 4 hält die GPU oft beschäftigt, statt sie warten zu lassen.

loader = DataLoader(
    dataset,
    batch_size=32,
    shuffle=True,
    num_workers=4
)

Batches durchlaufen

Durchlaufen Sie den DataLoader in einer Schleife, um Tensoren in Batches zu erhalten. Jede Iteration liefert (images, labels), wobei images die Form [batch_size, channels, H, W] hat und für das Modell bereit ist.

for images, labels in loader:
    print(images.shape)  # torch.Size([32, 3, 224, 224])
    break

Kurzer Test

Testen Sie Ihr Wissen über Datenpipelines.

Zusammenfassung: Datasets und DataLoaders

Sie haben ein benutzerdefiniertes Dataset mit __len__ und __getitem__ erstellt, Bilder mit transforms.Compose (Resize, ToTensor, Normalize) vorverarbeitet und es mit batch_size, shuffle und num_workers in einen DataLoader verpackt, um Ihr Modell effizient mit Batches zu versorgen.

Häufig gestellte Fragen

Ist die Lektion „Benutzerdefinierte Datasets und DataLoader“ kostenlos?

Ja — der vollständige Text von „Benutzerdefinierte Datasets und DataLoader“ 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 „Benutzerdefinierte Datasets und DataLoader“?

torch.utils.data.Dataset, __len__/__getitem__, DataLoader, Transforms, Datenaugmentation. 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 2 von 4.

Wie lange dauert die Lektion „Benutzerdefinierte Datasets und DataLoader“?

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

  1. PyTorch-Tensoren und Autograd
  2. Benutzerdefinierte Datasets und DataLoader
  3. CNNs in PyTorch erstellen und trainieren
  4. Objekterkennung mit YOLOv8
← Zurück zu Learn AI with Python