Operazioni fondamentali con tensori in PyTorch

Operazioni Fondamentali Con Tensori In Pytorch



I tensori sono la pietra angolare di PyTorch che fornisce una struttura dati potente e flessibile per calcoli numerici nel deep learning. Come gli array NumPy, rappresentano array multidimensionali ma con funzionalità e ottimizzazioni aggiuntive progettate specificamente per attività di deep learning. Poiché i tensori sono gli oggetti principali per l'archiviazione e la manipolazione dei dati numerici in PyTorch, possono avere dimensioni diverse, che vanno da scalari (tensori a 0 dimensione) a vettori (tensori a 1 dimensione), matrici (tensori a 2 dimensioni) e superiori. tensori bidimensionali.

Uno dei maggiori vantaggi dei tensori è la loro capacità di eseguire operazioni matematiche efficienti. I tensori supportano un'ampia gamma di operazioni aritmetiche, comprese le operazioni basate sugli elementi come addizione, sottrazione, moltiplicazione e divisione e le operazioni su matrici come la moltiplicazione e la trasposizione di matrici.

PyTorch fornisce un set completo di funzioni e metodi per manipolare i tensori. Queste includono operazioni per rimodellare i tensori, estrarre elementi specifici o sottotensori e concatenare o dividere i tensori lungo dimensioni specificate. Inoltre, PyTorch offre funzionalità per l'indicizzazione, lo slicing e la trasmissione dei tensori che semplificano il lavoro con tensori di diverse forme e dimensioni.







In questo articolo impareremo le operazioni fondamentali con i tensori in PyTorch, esploreremo come creare tensori, eseguire operazioni di base, manipolare la loro forma e spostarli tra CPU e GPU.



Creazione di tensori

I tensori in PyTorch possono essere creati in diversi modi. Esploriamo alcuni metodi comuni.



Per creare un tensore possiamo utilizzare la classe “torch.Tensor” o la funzione “torch.tensor”. Diamo un’occhiata ad alcuni esempi:





importare torcia

# Creare un 1 - tensore dimensionale da una lista Python
tensore_1d = torcia. tensore ( [ 1 , 2 , 3 , 4 , 5 ] )
stampa ( tensore_1d )

# Creare un 2 - tensore dimensionale da un elenco Python nidificato
tensore_2d = torcia. tensore ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
stampa ( tensore_2d )

# Crea un tensore di zeri con una forma specifica
zeri_tensore = torcia. zeri ( 3 , 2 )
stampa ( zeri_tensore )

# Crea un tensore di quelli con una forma specifica
one_tensore = torcia. quelli ( 2 , 3 )
stampa ( one_tensore )

# Crea un tensore con valori casuali da una distribuzione uniforme
tensore_casuale = torcia. Rand ( 2 , 2 )
stampa ( tensore_casuale )

Negli esempi forniti, creiamo tensori di forme diverse e li inizializziamo con vari valori come numeri specifici, zeri, unità o valori casuali. Dovresti vedere un output simile quando esegui lo snippet di codice precedente:



Operazioni tensoriali

Una volta che abbiamo i tensori, possiamo eseguire varie operazioni su di essi come operazioni aritmetiche per elemento, operazioni su matrici e altro.

Operazioni aritmetiche elementari

Le operazioni aritmetiche a livello di elemento ci consentono di eseguire calcoli tra tensori elemento per elemento. I tensori coinvolti nell'operazione dovrebbero avere la stessa forma.

Ecco alcuni esempi:

importare torcia

# Crea tensori
tensore1 = torcia. tensore ( [ 1 , 2 , 3 ] )
tensore2 = torcia. tensore ( [ 4 , 5 , 6 ] )

# Aggiunta
aggiunta = tensore1 + tensore2
stampa ( 'Aggiunta:' , aggiunta )

# Sottrazione
sottrazione = tensore1 - tensore2
stampa ( 'Sottrazione:' , sottrazione )

# Moltiplicazione
moltiplicazione = tensore1 * tensore2
stampa ( 'Moltiplicazione:' , moltiplicazione )

