0Pricing
Deep Learning Academy · Lezione

torch.no_grad() per l'inferenza

Ignori il tracciamento del grafo per risparmiare memoria

torch.no_grad() per l'inferenza è 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.

Non ogni passaggio richiede gradienti

I gradienti servono solo durante l'addestramento. Quando desidera soltanto ottenere predizioni, tracciare il grafo è lavoro inutile, quindi PyTorch permette di disattivarlo. 🛑

Ecco torch.no_grad

Inserisca il codice in un blocco torch.no_grad() e autograd smetterà di registrare le operazioni al suo interno. Non viene costruito alcun grafo e non vengono memorizzati gradienti.

with torch.no_grad():
    preds = model(x)

Perché saltare il grafo

Costruire il grafo richiede memoria per ricordare ogni passaggio in vista di un passaggio backward che non avverrà mai. Durante l'inferenza, questo sovraccarico è puro spreco.

Più veloce e leggero

All'interno di no_grad, il passaggio forward usa meno memoria ed è leggermente più veloce. Con modelli grandi, questo permette di gestire batch più grandi quando si eseguono solo predizioni.

Gli output sono scollegati

I tensori creati all'interno del blocco hanno requires_grad impostato su false. Sono normali risultati che può stampare, salvare o convertire in NumPy senza problemi.

Lo usi per la valutazione

I cicli di validazione e di test dovrebbero sempre essere eseguiti all'interno di no_grad. Sta valutando il modello, non lo sta addestrando, quindi non c'è motivo di tracciare i gradienti.

with torch.no_grad():
    for x, y in val_loader:
        out = model(x)

Lo abbini alla modalità eval

Per l'inferenza, imposti model.eval() e racchiuda insieme le chiamate in no_grad. eval corregge il comportamento di livelli come dropout; no_grad interrompe il grafo. Risolvono problemi diversi.

È un gestore di contesto

no_grad influisce solo sul codice all'interno del blocco with. Una volta uscito, autograd riattiva automaticamente il tracciamento per il passaggio di addestramento successivo.

La forma decoratore

Può anche applicare il decoratore @torch.no_grad() a un'intera funzione. Ogni operazione sui tensori eseguita all'interno della funzione avverrà quindi senza costruire un grafo.

@torch.no_grad()
def predict(x):
    return model(x)

Scollegare un singolo tensore

Deve liberare dal grafo un solo tensore invece di un intero blocco? Chiami .detach() su di esso per ottenere una copia priva della cronologia dei gradienti.

frozen = output.detach()

Un'abitudine sicura e comune

Ricorra a no_grad ogni volta che non sta eseguendo apprendimento: durante l'inferenza, per le metriche o quando salva gli output. È una piccola modifica che consente di risparmiare silenziosamente memoria e tempo.

Verifica rapida

Confermi di sapere quando usare no_grad.

Riepilogo

Racchiuda l'inferenza in torch.no_grad() per evitare di costruire il grafo e risparmiare memoria e tempo. Lo abbini a model.eval() ogni volta che esegue predizioni invece di addestrare il modello. 🚀

Domande Frequenti

La lezione «torch.no_grad() per l'inferenza» è gratuita?

Sì — il testo completo di «torch.no_grad() per l'inferenza» è 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 «torch.no_grad() per l'inferenza»?

Ignori il tracciamento del grafo per risparmiare memoria 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 «torch.no_grad() per l'inferenza»?

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

  1. requires_grad e il grafo computazionale
  2. Chiami backward() per ottenere i gradienti
  3. Leggere e azzerare .grad
  4. torch.no_grad() per l'inferenza
← Torna a Deep Learning Academy