Passa al contenuto principale

Che cos'è il tensore sparso?

Un tensore efficiente in termini di memoria che memorizza solo valori diversi da zero con i relativi indici e forma, ottimizzando l'archiviazione e il calcolo per set di dati sparsi

di Staff di Databricks

Archived. This article has not been updated since the publish date above. The dynamic nature of information means that previously accurate content can become outdated or even obsolete over time. Readers are advised to exercise due diligence and cross-check any information found in this blog post before making decisions or adopting any practices based on said information.

  • Codifica i tensori utilizzando tre componenti: array di indici per posizioni diverse da zero, array di valori per i dati effettivi e dense_shape che definisce le dimensioni totali.
  • Riduce drasticamente l'occupazione di memoria per dati come incorporamenti di testo, matrici di interazione utente-elemento e nuvole di punti 3D in cui la sparsità supera il 90%.
  • Supporta operazioni specializzate come la moltiplicazione di matrici sparse e le convoluzioni sparse, sebbene alcune operazioni possano densificare i dati causando picchi di memoria se non gestite con attenzione.

Python offre una libreria integrata chiamata numpy per gestire gli array multidimensionali. L'organizzazione e l'uso di questa libreria è un requisito primario per lo sviluppo della libreria pytensor. Tensore sparso Sptensor è una classe che rappresenta il tensore sparso. Un tensore sparso è un set di dati in cui la maggior parte delle voci è zero, come avviene ad esempio in una matrice diagonale di grandi dimensioni (che ha molti elementi nulli). Non memorizza tutti i valori dell'oggetto tensore, ma solo i valori non nulli e le loro coordinate corrispondenti. I formati di memorizzazione del tensore sparso ci permettono di memorizzare solo i valori diversi da zero, riducendo così i requisiti di memorizzazione ed eliminando inutili calcoli silenziosi che coinvolgono i valori nulli. Ecco i suoi attributi principali:

  • vals (numpy.ndarray). Un array monodimensionale di valori diversi da zero del tensore sparso.
  • subs (numpy.ndarray). Un array bidimensionale di coordinate dei valori in vals.
  • shape(tupla).
Report

Il playbook sull'AI agentiva per l'enterprise

La forma del tensore sparso:

  • func(binary operator). Questa funzione viene utilizzata per costruire il tensore sparso come un accumulatore.

Inoltre, le sue funzioni principali sono:

  • __init__(self, subs, vals, shape = None, func=sum.__call__). Costruttore per la classe sptensor. subs e vals (numpy.ndarray) o (list) sono coordinate e valori dello sptensor.
  • tondarray(self). Questa funzione restituisce un oggetto numpy. ndarray che ha gli stessi valori dello sptensor.
  • permute(self, order). L'applicazione di questa funzione restituisce l'oggetto sptensor che viene permutato in base all'ordine (list) dato.
  • ipermute(self, order). Restituisce l'oggetto sptensor che è permutato dall'inverso dell'ordine (list) dato.
  • copy(self). Restituisce l'oggetto sptensor copiato dello sptensor.
  • totensor(self). Restituisce l'oggetto tensore che ha gli stessi valori dello sptensor
  • nnz(self). Restituisce il numero di elementi diversi da zero nello sptensor.
  • ndims(self). Restituisce il numero di dimensioni del tensore.
  • dimsize(self, ind).
  • Restituisce la dimensione della dimensione specificata, come shape[ind].

Risorse aggiuntive

Ricevi gli ultimi articoli nella tua casella di posta

Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.