PyTorch
PyTorch è una libreria open source di machine learning basata su Torch, ampiamente utilizzata per applicazioni come il deep learning e l'analisi computazionale. Offre due caratteristiche principali: la prima è l'implementazione dei vettori di numpy come "tensori" su GPU per accelerare i calcoli, e la seconda è un algoritmo di differenziazione automatica (autograd) per la costruzione e il training di reti neurali.
Flusso di Esecuzione di un Programma PyTorch
PyTorch è una potente libreria per il machine learning che facilita la costruzione e l'allenamento di reti neurali. Questa guida offre una panoramica del flusso di esecuzione tipico di un programma PyTorch.
Installazione
Per iniziare, è necessario installare PyTorch. Questo può essere fatto utilizzando pip:
pip install torch torchvision
Importazione delle Librerie
Dopo l'installazione, importa PyTorch nel tuo script Python:
import torch import torchvision
Definizione del Modello
Crea un modello definendo una classe che estende `torch.nn.Module`. All'interno, definisci la struttura della rete nel metodo `__init__` e come i dati passano attraverso la rete nel metodo `forward`.
class Net(torch.nn.Module): def __init__(self): super(Net, self).__init__() # Definisci strati qui def forward(self, x): # Definisci il flusso dei dati qui return x
Dati di Addestramento
Carica o genera i tuoi dati di addestramento. Utilizza `torch.utils.data.DataLoader` per gestire i batch di dati e la shuffling.
train_loader = torch.utils.data.DataLoader(dataset, batch_size=64, shuffle=True)
Configurazione dell'Addestramento
Prima dell'addestramento, configura il processo di ottimizzazione scegliendo un ottimizzatore e definendo una funzione di perdita.
model = Net() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) criterion = torch.nn.CrossEntropyLoss()
Ciclo di Addestramento
Addestra il modello eseguendo un ciclo in cui i dati di addestramento vengono passati attraverso il modello, il gradiente della perdita è calcolato e i parametri del modello vengono aggiornati.
for epoch in range(num_epochs): for batch_idx, (data, target) in enumerate(train_loader): optimizer.zero_grad() output = model(data) loss = criterion(output, target) loss.backward() optimizer.step()
Valutazione
Dopo l'addestramento, valuta il modello sul set di dati di test per determinare la sua precisione.
test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: output = model(data) test_loss += criterion(output, target).item() pred = output.data.max(1, keepdim=True)[1] correct += pred.eq(target.data.view_as(pred)).sum()
Elenco dei Moduli PyTorch
Questo elenco presenta alcuni dei moduli più utilizzati in PyTorch, ciascuno con una breve descrizione.
- torch.nn.Linear - Implementa un layer completamente connesso.
- torch.nn.Conv1d - Applica una convoluzione 1D per dati sequenziali.
- torch.nn.Conv2d - Applica una convoluzione 2D, utile per immagini.
- torch.nn.Conv3d - Applica una convoluzione 3D, per volumi o video.
- torch.nn.ReLU - Funzione di attivazione ReLU, zero per input negativi.
- torch.nn.Sigmoid - Funzione di attivazione sigmoid, mappa input in (0, 1).
- torch.nn.Tanh - Funzione di attivazione tanh, mappa input in (-1, 1).
- torch.nn.MaxPool1d - Pooling massimo per dati sequenziali.
- torch.nn.MaxPool2d - Pooling massimo per dati spaziali (immagini).
- torch.nn.MaxPool3d - Pooling massimo per volumi o video.
- torch.nn.AvgPool1d - Pooling medio per dati sequenziali.
- torch.nn.AvgPool2d - Pooling medio per dati spaziali (immagini).
- torch.nn.AvgPool3d - Pooling medio per volumi o video.
- torch.nn.Dropout - Applica dropout, utile per la regolarizzazione.
- torch.nn.BatchNorm1d - Normalizzazione batch per dati 1D.
- torch.nn.BatchNorm2d - Normalizzazione batch per dati 2D.
- torch.nn.BatchNorm3d - Normalizzazione batch per dati 3D.
- torch.nn.Embedding - Layer per embedding di token, utile per NLP.
- torch.nn.RNN - Rete RNN per modelli sequenziali.
- torch.nn.LSTM - Rete LSTM per modelli sequenziali.
- torch.nn.GRU - Rete GRU, alternativa a LSTM.
- torch.nn.Transformer - Implementazione del Transformer, per modelli di attenzione.
Links
Come creare un tensore su Pytorch (Tutorial)
https://pytorch.org/tutorials/
https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html
https://pytorch.org/tutorials/intermediate/char_rnn_generation_tutorial.html