Deep Learning Academy · Lezione

Impacchettare le sequenze e gestire il padding

Addestri in modo efficiente su lunghezze variabili

Lezione 4 di 413 passaggi

Impacchettare le sequenze e gestire il padding è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 4 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 batch vogliono rettangoli

Per elaborare più sequenze contemporaneamente, un batch deve essere un rettangolo ordinato. Tuttavia, le frasi reali hanno lunghezze diverse e quindi non si allineano.

Padding a una lunghezza comune

La soluzione è il padding: aggiungere token di riempimento, solitamente zeri, alle sequenze più brevi, così ogni riga del batch ha la stessa lunghezza.

L'helper pad_sequence

pad_sequence di PyTorch impila un elenco di tensori di lunghezza variabile in un unico batch con padding, con una sola chiamata.

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

Il padding spreca calcolo

Quei token di riempimento sono fittizi. Se la RNN li elabora comunque, spreca risorse di calcolo e può lasciare che il padding contamini lo stato nascosto.

Tracciare le lunghezze reali

Prima del padding, registri la lunghezza effettiva di ogni sequenza. Fornirà queste lunghezze a PyTorch, che saprà così dove terminano i dati reali.

lengths = [len(s) for s in seqs]

Impacchettare il batch

pack_padded_sequence trasforma il batch con padding e le relative lunghezze in un formato compatto che la RNN può eseguire senza toccare il padding.

packed = pack_padded_sequence(batch, lengths, batch_first=True)

Eseguire la RNN sui dati impacchettati

Fornisca l'oggetto impacchettato direttamente a nn.LSTM o nn.GRU. La cella salta i passaggi con padding, mantenendo la memoria pulita e corretta.

out_packed, h_n = lstm(packed)

Disimpacchettare l'output

Per leggere di nuovo gli output di ogni passaggio, chiami pad_packed_sequence e ripristini la forma rettangolare con padding al termine dell'esecuzione della RNN.

out, lengths = pad_packed_sequence(out_packed, batch_first=True)

Ordinare per lunghezza

L'impacchettamento classico richiede che le sequenze siano ordinate dalla più lunga alla più breve. Imposti enforce_sorted su False e PyTorch gestirà per Lei i batch non ordinati.

Mascherare la loss

Anche usando l'impacchettamento, ignori le posizioni con padding durante la valutazione. Una mask o ignore_index impedisce ai token fittizi di influire sulla loss.

loss_fn = nn.CrossEntropyLoss(ignore_index=PAD_ID)

Integrarlo nel DataLoader

Esegua il padding all'interno di un collate_fn personalizzato, così ogni batch arriverà già sottoposto a padding, con le lunghezze pronte per l'impacchettamento.

Controllo rapido

Perché si impacchetta un batch con padding prima di fornirlo a una RNN?

Riepilogo

Applichi il padding per allineare un batch, tenga traccia delle lunghezze reali, poi lo impacchetti affinché la RNN ignori il riempimento. Mascheri anche i token con padding nella loss. ✅

Gratis per iniziare

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 «Impacchettare le sequenze e gestire il padding» è gratuita?

Sì — il testo completo di «Impacchettare le sequenze e gestire il padding» è 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 «Impacchettare le sequenze e gestire il padding»?

Addestri in modo efficiente su lunghezze variabili 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 4 di 4.

Quanto tempo richiede la lezione «Impacchettare le sequenze e gestire il padding»?

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. Perché le sequenze hanno bisogno di memoria
  2. La cella RNN vanilla
  3. Gate LSTM e GRU
  4. Impacchettare le sequenze e gestire il padding
← Torna a Deep Learning Academy