Tensori, matrici, vettori e python – prima parte

MATEMATICA

Cosa sono i tensori?

In ambito AI diventa estremamente importante imparare a maneggiare e gestire i dati sotto forma di tensori. Bisogna tener presente che nel deep learning, infatti, i dati vengono trattati esclusivamente come Tensori. Ma cosa sono?

Una definizione formale potrebbe essere la seguente: un tensore è un oggetto matematico  definito in  spazio vettoriale e quindi non dipendente da un particolare sistema di riferimento. Ok ma che significa? Possiamo provare a semplificare dicendo che i tensori sono la naturale generalizzazione del concetto di vettore ovvero di  un oggetto che ha dimensioni e direzioni. Interessante ma cosa significa? potrei andare avanti così 🙂 Proverò a dare una spiegazione approcciandola esclusivamente dal punto di vista informatico.

Un array in informatica, indica una struttura dati complessa, statica e omogenea, ed  un vettore è  definibile come un array monodimenzionale 1D ovvero una lista  di numeri.

V = [1 3 5 8]

I vettori possono a loro volta essere suddivisi in componenti più semplici gli elementi a cui si fa riferimeto con gli indici. Dunque con V{_{i}} si indica l’elemento  i-esimo.

Una matrice invece è un array bidimensionale 2D:

M=\begin{bmatrix} 1 & 2 & 9 \\ 3 & 8 & 9 \\ 1 & 2 & 2 \end{bmatrix}

In una matrice M_{ij} indica l’elemento della riga i-esima e della colonna j-esima.

Così facendo, aggiungendo una dimensione, potremmo disegnare una “matrice cubica” etc etc … per analogia si arriva così alla definizione di tensore.

Il tensore  è  un array multidimensionale, pertanto sia il vettore che la matrice sono esempi di tensori a dimensione rispettivamente 1 e 2.

A questo punto possiamo introdurre due proprietà fondamentali dei tensori, di cui avremo modo di sentirne parlare anche  in ambito AI.

  1. Rank  indica il numero di dimensioni del Tensore (Una matrice cubica ad es. ha  grado 3, una matrice ha grado 2).
  2. Shape  rappresenta la forma  del tensore e viene espresso  nel seguente formato n x m x k nel caso di una matrice cubica. (ad esempio  una matrice cubica può avere forma 1x1x1 o 2x5x7).

Facciamo qualche esempio:

Un Tensore con Rank=2 e Shape=2×4 è una matrice con 2 righe e 4 colonne

\begin{bmatrix} 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \end{bmatrix}

Un Tensore con Rank=2 e Shape=4×2 è una matrice di 4 righe e 2 colonne.

\begin{bmatrix} 1 & 2\\ 1 & 2\\ 1 & 2\\ 1 & 2 \end{bmatrix}

Un tensore di 5 elementi ad una sola dimensione è un vettore V = [1 , 3 , 5, 8]

Come si può rappresentare ed usare un vettore in python? la via più semplice è di usare numpy una libreria matematica molto interessante.

Pertanto rifacendoci all’esempio precedente del vettore V in Python dobbiamo scrivere qualcosa del genere:

import numpy as np

v=np.array([1,3,5,8])

A questo punto possiamo utilizzare python per calcolare ad esempio shape e rank di v

np.shape(v)

il cui risultato è (4,) ovvero un tesnore con un sola dimensione a 4 elementi

np.rank(v)

il cui risultato è 1 dimensione.

Facciamo un altro esempio; ragioniamo su una matrice :

M= \begin{bmatrix} 1 & 2 & 3 \\ 3 & 4 & 5 \end{bmatrix}

In Python avremo:

>>> M = np.array([[1,2,3],[3,4,5]])

>>> np.shape(M)

(2, 3)

>>> np.rank(M)

2

>>> 

In questo caso dunque avremo :

shape= 2 x 3

rank = 2

Seconda parte >>

 

Se vuoi farmi qualche richiesta o contattarmi per un aiuto riempi il seguente form

    Comments