PyTorch: differenze tra le versioni
(Creata pagina con "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 = PyT...") |
Nessun oggetto della modifica |
||
| Riga 70: | Riga 70: | ||
</source> | </source> | ||
== | = Elenco dei Moduli PyTorch = | ||
Questo elenco presenta alcuni dei moduli più utilizzati in PyTorch, ciascuno con una breve descrizione. | |||
torch. | |||
* '''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. | |||
Versione delle 22:21, 28 feb 2024
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.