Tensori PyTorch e Autograd
torch.Tensor, requires_grad, backward(), calcolo dei gradienti, operazioni sui tensori
Tensori PyTorch e Autograd è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 1 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 Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Che cos'è PyTorch?
PyTorch è un framework per il deep learning basato sui tensori, array multidimensionali con accelerazione GPU e differenziazione automatica. I due pilastri che deve imparare a padroneggiare per primi sono i tensori e autograd.
pip install torch
import torchCreazione dei tensori
Un tensore è simile a un array NumPy, ma può risiedere su una GPU e tenere traccia dei gradienti. Ne crei uno con torch.tensor. I tensori hanno una shape e un dtype.
x = torch.tensor([1.0, 2.0, 3.0])
print(x.shape) # torch.Size([3])
print(x.dtype) # torch.float32Operazioni sui tensori
I tensori supportano operazioni matematiche elemento per elemento, moltiplicazione tra matrici e modifica della forma. Le operazioni sono vettorizzate ed eseguite rapidamente dall'hardware. Questa è la base computazionale di ogni rete neurale.
a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
b = torch.tensor([[5.0, 6.0], [7.0, 8.0]])
print(a + b)
print(a @ b) # matrix multiplyrequires_grad: tracciamento dei gradienti
Per calcolare i gradienti, crei un tensore con requires_grad=True. PyTorch registra quindi ogni operazione eseguita su di esso, costruendo un grafo computazionale che potrà differenziare in seguito.
x = torch.tensor([2.0, 3.0], requires_grad=True)
print(x.requires_grad) # TrueCostruzione di un calcolo
Applichi delle operazioni a un tensore che tiene traccia dei gradienti per produrre un output scalare. Qui eleviamo al quadrato ogni elemento e poi sommiamo, ottenendo un singolo numero rispetto al quale possiamo calcolare la derivata di x.
x = torch.tensor([2.0, 3.0], requires_grad=True)
y = x.pow(2).sum() # y = x0^2 + x1^2
print(y) # tensor(13., grad_fn=...)Chiamare backward()
Chiami .backward() su uno scalare per calcolare i gradienti tramite backpropagation. PyTorch percorre a ritroso il grafo registrato, calcolando automaticamente le derivate.
y.backward()Leggere .grad
Dopo backward(), ogni tensore di input contiene il proprio gradiente in .grad. Per y = sum(x^2), la derivata è 2x, quindi il gradiente è [4, 6].
print(x.grad) # tensor([4., 6.])I gradienti si accumulano
Un dettaglio insidioso: i gradienti si sommano dopo più chiamate a backward(). In un ciclo di addestramento deve azzerarli a ogni passaggio con x.grad.zero_() o con zero_grad() dell'ottimizzatore.
x.grad.zero_() # reset before the next backward()torch.no_grad() per l'inferenza
Durante l'inferenza non servono i gradienti e tenerne traccia spreca memoria. Racchiuda il codice di predizione in with torch.no_grad(): per disabilitare la costruzione del grafo e velocizzare l'esecuzione.
with torch.no_grad():
preds = x.pow(2).sum()
print(preds.requires_grad) # Falsedetach() per interrompere il flusso dei gradienti
.detach() restituisce un tensore che condivide i dati, ma viene escluso dal grafo computazionale. Lo utilizzi quando vuole usare un valore senza permettere ai gradienti di propagarsi all'indietro attraverso di esso, ad esempio per registrare informazioni o congelare una parte della rete.
z = x.detach()
print(z.requires_grad) # FalsePerché autograd è importante
Autograd rende pratico il deep learning: definisce il calcolo forward e PyTorch ricava automaticamente i gradienti per la backpropagation. Ogni ciclo di addestramento che scrive si basa su requires_grad, backward e .grad.
Verifica rapida
Metta alla prova la sua comprensione di autograd.
Riepilogo: tensori e autograd
Ha creato tensori con torch.tensor e attivato il tracciamento dei gradienti tramite requires_grad=True. Ha calcolato un output, eseguito .backward() e letto le derivate da .grad. Ha imparato che i gradienti si accumulano, ha utilizzato torch.no_grad() per l'inferenza e .detach() per interrompere il flusso dei gradienti.
Domande Frequenti
La lezione «Tensori PyTorch e Autograd» è gratuita?
Sì — il testo completo di «Tensori PyTorch e Autograd» è 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 Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Tensori PyTorch e Autograd»?
torch.Tensor, requires_grad, backward(), calcolo dei gradienti, operazioni sui tensori Eserciti Learn AI with Python 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 Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Tensori PyTorch e Autograd»?
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 Learn AI with Python?
Sì. Ogni lezione Learn AI with Python 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
- Tensori PyTorch e Autograd
- Dataset e DataLoader personalizzati
- Creazione e addestramento di CNN con PyTorch
- Rilevamento degli oggetti con YOLOv8