Pak sekvenser, og håndtér padding
Træn effektivt på sekvenser med variabel længde.
Pak sekvenser, og håndtér padding er en gratis Deep Learning Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Deep Learning Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Deep Learning Academy-kurset indeholder 4 lektioner i alt.
Batcher vil have rektangler
For at behandle mange sekvenser på én gang skal et batch være et pænt rektangel. Men virkelige sætninger har forskellige længder, så de passer ikke sammen.
Udfyldning til en fælles længde
Løsningen er udfyldning: Tilføj udfyldningstokens, normalt nuller, til korte sekvenser, så hver række i batchen har samme længde.
Hjælpefunktionen pad_sequence
PyTorch's pad_sequence samler en liste med tensorer af variabel længde i ét udfyldt batch med ét enkelt kald.
from torch.nn.utils.rnn import pad_sequence
batch = pad_sequence(seqs, batch_first=True)Udfyldning spilder beregning
Disse udfyldningstokens er kunstige. Hvis RNN'et alligevel behandler dem, spilder det beregningskraft, og udfyldningen kan forurene den skjulte tilstand.
Hold styr på de rigtige længder
Registrer hver sekvens' faktiske længde, før du udfylder dem. Du giver disse længder videre til PyTorch, så det ved, hvor de rigtige data slutter.
lengths = [len(s) for s in seqs]Pak batchen
pack_padded_sequence omdanner det udfyldte batch og længderne til et kompakt format, som RNN'et kan køre uden at berøre udfyldningen.
packed = pack_padded_sequence(batch, lengths, batch_first=True)Kør RNN'et på pakkede data
Send det pakkede objekt direkte ind i nn.LSTM eller nn.GRU. Cellen springer udfyldte trin over, så hukommelsen forbliver ren og tydelig.
out_packed, h_n = lstm(packed)Pak uddata ud
Hvis du vil læse uddata for hvert trin igen, skal du kalde pad_packed_sequence for at gendanne den rektangulære, udfyldte form, efter at RNN'et er færdigt.
out, lengths = pad_packed_sequence(out_packed, batch_first=True)Sortér efter længde
Klassisk pakning kræver, at sekvenserne er sorteret med den længste først. Sæt enforce_sorted til False, så håndterer PyTorch batcher i vilkårlig rækkefølge for dig.
Maskér fejlen
Selv med pakning skal du ignorere udfyldte positioner ved evalueringen. En maske eller ignore_index holder kunstige tokens ude af fejlen.
loss_fn = nn.CrossEntropyLoss(ignore_index=PAD_ID)Kobl det til DataLoader
Udfør udfyldningen i en tilpasset collate_fn, så hvert batch allerede ankommer udfyldt med længder klar til pakning.
Hurtigt tjek
Hvorfor pakker man et udfyldt batch, før det sendes ind i et RNN?
Opsummering
Udfyld for at justere et batch, hold styr på de rigtige længder, og pak derefter, så RNN'et ignorerer udfyldningen. Maskér også udfyldte tokens i fejlen. ✅
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Pak sekvenser, og håndtér padding” gratis?
Ja — hele teksten til “Pak sekvenser, og håndtér padding” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Deep Learning Academy-kurset, skal du opgradere til CoddyKit PRO. Deep Learning Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Pak sekvenser, og håndtér padding”?
Træn effektivt på sekvenser med variabel længde. Du øver dig i Deep Learning Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Deep Learning Academy?
Der kræves ingen tidligere erfaring. Deep Learning Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Pak sekvenser, og håndtér padding”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Deep Learning Academy-lektion?
Ja. Alle Deep Learning Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Hvorfor sekvenser har brug for hukommelse
- Den klassiske RNN-celle
- LSTM- og GRU-gates
- Pak sekvenser, og håndtér padding