Een aangepaste datasetklasse schrijven
Implementeer __len__ en __getitem__.
Een aangepaste datasetklasse schrijven is een gratis Deep Learning Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Deep Learning Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Deep Learning Academy bevat in totaal 4 lessen.
Uw gegevens hebben een voordeur nodig
Voordat een model kan leren, heeft PyTorch een eenvoudige manier nodig om uw voorbeelden één voor één te benaderen. Die voordeur is een Dataset-klasse. 🚪
Begin met overerven
U bouwt een aangepaste dataset door overerving van torch.utils.data.Dataset. PyTorch weet dan precies hoe het uw object om gegevens moet vragen.
from torch.utils.data import Dataset
class MyData(Dataset):
passBewaar uw gegevens in __init__
De methode __init__ wordt één keer uitgevoerd wanneer u de dataset maakt. Gebruik deze om bestandspaden, matrices of labels in de velden van het object te laden.
def __init__(self, X, y):
self.X = X
self.y = yTwee methoden maken het werkend
Een werkende dataset heeft maar twee methoden nodig: __len__ om de omvang te melden en __getitem__ om één voorbeeld op te halen. Dat is de volledige overeenkomst.
__len__ telt uw voorbeelden
De methode __len__ geeft terug hoeveel voorbeelden u hebt. PyTorch gebruikt dit om te weten wanneer een epoch eindigt en hoe ver een index mag gaan.
def __len__(self):
return len(self.X)__getitem__ geeft één voorbeeld terug
Met een index als invoer geeft __getitem__ één voorbeeld terug, meestal een kenmerk met het bijbehorende label. Hier wordt één rij met gegevens doorgegeven.
def __getitem__(self, idx):
return self.X[idx], self.y[idx]Geef tensors terug, geen lijsten
__getitem__ moet tensors teruggeven, zodat het model ze direct kan gebruiken. Converteer NumPy-matrices of Python-lijsten hier als dat nodig is.
import torch
x = torch.tensor(self.X[idx], dtype=torch.float32)Lui laden voor grote gegevensverzamelingen
Laad bij zeer grote gegevensverzamelingen niet alles in __init__. Lees in plaats daarvan elk bestand in __getitem__, zodat er steeds maar één voorbeeld in het geheugen staat.
Transformaties per voorbeeld toepassen
__getitem__ is de logische plek om een transform toe te passen, bijvoorbeeld om een afbeelding van formaat te veranderen. Bewaar de transform in __init__ en roep deze aan voordat u het resultaat teruggeeft.
if self.transform:
x = self.transform(x)Gebruik het alsof het een lijst is
Eenmaal gebouwd gedraagt uw dataset zich als een lijst. Een aanroep van len(ds) of ds[0] activeert gewoon de twee methoden die u hebt gedefinieerd. Test dit vóór de training.
ds = MyData(X, y)
print(len(ds), ds[0])Nu past het overal in
Dankzij deze overzichtelijke interface past een aangepaste Dataset rechtstreeks in een DataLoader. U schrijft twee methoden en de rest van PyTorch werkt gewoon.
Korte controle
Welke methode roept PyTorch aan om één voorbeeld op basis van een index op te halen?
Samenvatting
Een aangepaste dataset erft van Dataset en definieert twee methoden: __len__ voor de omvang en __getitem__ om één voorbeeld terug te geven. Twee methoden, volledige kracht. 🎉
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
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Een aangepaste datasetklasse schrijven” gratis?
Ja — de volledige tekst van “Een aangepaste datasetklasse schrijven” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Deep Learning Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Deep Learning Academy bevat in totaal 4 lessen.
Wat leer ik in “Een aangepaste datasetklasse schrijven”?
Implementeer __len__ en __getitem__. Je oefent met Deep Learning Academy 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 Deep Learning Academy te beginnen?
Ervaring vooraf is niet nodig. Deep Learning Academy 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 1 van 4.
Hoe lang duurt de les “Een aangepaste datasetklasse schrijven”?
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 Deep Learning Academy?
Ja. Elke les over Deep Learning Academy 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
- Een aangepaste datasetklasse schrijven
- Batching, shuffling en num_workers
- collate_fn voor invoer met variabele lengte
- Invoer normaliseren en standaardiseren