Deep Learning Academy · Lektion

Pak sekvenser, og håndtér padding

Træn effektivt på sekvenser med variabel længde.

Lektion 4 af 413 trin

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. ✅

Gratis at komme i gang

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

  1. Hvorfor sekvenser har brug for hukommelse
  2. Den klassiske RNN-celle
  3. LSTM- og GRU-gates
  4. Pak sekvenser, og håndtér padding
← Tilbage til Deep Learning Academy