Scriva una classe Dataset personalizzata
Implementi __len__ e __getitem__
Scriva una classe Dataset personalizzata è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Deep Learning Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Deep Learning Academy include 4 lezioni in totale.
I dati hanno bisogno di una porta d'ingresso
Prima che un modello possa imparare, PyTorch ha bisogno di un modo ordinato per accedere ai campioni uno alla volta. Questa porta d'ingresso è una classe Dataset. 🚪
Iniziare creando una sottoclasse
Crei un dataset personalizzato creando una sottoclasse di torch.utils.data.Dataset. In questo modo PyTorch sa esattamente come richiedere i dati al suo oggetto.
from torch.utils.data import Dataset
class MyData(Dataset):
passConservare i dati in __init__
Il metodo __init__ viene eseguito una volta quando crea il dataset. Lo usi per caricare percorsi di file, array o etichette nei campi dell'oggetto.
def __init__(self, X, y):
self.X = X
self.y = yDue metodi sono sufficienti
Un dataset funzionante ha bisogno solo di due metodi: __len__ per riportare la sua dimensione e __getitem__ per recuperare un campione. Questo è l'intero contratto.
__len__ conta i campioni
Il metodo __len__ restituisce il numero di campioni disponibili. PyTorch lo legge per sapere quando termina un'epoca e fin dove può arrivare un indice.
def __len__(self):
return len(self.X)__getitem__ restituisce un campione
Dato un indice, __getitem__ restituisce un singolo campione, in genere una caratteristica e la relativa etichetta. Qui viene restituita una riga di dati.
def __getitem__(self, idx):
return self.X[idx], self.y[idx]Restituire tensori, non liste
__getitem__ dovrebbe restituire dei tensori, così il modello può utilizzarli direttamente. Se necessario, converta qui gli array NumPy o le liste Python.
import torch
x = torch.tensor(self.X[idx], dtype=torch.float32)Caricamento differito per grandi quantità di dati
Per dataset molto grandi, non carichi tutto in __init__. Legga invece ogni file all'interno di __getitem__, così in memoria si trova un solo campione alla volta.
Applicare le trasformazioni a ogni campione
__getitem__ è il punto naturale in cui applicare un transform, ad esempio per ridimensionare un'immagine. Conservi la trasformazione in __init__, quindi la richiami prima di restituire il campione.
if self.transform:
x = self.transform(x)Indicizzarlo come una lista
Una volta creato, il dataset si comporta come una lista. Chiamare len(ds) o ds[0] attiva semplicemente i due metodi definiti. Lo verifichi prima dell'addestramento.
ds = MyData(X, y)
print(len(ds), ds[0])Ora si integra con tutto
Questa interfaccia ordinata permette a un Dataset personalizzato di integrarsi direttamente in un DataLoader. Lei scrive due metodi e il resto di PyTorch funziona automaticamente.
Controllo rapido
Quale metodo chiama PyTorch per recuperare un singolo campione tramite il suo indice?
Riepilogo
Un dataset personalizzato crea una sottoclasse di Dataset e definisce due metodi: __len__ per la dimensione e __getitem__ per restituire un campione. Due metodi, tutta la potenza. 🎉
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Scriva una classe Dataset personalizzata» è gratuita?
Sì — il testo completo di «Scriva una classe Dataset personalizzata» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Deep Learning Academy, passa a CoddyKit PRO. Il corso Deep Learning Academy include 4 lezioni in totale.
Cosa imparerò in «Scriva una classe Dataset personalizzata»?
Implementi __len__ e __getitem__ Eserciti Deep Learning Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Deep Learning Academy?
Non è richiesta alcuna esperienza precedente. Deep Learning Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Scriva una classe Dataset personalizzata»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Deep Learning Academy?
Sì. Ogni lezione Deep Learning Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Scriva una classe Dataset personalizzata
- Batching, shuffle e num_workers
- collate_fn per input di lunghezza variabile
- Normalizzare e standardizzare gli input