# Divisione
divisione = tensore1 / tensore2
stampa ( 'Divisione:' , divisione )

Nel codice fornito, eseguiamo le operazioni di addizione, sottrazione, moltiplicazione e divisione tra due tensori che si traducono in un nuovo tensore con i valori calcolati. Il risultato dello snippet di codice è mostrato come segue:

Operazioni su matrici

PyTorch fornisce operazioni di matrice efficienti per tensori come la moltiplicazione e la trasposizione di matrici. Queste operazioni sono particolarmente utili per attività come l'algebra lineare e i calcoli sulle reti neurali.

importare torcia

# Crea tensori
tensore1 = torcia. tensore ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensore2 = torcia. tensore ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Moltiplicazione di matrici
matrice_prodotto = torcia. il tappetino ( tensore1 , tensore2 )
stampa ( 'Prodotto matrice:' , matrice_prodotto )

# Trasposizione della matrice
matrice_trasposizione = tensore1. T
stampa ( 'Trasposizione matrice:' , matrice_trasposizione )

Nell'esempio fornito, eseguiamo la moltiplicazione della matrice utilizzando la funzione “torch.matmul” e otteniamo la trasposizione di una matrice utilizzando l'attributo “.T”.

Manipolazione della forma tensore

Oltre a eseguire operazioni sui tensori, spesso abbiamo bisogno di manipolarne la forma per adattarla a requisiti specifici. PyTorch fornisce diverse funzioni per rimodellare i tensori. Esploriamo alcune di queste funzioni:

importare torcia

# Crea un tensore
tensore = torcia. tensore ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Rimodellare il tensore
tensore_rimodellato = tensore. rimodellare ( 3 , 2 )
stampa ( 'Tensore rimodellato:' , tensore_rimodellato )

# Ottieni la dimensione di un tensore
misurare = tensore. misurare ( )
stampa ( 'Dimensione del tensore:' , misurare )

# Ottieni il numero di elementi In un tensore
num_elementi = tensore. dare un nome ( )
stampa ( 'Numero di elementi:' , num_elementi )

Nel codice fornito, rimodelliamo un tensore utilizzando la funzione reshape, recuperiamo la dimensione di un tensore utilizzando il metodo size e otteniamo il numero totale di elementi in un tensore utilizzando il metodo numel.

Tensori in movimento tra CPU e GPU

PyTorch fornisce supporto per l'accelerazione GPU che ci consente di eseguire calcoli su schede grafiche che possono velocizzare significativamente le attività di deep learning riducendo i tempi di addestramento. Possiamo spostare i tensori tra CPU e GPU utilizzando il metodo 'a'.

Nota : Questo può essere fatto solo se hai una GPU NVIDIA con CUDA sul tuo computer.

importare torcia

# Crea un tensore sulla CPU
tensore_cpu = torcia. tensore ( [ 1 , 2 , 3 ] )

# Controllo Se La GPU è disponibile
Se torcia. diverso . è disponibile ( ) :
# Sposta il tensore sulla GPU
tensore_gpu = tensore_cpu. A ( 'diverso' )
stampa ( 'Tensore sulla GPU:' , tensore_gpu )
altro :
stampa ( 'GPU non disponibile.' )

Nel codice fornito, controlliamo se è disponibile una GPU utilizzando torch.cuda.is_available(). Se è disponibile una GPU, spostiamo il tensore dalla CPU alla GPU utilizzando il metodo “to” con l'argomento “cuda”.

Conclusione

Comprendere le operazioni fondamentali del tensore è fondamentale per lavorare con PyTorch e costruire modelli di deep learning. In questo articolo abbiamo esplorato come creare tensori, eseguire operazioni di base, manipolarne la forma e spostarli tra CPU e GPU. Grazie a queste conoscenze, ora puoi iniziare a lavorare con i tensori in PyTorch, eseguire calcoli e creare sofisticati modelli di deep learning. I tensori fungono da base per la rappresentazione e la manipolazione dei dati in PyTorch, consentendoti di sfruttare tutta la potenza di questo versatile framework di apprendimento automatico.