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.