Leer AI met Python · Les

Aangepaste datasets en DataLoaders

torch.utils.data.Dataset, __len__/__getitem__, DataLoader, transforms, augmentatie.

Les 2 van 413 stappen

Aangepaste datasets en DataLoaders is een gratis Leer AI met Python-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.

Gegevens aan een model doorgeven

Voor training heb je een efficiënte manier nodig om gegevens te lezen, te transformeren en in batches te verdelen. PyTorch biedt twee abstracties: Dataset (weet hoe het één voorbeeld ophaalt) en DataLoader (maakt batches en husselt ze).

from torch.utils.data import Dataset, DataLoader

De Dataset-interface

Een aangepaste subklasse van Dataset moet twee methoden implementeren: __len__ (hoeveel voorbeelden er zijn) en __getitem__ (het voorbeeld op een index retourneren). PyTorch gebruikt deze om gegevens op te halen.

__len__ implementeren

__len__ vertelt PyTorch hoe groot de gegevensverzameling is, zodat het weet hoeveel indexen er bestaan en hoeveel batches een epoch bevat.

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

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

__getitem__ implementeren

__getitem__ laadt en retourneert één voorbeeld (en het bijbehorende label) voor een bepaalde index. Hier open je een afbeeldingsbestand en zet je het om in een tensor.

from PIL import Image

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

Waarom transformaties?

Ruwe afbeeldingen verschillen in grootte en pixelbereik. Transformaties brengen ze op een gestandaardiseerde manier: wijzig het formaat naar vaste afmetingen, zet ze om in een tensor en normaliseer de pixelwaarden zodat het model stabiel traint.

from torchvision import transforms

transforms.Compose

transforms.Compose koppelt verschillende transformaties in één verwerkingsketen die ze in de gegeven volgorde toepast. Een gebruikelijke keten is Resize, daarna ToTensor en vervolgens 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])
])

De transformaties begrijpen

Resize legt de ruimtelijke afmetingen vast; ToTensor zet een PIL-afbeelding om in een tensor en schaalt pixels naar [0,1]; Normalize verschuift en schaalt elk kanaal naar een gemiddelde van nul en een variantie van één, wat de convergentie versnelt.

Transformaties toepassen in de Dataset

Geef de transformatie door aan de gegevensverzameling en pas deze toe binnen __getitem__, zodat elk voorbeeld tijdens het ophalen op dezelfde manier wordt voorbewerkt.

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 een DataLoader verpakken

De DataLoader zet een Dataset om in een itereerbare verzameling batches. Stel batch_size in om het aantal voorbeelden per stap te bepalen en gebruik shuffle=True om de volgorde bij elke epoch willekeurig te maken (belangrijk tijdens training).

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

num_workers voor snelheid

num_workers start parallelle subprocessen die gegevens laden en transformeren terwijl de GPU traint, zodat I/O-latentie wordt verborgen. Een waarde zoals 4 houdt de GPU vaak aan het werk in plaats van te laten wachten.

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

Door batches itereren

Doorloop de DataLoader om tensoren in batches te ontvangen. Elke iteratie levert (images, labels), waarbij images de vorm [batch_size, channels, H, W] heeft en klaar is voor het model.

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

Korte toets

Toets je kennis van de gegevensverwerkingsketen.

Samenvatting: Datasets en DataLoaders

Je hebt een aangepaste Dataset gebouwd met __len__ en __getitem__, afbeeldingen voorbewerkt met transforms.Compose (Resize, ToTensor, Normalize) en deze verpakt in een DataLoader met batch_size, shuffle en num_workers om efficiënt batches aan je model te leveren.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
53
Lessen
225

Veelgestelde vragen

Is de les “Aangepaste datasets en DataLoaders” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “Aangepaste datasets en DataLoaders”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.

Wat leer ik in “Aangepaste datasets en DataLoaders”?

torch.utils.data.Dataset, __len__/__getitem__, DataLoader, transforms, augmentatie. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Leer AI met Python te beginnen?

Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Aangepaste datasets en DataLoaders”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?

Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. PyTorch-tensors en Autograd
  2. Aangepaste datasets en DataLoaders
  3. CNN's bouwen en trainen in PyTorch
  4. Objectdetectie met YOLOv8
← Terug naar Leer AI met Python