PyTorch

Da Wiki AI.

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