- Què és PyTorch?
PyTorch és una biblioteca de deep learning de codi obert desenvolupada per Facebook's AI Research lab (FAIR). És àmpliament utilitzada per la seva flexibilitat i facilitat d'ús, especialment en recerca i desenvolupament de models de deep learning.
Característiques clau de PyTorch:
- Tensor Computation: Similar a NumPy, però amb suport per a GPU.
- Autograd: Sistema automàtic de diferenciació per a la construcció i entrenament de xarxes neuronals.
- Models Definits Dinàmicament: Permet definir models de manera dinàmica, facilitant la depuració i la modificació.
- Suport per a GPU: Permet l'acceleració de càlculs utilitzant GPU.
- Instal·lació de PyTorch
Requisits previs:
- Python 3.6 o superior
- pip (gestor de paquets de Python)
Instal·lació amb pip:
Instal·lació amb Conda:
- Conceptes Bàsics de PyTorch
3.1 Tensors
Els tensors són la unitat bàsica de dades en PyTorch, similar als arrays de NumPy però amb capacitats addicionals per a operacions en GPU.
Creació de tensors:
import torch # Crear un tensor buit x = torch.empty(5, 3) print(x) # Crear un tensor amb valors aleatoris x = torch.rand(5, 3) print(x) # Crear un tensor amb zeros x = torch.zeros(5, 3, dtype=torch.long) print(x) # Crear un tensor directament des de dades x = torch.tensor([5.5, 3]) print(x)
3.2 Operacions amb Tensors
Operacions bàsiques:
# Suma de tensors y = torch.rand(5, 3) print(x + y) # Multiplicació de tensors print(x * y) # Producte matriu print(torch.matmul(x, y.T))
Operacions amb GPU:
# Moure un tensor a GPU
if torch.cuda.is_available():
device = torch.device("cuda")
x = x.to(device)
y = y.to(device)
z = x + y
print(z)3.3 Autograd: Diferenciació Automàtica
PyTorch proporciona un sistema automàtic de diferenciació que permet calcular gradients de manera eficient.
Exemple de diferenciació automàtica:
# Crear un tensor amb gradient x = torch.ones(2, 2, requires_grad=True) print(x) # Realitzar operacions y = x + 2 print(y) # Realitzar més operacions z = y * y * 3 out = z.mean() print(out) # Calcula el gradient out.backward() print(x.grad)
- Construcció i Entrenament de Models
4.1 Definició d'un Model
En PyTorch, els models es defineixen com a subclasses de torch.nn.Module.
Exemple d'un model simple:
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x
net = Net()
print(net)4.2 Entrenament del Model
Definició de la funció de pèrdua i l'optimitzador:
import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.01, momentum=0.9)
Bucle d'entrenament:
for epoch in range(2): # bucle sobre el conjunt de dades múltiples vegades
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
inputs, labels = data
# Zero els gradients dels paràmetres
optimizer.zero_grad()
# Passar endavant + passar enrere + optimitzar
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# Imprimir estadístiques
running_loss += loss.item()
if i % 2000 == 1999: # imprimir cada 2000 mini-batches
print(f'[Epoch {epoch + 1}, Mini-batch {i + 1}] loss: {running_loss / 2000:.3f}')
running_loss = 0.0
print('Entrenament finalitzat')
- Conclusió
En aquesta secció, hem introduït PyTorch, una poderosa biblioteca per al desenvolupament de models de deep learning. Hem cobert els conceptes bàsics, incloent la creació i manipulació de tensors, l'ús de l'autograd per a la diferenciació automàtica, i la construcció i entrenament de models. En els següents mòduls, explorarem aplicacions més avançades i pràctiques de PyTorch en deep learning.
Curs de Deep Learning
Mòdul 1: Introducció a Deep Learning
- Què és Deep Learning?
- Història i evolució del Deep Learning
- Aplicacions de Deep Learning
- Conceptes bàsics de xarxes neuronals
Mòdul 2: Fonaments de Xarxes Neuronals
- Perceptró i Perceptró Multicapa
- Funció d'activació
- Propagació cap endavant i cap enrere
- Optimització i funció de pèrdua
Mòdul 3: Xarxes Neuronals Convolucionals (CNN)
- Introducció a les CNN
- Capes convolutionals i de pooling
- Arquitectures populars de CNN
- Aplicacions de CNN en reconeixement d'imatges
Mòdul 4: Xarxes Neuronals Recurrentes (RNN)
- Introducció a les RNN
- LSTM i GRU
- Aplicacions de RNN en processament del llenguatge natural
- Seqüències i sèries temporals
Mòdul 5: Tècniques Avançades en Deep Learning
- Xarxes Generatives Adversarials (GAN)
- Autoencoders
- Transfer Learning
- Regularització i tècniques de millora
Mòdul 6: Eines i Frameworks
- Introducció a TensorFlow
- Introducció a PyTorch
- Comparació de frameworks
- Entorns de desenvolupament i recursos addicionals
Mòdul 7: Projectes Pràctics
- Classificació d'imatges amb CNN
- Generació de text amb RNN
- Detecció d'anomalies amb Autoencoders
- Creació d'una GAN per generació d'imatges
