Come fare un tensore in Python

In Python posso definire un tensore a tre dimensioni ( matrice tridimensionale o cubica ) con la funzione array di NumPy.

array([m1,m2,m3])

Ogni argomento m è una matrice 3x3 che definisce uno strato del tensore ( cubo ).

In alternativa, posso usare la funzione tensor di PyTorch

tensor([m1,m2,m3])

Entrambi metodi creano una matrice cubica con 27 elementi in 3 strati ( matrici ).

Cos'è un tensore? Un tensore è una matrice a più dimensioni. Ad esempio, una matrice tridimensionale (3D), quadridimensionale (4D) o n-dimensionale. E' un concetto di algebra lineare particolarmente utile nello studio della fisica e nel machine learning.
un esempio di tensore ( matrice nello spazio a tre dimensioni )

Essendo un oggetto array, posso accedere a ogni elemento nello spazio del tensore usando i tre indici m[x,y,z].

Un esempio pratico

Importo il modulo numpy in Python.

Poi creo un tensore a tre dimensioni con la funzione array().

>>> import numpy as np
>>> m=np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]])

Con questa semplice istruzione ho creato il tensore.

E' un oggetto cubico a tre dimensioni (x,y,z).

Il contenuto del tensore è il seguente:

>>> m
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],

[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]],

[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])

Come accedere agli elementi del tensore

Posso leggere ogni elemento del tensore indicando gli indici delle coordinate (x,y,z) nello spazio vettoriale dell'array.

  • x = strato o matrice ( 0, 1, 2 )
  • y = riga ( 0, 1, 2 )
  • z = colonna ( 0, 1, 2 )

Nota. L'accesso agli elementi del tensore è simile all'accesso agli elementi di una matrice a due dimensione. L'unica differenza è che gli indici sono tre [x,y,z] anziché due [y,z]. Una matrice a due dimensione ha solo gli indici delle righe e delle colonne. Il tensore ha anche l'indice dello strato z ( quota o profondità ).

Esempio

Provo accedere al primo elemento della prima linea del primo strato del tensore (x=0, y=0, z=0).

>>> m[0,0,0]
1

Ora accedo al secondo elemento della prima linea del primo strato del tensore (x=0, y=0, z=1)

>>> m[0,0,1]
2

Accedo al secondo elemento della seconda linea del primo strato del tensore (x=0, y=1, z=1)

>>> m[0,1,1]
5

Infine, accedo al secondo elemento della seconda linea del secondo strato del tensore (x=1, y=1, z=1)

>>> m[1,1,1]
14

Con la stessa tecnica posso creare un tensore a 4 dimensioni o superiore.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Numpy

I metodi e le funzioni