0Pricing
Deep Learning Academy · Lezione

collate_fn per input di lunghezza variabile

Completi con padding e impili campioni di lunghezza diversa

collate_fn per input di lunghezza variabile è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Quando i campioni non corrispondono

Per raggruppare i campioni in un batch, tutti devono avere la stessa forma. Tuttavia, frasi e clip audio hanno lunghezze diverse, quindi il passaggio collate predefinito non funziona. 🧩

Che cosa fa collate_fn

Il DataLoader raccoglie una lista di campioni e la passa a collate_fn, che li unisce in un unico batch. Per impostazione predefinita, si limita a impilare i tensori.

Gli input irregolari impediscono l'impilamento

Se prova a impilare una sequenza di lunghezza 5 e una di lunghezza 8, PyTorch genera un errore di forma. Le lunghezze irregolari sono proprio il caso che un collate personalizzato deve gestire.

Scrivere il proprio collate_fn

Passi una funzione all'argomento collate_fn del DataLoader. La funzione riceve una lista di campioni e restituisce la forma del batch prevista dal modello.

loader = DataLoader(ds, batch_size=4, collate_fn=my_collate)

Passaggio uno: separare la lista

All'interno della funzione, separi la lista di coppie in sequenze ed etichette distinte. Ora può gestire ogni gruppo separatamente prima di unirli.

def my_collate(batch):
    seqs, labels = zip(*batch)

Uniformare alla lunghezza maggiore

Il trucco per le lunghezze variabili è il padding: estenda ogni sequenza fino alla più lunga usando un valore di riempimento, così alla fine avranno tutte la stessa forma.

pad_sequence lo fa per Lei

PyTorch include pad_sequence, che porta una lista di tensori alla stessa lunghezza e li impila. Imposti batch_first per mettere per prima la dimensione del batch.

from torch.nn.utils.rnn import pad_sequence
padded = pad_sequence(seqs, batch_first=True)

Ricordare le lunghezze reali

Il padding aggiunge token fittizi, quindi restituisca anche la lunghezza reale di ogni sequenza. Il modello le usa per ignorare le posizioni riempite durante il forward pass.

lengths = torch.tensor([len(s) for s in seqs])

Impilare le etichette

Le etichette hanno in genere dimensioni fisse, quindi per loro è sufficiente un normale stack. Restituisca insieme gli input con padding, le lunghezze e le etichette impilate.

labels = torch.stack(labels)
return padded, lengths, labels

Mascherare il padding

In seguito, costruisca una mask a partire dalle lunghezze, in modo che la loss e l'attention saltino le posizioni riempite. Il padding uniforma la forma senza alterare i gradienti.

Una funzione, qualsiasi forma

Con un collate_fn personalizzato, lo stesso DataLoader gestisce testo, audio e grafi. Lei controlla esattamente come trasformare campioni eterogenei in un unico batch ordinato.

Controllo rapido

Perché le sequenze di lunghezza variabile hanno bisogno di un collate_fn personalizzato?

Riepilogo

Un collate_fn personalizzato trasforma una lista di campioni disomogenei in un unico batch, in genere aggiungendo padding alle sequenze fino alla stessa lunghezza e tenendo traccia delle loro dimensioni reali. 🎉

Domande Frequenti

La lezione «collate_fn per input di lunghezza variabile» è gratuita?

Sì — il testo completo di «collate_fn per input di lunghezza variabile» è 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 «collate_fn per input di lunghezza variabile»?

Completi con padding e impili campioni di lunghezza diversa 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 3 di 4.

Quanto tempo richiede la lezione «collate_fn per input di lunghezza variabile»?

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

  1. Scriva una classe Dataset personalizzata
  2. Batching, shuffle e num_workers
  3. collate_fn per input di lunghezza variabile
  4. Normalizzare e standardizzare gli input
← Torna a Deep Learning Academy