Batching, shuffling og num_workers
Konfigurér en DataLoader til højere hastighed.
Batching, shuffling og num_workers er en gratis Deep Learning Academy-lektion på CoddyKit. Dette er lektion 2 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.
Mød DataLoader
Et datasæt afleverer ét eksempel ad gangen, men træning kræver grupper. DataLoader pakker dit datasæt ind og leverer det i praktiske batches. 📦
from torch.utils.data import DataLoader
loader = DataLoader(ds)Batchinddeling sparer tid
Angiv batch_size, så samler indlæseren det angivne antal eksempler i én tensor. Større batches udnytter din hardware bedre og udjævner støjende opdateringer.
loader = DataLoader(ds, batch_size=32)Ét batch samlet i en tensor
Hvert batch tilføjer en ny første dimension. 32 eksempler med formen 784 bliver til én tensor med formen 32 gange 784, klar til modellen.
Gå gennem batches
Du gennemløber indlæseren som enhver anden Python-sekvens. Ved hver gentagelse af løkken får du ét batch med input og etiketter til dit træningstrin.
for xb, yb in loader:
pred = model(xb)Bland ved hver epoke
Hvis du indstiller shuffle til True, omarrangeres eksemplerne ved hver epoke. Det fjerner utilsigtet rækkefølge, så modellen ikke kan huske rækkefølgen af dine data.
loader = DataLoader(ds, batch_size=32, shuffle=True)Bland træning, ikke test
Slå blanding til for træningssættet, men fra for validering og test. Evaluering måler kun ydeevnen, så en stabil rækkefølge er fin dér.
num_workers indlæser parallelt
Læsning og afkodning af data kan få GPU'en til at vente. Hvis du indstiller num_workers til mere end nul, oprettes hjælpeprocesser, der forbereder det næste batch, mens modellen trænes.
loader = DataLoader(ds, batch_size=32, num_workers=4)Vælg et fornuftigt antal arbejdere
Et almindeligt udgangspunkt for num_workers er det antal CPU-kerner, du har. For mange kan belaste hukommelsen unødigt, så mål i stedet for at gætte.
pin_memory gør GPU-kopiering hurtigere
Når du træner på en GPU, skal du indstille pin_memory til True. Det placerer batches i låst hukommelse, så overførsler til enheden bliver mærkbart hurtigere.
loader = DataLoader(ds, batch_size=32, pin_memory=True)Håndter det sidste batch
Det sidste batch er ofte mindre end resten. Brug drop_last True til at kassere det, når din model kræver, at alle batches har samme størrelse.
loader = DataLoader(ds, batch_size=32, drop_last=True)Én indlæser pr. delmængde
I praksis opretter du en separat loader til træning, validering og test. Hver får sine egne indstillinger, f.eks. blanding kun ved træning.
Hurtigt tjek
Hvad gør det faktisk at indstille num_workers til mere end nul?
Opsummering
En DataLoader opdeler dit datasæt i batches, blander træningsdata og bruger num_workers til at indlæse batches parallelt. Den holder din model forsynet med data og kørende hurtigt. 🎉
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 “Batching, shuffling og num_workers” gratis?
Ja — hele teksten til “Batching, shuffling og num_workers” 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 “Batching, shuffling og num_workers”?
Konfigurér en DataLoader til højere hastighed. 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 2 af 4.
Hvor lang tid tager lektionen “Batching, shuffling og num_workers”?
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
- Skriv en brugerdefineret Dataset-klasse
- Batching, shuffling og num_workers
- collate_fn til input med variabel længde
- Normalisér og standardisér input