Skriv en anpassad Dataset-klass
Implementera __len__ och __getitem__
Skriv en anpassad Dataset-klass är en gratis lektion i Deep Learning Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Deep Learning Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Deep Learning Academy innehåller totalt 4 lektioner.
Dina data behöver en ingång
Innan en modell kan lära sig behöver PyTorch ett smidigt sätt att komma åt dina exempel ett i taget. Den ingången är en Dataset-klass. 🚪
Börja med att skapa en subklass
Du skapar ett anpassat dataset genom att skapa en subklass av torch.utils.data.Dataset. Då vet PyTorch exakt hur det ska be ditt objekt om data.
from torch.utils.data import Dataset
class MyData(Dataset):
passLagra dina data i __init__
Metoden __init__ körs en gång när du skapar datasetet. Använd den för att läsa in filsökvägar, arrayer eller etiketter i objektets fält.
def __init__(self, X, y):
self.X = X
self.y = yTvå metoder får det att fungera
Ett fungerande dataset behöver bara två metoder: __len__ för att rapportera storleken och __getitem__ för att hämta ett exempel. Det är hela gränssnittet.
__len__ räknar dina exempel
Metoden __len__ returnerar hur många exempel du har. PyTorch använder detta för att veta när en epok slutar och hur långt ett index får gå.
def __len__(self):
return len(self.X)__getitem__ returnerar ett exempel
Givet ett index returnerar __getitem__ ett enskilt exempel, vanligtvis ett särdrag och dess etikett. Här lämnas en rad data över.
def __getitem__(self, idx):
return self.X[idx], self.y[idx]Returnera tensorer, inte listor
__getitem__ bör returnera tensorer så att modellen kan använda dem direkt. Konvertera NumPy-arrayer eller Python-listor här om det behövs.
import torch
x = torch.tensor(self.X[idx], dtype=torch.float32)Lazy loading för stora datamängder
För mycket stora datamängder ska du inte läsa in allt i __init__. Läs i stället varje fil inuti __getitem__, så att bara ett exempel åt gången finns i minnet.
Använd transformeringar per exempel
__getitem__ är den naturliga platsen för att tillämpa en transform, till exempel ändra storleken på en bild. Spara transformeringen i __init__ och anropa den innan du returnerar resultatet.
if self.transform:
x = self.transform(x)Indexera det som en lista
När datasetet är skapat fungerar det som en lista. Ett anrop till len(ds) eller ds[0] aktiverar helt enkelt de två metoder du definierade. Testa det före träningen.
ds = MyData(X, y)
print(len(ds), ds[0])Nu kan det kopplas in överallt
Detta tydliga gränssnitt är anledningen till att ett anpassat Dataset kan användas direkt i en DataLoader. Du skriver två metoder och resten av PyTorch fungerar automatiskt.
Snabb kontroll
Vilken metod anropar PyTorch för att hämta ett enskilt exempel med hjälp av dess index?
Sammanfattning
Ett anpassat dataset skapar en subklass av Dataset och definierar två metoder: __len__ för storleken och __getitem__ för att returnera ett exempel. Två metoder, full kraft. 🎉
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Skriv en anpassad Dataset-klass” gratis?
Ja – hela texten till ”Skriv en anpassad Dataset-klass” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Deep Learning Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Deep Learning Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skriv en anpassad Dataset-klass”?
Implementera __len__ och __getitem__ Ni övar på Deep Learning Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Deep Learning Academy?
Du behöver inga förkunskaper. Utbildningen i Deep Learning Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Skriv en anpassad Dataset-klass”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Deep Learning Academy-lektionen?
Ja. Varje Deep Learning Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skriv en anpassad Dataset-klass
- Batchning, blandning och num_workers
- collate_fn för indata med varierande längd
- Normalisera och standardisera indata