Impacchettare le sequenze e gestire il padding
Addestri in modo efficiente su lunghezze variabili
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. ✅
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
- Perché le sequenze hanno bisogno di memoria
- La cella RNN vanilla
- Gate LSTM e GRU
- Impacchettare le sequenze e gestire il padding