- 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