Deep Learning Academy · Lektion

Læs og nulstil .grad

Hvorfor gradienter akkumuleres og skal nulstilles.

Lektion 3 af 413 trin

Læs og nulstil .grad er en gratis Deep Learning Academy-lektion på CoddyKit. Dette er lektion 3 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.

Attributten .grad

Efter backward gemmer hver trænet tensor sin gradient i .grad. Når du læser den, kan du se, hvordan tabet reagerer på ændringer i den pågældende tensor.

print(weight.grad)

Gradienter starter som None

Før det første backward-kald er .grad None, ikke nul. PyTorch opretter den først, når det første sæt gradienter faktisk ankommer.

Gradienter akkumuleres

Her kommer overraskelsen: backward lægger til .grad i stedet for at erstatte den. Kalder du backward to gange uden at rydde op, hober tallene sig op.

Hvorfor akkumulering findes

Denne adfærd med at lægge sammen er tilsigtet. Den lader dig summere gradienter fra flere minibatches før én opdatering, hvilket er praktisk, når du vil simulere en større batch.

Den skjulte fejl

Hvis du glemmer at rydde op, ødelægger gamle gradienter dit næste trin, så modellen træner på de forkerte tal. Denne stille fejl rammer næsten alle mindst én gang.

Nulstil dem ved hvert trin

Løsningen er at nulstille gradienterne før hver backward. Med en optimeringsalgoritme kalder du blot zero_grad() øverst i hvert træningstrin.

optimizer.zero_grad()

Den rigtige rækkefølge

Løkkens rytme ligger fast: zero_grad, fremadberegning, tab, backward, step. Når du nulstiller først, bruger hvert trin kun gradienterne fra denne batch.

optimizer.zero_grad()
loss.backward()
optimizer.step()

Ryd op uden en optimeringsalgoritme

Har du endnu ingen optimeringsalgoritme? Du kan selv nulstille gradienterne ved at sætte hver tensors .grad tilbage til None før det næste backward-kald.

w.grad = None

set_to_none er billigere

Nyere kode foretrækker zero_grad(set_to_none=True). Når gradienterne sættes til None i stedet for at blive udfyldt med nuller, sparer du lidt hukommelse og tid.

Læs gradienter for at fejlfinde

Det er fremragende til fejlretning at kigge på .grad. Kun nuller kan betyde en død neuron, og meget store værdier advarer om eksploderende gradienter, før træningen går galt.

En vane, der er værd at opbygge

Gør det automatisk at nulstille i dit hoved. Alle pålidelige træningsløkker rydder gradienterne først, så modellen kun lærer fra den aktuelle batch.

Hurtigt tjek

Tjek, om du har forstået faldgruben ved akkumulering.

Opsummering

Gradienter ligger i .grad og akkumuleres på tværs af backward-kald, så du skal rydde dem ved hvert trin med zero_grad. Hvis du glemmer det, ødelægger det ubemærket træningen. 🧹

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 “Læs og nulstil .grad” gratis?

Ja — hele teksten til “Læs og nulstil .grad” 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 “Læs og nulstil .grad”?

Hvorfor gradienter akkumuleres og skal nulstilles. 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 3 af 4.

Hvor lang tid tager lektionen “Læs og nulstil .grad”?

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. requires_grad og beregningsgrafen
  2. Kald backward() for at hente gradienter
  3. Læs og nulstil .grad
  4. torch.no_grad() til inferens
← Tilbage til Deep Learning Academy