0Pricing
Learn AI with Python · Lezione

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 torch

Creazione 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.float32

Operazioni 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 multiply

requires_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)  # True

Costruzione 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)  # False

detach() 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)  # False

Perché 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

  1. Tensori PyTorch e Autograd
  2. Dataset e DataLoader personalizzati
  3. Creazione e addestramento di CNN con PyTorch
  4. Rilevamento degli oggetti con YOLOv8
← Torna a Learn AI with Python