Come creare un tensore su Pytorch
Approcci di Inizializzazione
Esistono vari approcci per creare da zero un Tensore con PyTorch, ne elenchiamo alcuni dei più semplici:
torch.ones()
: Metodo che inizializza (= crea e assegna valori iniziali ad..) un tensore, impostando tutti gli elementi uguali a 1. è molto comune nello sviluppo di reti neurali poiché spesso di procede settando i pesi della rete a valori iniziali uguali.
torch.zeros()
: Simile atorch.ones()
, ma inizializza tutti gli elementi del tensore a 0.torch.empty()
: Crea un tensore non inizializzato, quindi i valori possono essere qualsiasi cosa.torch.randn()
: Inizializza un tensore con valori casuali presi da una distribuzione normale (media 0, deviazione standard 1).torch.rand()
: Inizializza un tensore con valori casuali compresi tra 0 e 1 da una distribuzione uniforme.
Esempi di Inizializzazione
Qui trovi un Colab dove puoi provare queste righe di codice e vederne il funzionamento te stess*!
Innanzitutto facciamo un esempio minimale che adotti il primo approccio: torch.ones.
1. Il primo step è importare la libreria torch:
import torch
2. Inizializziamo il tensore specificando il numero di righe e il numero di colonne che vogliamo abbia il nostro tensore di tutti uno, in questo caso rispettivamente 2 e 3:
torch.ones((2,3))
[n.b. Essendo le dimensioni in questo caso due, si può parlare di un tipo specifico di Tensore detto Matrice. Se la dimensione fosse una si tratterebbe di un Vettore. Dalle tre dimensioni in su si definiscono genericamente Tensori]
L'inizializzazione del tensore con questa riga di codice lo stampa anche in automatico! In questo caso quindi visualizzeremo questo:
tensor([[1., 1., 1.],
[1., 1., 1.]])
Abbiamo inizializzato il tensore!
Possiamo notare che il formato dati assegnato di default è di numero decimale (float). Se vogliamo ad esempio che gli elementi del Tensore siano dei numeri interi (int) possiamo specificarlo (insieme dalla dimensione del formato dati, 8, 16, 32 bit ecc.) nella riga di inizializzazione in questo modo:
torch.ones((2,3)), dtype=torch.int8)
Se vogliamo che gli elementi nel tensore abbiano comunque tutti lo stesso valore ma vogliamo decidere noi quale valore in particolare, possiamo eseguire ad esempio:
torch.full((2,3), 54,47279)
Se vogliamo che gli elementi del tensore siano estratti casualmente da un intervallo a nostra scelta (ad esempio [0, 100]) possiamo eseguire:
torch.randint(0, 100, (2,3)
Quindi specificando gli estremi dell'intervallo PRIMA di definire le dimensioni del tensore.
Fonte: PyTorch Artificial Intelligence Fundamentals by Jibin Mathew