Gradienti in PyTorch
I gradienti sono fondamentali nei compiti di ottimizzazione come l'addestramento delle reti neurali, dove aiutano ad adattare pesi e bias per minimizzare l'errore. In PyTorch, vengono calcolati automaticamente tramite il modulo autograd
, che traccia le operazioni sui tensori e calcola le derivate in modo efficiente.
Abilitazione del tracciamento dei gradienti
Per abilitare il tracciamento dei gradienti per un tensore, si utilizza l'argomento requires_grad=True
durante la creazione del tensore. Questo indica a PyTorch di tracciare tutte le operazioni sul tensore per il calcolo dei gradienti.
1234import torch # Create a tensor with gradient tracking enabled tensor = torch.tensor(2.0, requires_grad=True) print(tensor)
Costruzione di un grafo computazionale
PyTorch costruisce un grafo computazionale dinamico mentre esegui operazioni su tensori con requires_grad=True
. Questo grafo memorizza le relazioni tra tensori e operazioni, consentendo la differenziazione automatica.
Inizieremo definendo una semplice funzione polinomiale:
y = 5x
L'obiettivo è calcolare la derivata rispetto a x
per x = 2
.
123456import torch # Define the tensor x = torch.tensor(2.0, requires_grad=True) # Define the function y = 5 * x ** 3 + 2 * x ** 2 + 4 * x + 8 print(f"Function output: {y}")
La visualizzazione di questo grafo computazionale creata utilizzando la libreria PyTorchViz può apparire piuttosto complessa, ma trasmette efficacemente il concetto chiave alla base:
Calcolo dei Gradienti
Per calcolare il gradiente, è necessario chiamare il metodo backward()
sul tensore di output. Questo calcola la derivata della funzione rispetto al tensore di input.
Il gradiente calcolato può poi essere accessibile tramite l'attributo .grad
.
12345678import torch x = torch.tensor(2.0, requires_grad=True) y = 5 * x ** 3 + 2 * x ** 2 + 4 * x + 8 # Perform backpropagation y.backward() # Print the gradient of x grad = x.grad print(f"Gradient of x: {grad}")
Il gradiente calcolato è la derivata di y
rispetto a x
, valutata in x = 2
.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 5
Gradienti in PyTorch
Scorri per mostrare il menu
I gradienti sono fondamentali nei compiti di ottimizzazione come l'addestramento delle reti neurali, dove aiutano ad adattare pesi e bias per minimizzare l'errore. In PyTorch, vengono calcolati automaticamente tramite il modulo autograd
, che traccia le operazioni sui tensori e calcola le derivate in modo efficiente.
Abilitazione del tracciamento dei gradienti
Per abilitare il tracciamento dei gradienti per un tensore, si utilizza l'argomento requires_grad=True
durante la creazione del tensore. Questo indica a PyTorch di tracciare tutte le operazioni sul tensore per il calcolo dei gradienti.
1234import torch # Create a tensor with gradient tracking enabled tensor = torch.tensor(2.0, requires_grad=True) print(tensor)
Costruzione di un grafo computazionale
PyTorch costruisce un grafo computazionale dinamico mentre esegui operazioni su tensori con requires_grad=True
. Questo grafo memorizza le relazioni tra tensori e operazioni, consentendo la differenziazione automatica.
Inizieremo definendo una semplice funzione polinomiale:
y = 5x
L'obiettivo è calcolare la derivata rispetto a x
per x = 2
.
123456import torch # Define the tensor x = torch.tensor(2.0, requires_grad=True) # Define the function y = 5 * x ** 3 + 2 * x ** 2 + 4 * x + 8 print(f"Function output: {y}")
La visualizzazione di questo grafo computazionale creata utilizzando la libreria PyTorchViz può apparire piuttosto complessa, ma trasmette efficacemente il concetto chiave alla base:
Calcolo dei Gradienti
Per calcolare il gradiente, è necessario chiamare il metodo backward()
sul tensore di output. Questo calcola la derivata della funzione rispetto al tensore di input.
Il gradiente calcolato può poi essere accessibile tramite l'attributo .grad
.
12345678import torch x = torch.tensor(2.0, requires_grad=True) y = 5 * x ** 3 + 2 * x ** 2 + 4 * x + 8 # Perform backpropagation y.backward() # Print the gradient of x grad = x.grad print(f"Gradient of x: {grad}")
Il gradiente calcolato è la derivata di y
rispetto a x
, valutata in x = 2
.
Grazie per i tuoi commenti!