Come creare i tensori con Torch di Python
La funzione tensor mi permette di creare un tensore con il modulo Torch di Python
tensor(array)
L'argomento della funzione è un array
Un esempio pratico
Esempo 1: tensore in tre dimensioni
Importo il modulo pytorch
import pytorch as torch
Poi creo un tensore 2x2x2 nello spazio a 3 dimensioni
tensore = torch.tensor([[[1,2],[3,4]],[[5,6],[7,8]]])
Verifico la dimensione tramite il metodo ndim
tensore.ndim
Il risultato è 3, il tensore ha tre dimensioni (x,y,z).
3
Per misurare la lunghezza del tensore nelle tre dimensioni uso il metodo shape
tensore.shape
Il tensore ha una lunghezza pari a 2 in ogni dimensione.
torch.Size([2, 2, 2])
Dal punto di vista pratico il tensore può essere immaginato come un cubo composto da due matrici affiancate
In alternativa, posso immaginarlo come una vettore in cui ogni elemento è un matrice 2x2
$$ \begin{pmatrix} \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \end{pmatrix} $$
Per prelevare un elemento dal tensore devo indicare le sue coordinate nelle tre dimensioni (x,y,z)
Ad esempio, se digito tensore[0,0,0]
tensore[0,0,0]
Il comando legge il primo elemento in ogni dimensione, ossia il valore 1.
$$ \begin{pmatrix} \begin{pmatrix} \color{red}1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \end{pmatrix} $$
Il risultato in output è
tensor(1)
Se digito tensore[1,1,1]
tensore[1,1,1]
Il comando legge l'ultimo elemento in ogni dimensione, ossia il valore 8.
$$ \begin{pmatrix} \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 5 & 6 \\ 7 & \color{red}8 \end{pmatrix} \end{pmatrix} $$
Il risultato in output è
tensor(8)
Esempo 2: tensore in quattro dimensioni
Ora creo un tensore 2x2x2x2 in 4 dimensioni
tensore4d = torch.tensor([[[[1,2],[3,4]],[[5,6],[7,8]]],[[[9,10],[11,12]],[[13,14],[15,16]]]])
In questo caso non è facile immaginare questa struttura nello spazio perché ha quattro dimensioni.
Posso però immaginare il tensore come una matrice 2x2 in cui ogni elemento è a sua volta una matrice 2x2
$$ \begin{pmatrix} \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \\ \begin{pmatrix} 9 & 10 \\ 11 & 12 \end{pmatrix} & \begin{pmatrix} 13 & 14 \\ 15 & 16 \end{pmatrix} \end{pmatrix} $$
Verifico la dimensione tramite il metodo ndim
tensore4d.ndim
Il risultato è 4, il tensore ha quattro dimensioni (x,y,z,t).
4
Per misurare la lunghezza del tensore nelle quattro dimensioni uso il metodo shape
tensore4d.shape
Il tensore ha una lunghezza pari a 2 in ogni dimensione.
torch.Size([2, 2, 2, 2])
Anche in questo caso per leggere un singolo elemento del vettore devo indicare le quattro coordinate dell'elemento, ossia la sua posizione nella struttura.
Ad esempio, se digito tensore4d[0,0,0,0]
tensore4d[0,0,0,0]
Il comando legge il primo elemento in ogni dimensione, ossia il valore 1.
$$ \begin{pmatrix} \begin{pmatrix} \color{red}1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \\ \begin{pmatrix} 9 & 10 \\ 11 & 12 \end{pmatrix} & \begin{pmatrix} 13 & 14 \\ 15 & 16 \end{pmatrix} \end{pmatrix} $$
Se digito tensore4d[1,1,1,1]
tensore4d[0,0,0,0]
Il comando legge l'ultimo elemento in ogni dimensione, ossia il valore 16.
$$ \begin{pmatrix} \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \\ \begin{pmatrix} 9 & 10 \\ 11 & 12 \end{pmatrix} & \begin{pmatrix} 13 & 14 \\ 15 & \color{red}{16} \end{pmatrix} \end{pmatrix} $$
E così via.