Introducció
Autograd és una de les característiques més potents de PyTorch. Permet la diferenciació automàtica de tensors, la qual cosa és essencial per a l'entrenament de xarxes neuronals. En aquesta secció, aprendrem com funciona Autograd i com utilitzar-lo per calcular gradients de manera automàtica.
Conceptes Clau
- Tensor: Una estructura de dades multidimensional similar a un array o matriu.
- Gradient: La derivada d'una funció respecte a les seves variables d'entrada.
- Backpropagation: Un algorisme utilitzat per calcular els gradients en xarxes neuronals.
Com Funciona Autograd?
Autograd construeix un gràfic dinàmic de computació, on cada operació en tensors crea un node en aquest gràfic. Quan es calcula la pèrdua, podem utilitzar backward()
per calcular els gradients de manera automàtica.
Exemples Pràctics
Exemple 1: Càlcul de Gradients
import torch # Creem un tensor amb requires_grad=True per habilitar el seguiment de les operacions x = torch.tensor(2.0, requires_grad=True) # Definim una funció simple y = x ** 2 # Calculem el gradient y.backward() # El gradient de y respecte a x print(x.grad) # Output: tensor(4.0)
Explicació:
- Creem un tensor
x
ambrequires_grad=True
. - Definim una funció
y = x ** 2
. - Utilitzem
y.backward()
per calcular el gradient dey
respecte ax
. - El gradient es guarda a
x.grad
.
Exemple 2: Gradients en Funcions Més Complexes
import torch # Creem tensors amb requires_grad=True x = torch.tensor(1.0, requires_grad=True) z = torch.tensor(2.0, requires_grad=True) # Definim una funció més complexa y = x * z + z ** 2 # Calculem el gradient y.backward() # Gradients de y respecte a x i z print(x.grad) # Output: tensor(2.0) print(z.grad) # Output: tensor(5.0)
Explicació:
- Creem tensors
x
iz
ambrequires_grad=True
. - Definim una funció
y = x * z + z ** 2
. - Utilitzem
y.backward()
per calcular els gradients dey
respecte ax
iz
. - Els gradients es guarden a
x.grad
iz.grad
.
Exercicis Pràctics
Exercici 1: Càlcul de Gradients
Enunciat:
Crea un tensor a
amb valor inicial 3.0 i requires_grad=True
. Defineix una funció b = a ** 3 + 2 * a
. Calcula el gradient de b
respecte a a
.
Solució:
import torch # Creem el tensor a = torch.tensor(3.0, requires_grad=True) # Definim la funció b = a ** 3 + 2 * a # Calculem el gradient b.backward() # Mostrem el gradient print(a.grad) # Output: tensor(29.0)
Exercici 2: Funció Quadràtica
Enunciat:
Crea dos tensors x
i y
amb valors inicials 1.0 i 2.0 respectivament, amb requires_grad=True
. Defineix una funció z = x ** 2 + y ** 2 + 2 * x * y
. Calcula els gradients de z
respecte a x
i y
.
Solució:
import torch # Creem els tensors x = torch.tensor(1.0, requires_grad=True) y = torch.tensor(2.0, requires_grad=True) # Definim la funció z = x ** 2 + y ** 2 + 2 * x * y # Calculem el gradient z.backward() # Mostrem els gradients print(x.grad) # Output: tensor(6.0) print(y.grad) # Output: tensor(6.0)
Errors Comuns i Consells
- Oblidar
requires_grad=True
: Si no s'estableixrequires_grad=True
en els tensors, PyTorch no seguirà les operacions i no podrà calcular els gradients. - No utilitzar
backward()
: Després de definir la funció, és necessari cridarbackward()
per calcular els gradients. - Gradients acumulats: Els gradients es van acumulant per defecte. Si es volen reiniciar, cal utilitzar
zero_grad()
.
Resum
En aquesta secció, hem après què és Autograd i com utilitzar-lo per calcular gradients de manera automàtica en PyTorch. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes. Ara estem preparats per avançar cap a la construcció de xarxes neuronals en el següent mòdul.
PyTorch: De Principiant a Avançat
Mòdul 1: Introducció a PyTorch
- Què és PyTorch?
- Configuració de l'Entorn
- Operacions Bàsiques amb Tensor
- Autograd: Diferenciació Automàtica
Mòdul 2: Construcció de Xarxes Neuronals
- Introducció a les Xarxes Neuronals
- Creació d'una Xarxa Neuronal Simple
- Funcions d'Activació
- Funcions de Pèrdua i Optimització
Mòdul 3: Entrenament de Xarxes Neuronals
- Càrrega i Preprocessament de Dades
- Bucle d'Entrenament
- Validació i Prova
- Desament i Càrrega de Models
Mòdul 4: Xarxes Neuronals Convolucionals (CNNs)
- Introducció a les CNNs
- Construcció d'una CNN des de Zero
- Aprenentatge per Transferència amb Models Preentrenats
- Ajust Fi de les CNNs
Mòdul 5: Xarxes Neuronals Recurrents (RNNs)
- Introducció a les RNNs
- Construcció d'una RNN des de Zero
- Xarxes de Memòria a Llarg i Curt Termini (LSTM)
- Unitats Recurrents Gated (GRUs)
Mòdul 6: Temes Avançats
- Xarxes Generatives Adversàries (GANs)
- Aprenentatge per Reforç amb PyTorch
- Desplegament de Models PyTorch
- Optimització del Rendiment