Operații fundamentale cu tensori în PyTorch

Operatii Fundamentale Cu Tensori In Pytorch



Tensorii sunt piatra de temelie a PyTorch, care oferă o structură de date puternică și flexibilă pentru calcule numerice în deep learning. La fel ca matricele NumPy, acestea reprezintă matrice multidimensionale, dar cu caracteristici și optimizări suplimentare care sunt concepute special pentru sarcinile de învățare profundă. Deoarece tensorii sunt obiectele primare pentru stocarea și manipularea datelor numerice în PyTorch, aceștia pot avea dimensiuni diferite, variind de la scalari (tensori 0-dimensionali) la vectori (tensori unidimensionali), matrici (tensori bidimensionali) și mai mari. -tensori dimensionali.

Unul dintre cele mai mari avantaje ale tensorilor este capacitatea lor de a efectua operații matematice eficiente. Tensorii acceptă o gamă largă de operații aritmetice, inclusiv operațiile pe elemente, cum ar fi adunarea, scăderea, înmulțirea și împărțirea și operațiile matriceale precum înmulțirea și transpunerea matricei.

PyTorch oferă un set cuprinzător de funcții și metode pentru manipularea tensorilor. Acestea includ operații de remodelare a tensorilor, extragerea unor elemente sau sub-tensori specifici și concatenarea sau împărțirea tensorilor de-a lungul dimensiunilor specificate. În plus, PyTorch oferă funcționalități pentru indexarea, tăierea și difuzarea tensoarelor care facilitează lucrul cu tensori de diferite forme și dimensiuni.







În acest articol, vom afla operațiunile fundamentale cu tensori în PyTorch, vom explora cum să creăm tensori, să efectuăm operații de bază, să le manipulăm forma și să le mutăm între CPU și GPU.



Crearea tensoarelor

Tensorii din PyTorch pot fi creați în mai multe moduri. Să explorăm câteva metode comune.



Pentru a crea un tensor, putem folosi clasa „torch.Tensor” sau funcția „torch.tensor”. Să ne uităm la câteva exemple:





import torță

# Creeaza o 1 - tensor dimensional dintr-o listă Python
tensor_1d = torță. tensor ( [ 1 , 2 , 3 , 4 , 5 ] )
imprimare ( tensor_1d )

# Creeaza o 2 - tensor dimensional dintr-o listă Python imbricată
tensor_2d = torță. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
imprimare ( tensor_2d )

# Creați un tensor de zerouri cu o formă specifică
zeros_tensor = torță. zerouri ( 3 , 2 )
imprimare ( zeros_tensor )

# Creați un tensor al celor cu o formă specifică
ones_tensor = torță. cele ( 2 , 3 )
imprimare ( ones_tensor )

# Creați un tensor cu valori aleatorii dintr-o distribuție uniformă
tensor_aleatoriu = torță. rand ( 2 , 2 )
imprimare ( tensor_aleatoriu )

În exemplele date, creăm tensorii diferitelor forme și le inițializam cu diverse valori, cum ar fi numere specifice, zerouri, unități sau valori aleatorii. Ar trebui să vedeți o ieșire similară când rulați fragmentul de cod anterior:



Operații cu tensori

Odată ce avem tensori, putem efectua diverse operații asupra lor, cum ar fi operații aritmetice pe elemente, operații cu matrice și multe altele.

Operații aritmetice în funcție de elemente

Operațiile aritmetice la nivel de element ne permit să efectuăm calcule între tensori pe o bază element cu element. Tensorii implicați în operație ar trebui să aibă aceeași formă.

Aici sunt cateva exemple:

import torță

# Creați tensori
tensor1 = torță. tensor ( [ 1 , 2 , 3 ] )
tensor2 = torță. tensor ( [ 4 , 5 , 6 ] )

# Adăugare
plus = tensor1 + tensor2
imprimare ( 'Plus:' , plus )

# Scăderea
scădere = tensor1 - tensor2
imprimare ( 'Scădere:' , scădere )

# Înmulțirea
multiplicare = tensor1 * tensor2
imprimare ( 'Multiplicare:' , multiplicare )

# Divizia
Divizia = tensor1 / tensor2
imprimare ( 'Divizia:' , Divizia )

În codul dat, efectuăm operațiile de adunare, scădere, înmulțire și împărțire între doi tensori care rezultă într-un nou tensor cu valorile calculate. Rezultatul fragmentului de cod este afișat după cum urmează:

Operații cu matrice

PyTorch oferă operații eficiente de matrice pentru tensori, cum ar fi multiplicarea și transpunerea matricelor. Aceste operații sunt deosebit de utile pentru sarcini precum algebra liniară și calculele rețelelor neuronale.

import torță

# Creați tensori
tensor1 = torță. tensor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensor2 = torță. tensor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Înmulțirea matricei
produs_matrice = torță. matmul ( tensor1 , tensor2 )
imprimare ( „Produs Matrix:” , produs_matrice )

# Transpunerea matricei
matrix_transpose = tensor1. T
imprimare ( „Transpunerea matricei:” , matrix_transpose )

În exemplul dat, efectuăm înmulțirea matricei folosind funcția „torch.matmul” și obținem transpunerea unei matrice folosind atributul „.T”.

Manipularea formei tensorului

Pe lângă efectuarea de operații pe tensori, adesea trebuie să manipulăm forma acestora pentru a se potrivi cerințelor specifice. PyTorch oferă mai multe funcții pentru a remodela tensorii. Să explorăm câteva dintre aceste funcții:

import torță

# Creați un tensor
tensor = torță. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Reformați tensorul
tensor_reformat = tensor. remodela ( 3 , 2 )
imprimare ( „Tensor remodelat:” , tensor_reformat )

# Obțineți dimensiunea unui tensor
mărimea = tensor. mărimea ( )
imprimare ( „Dimensiunea tensorului:” , mărimea )

# Obțineți numărul de elemente în un tensor
num_elemente = tensor. numel ( )
imprimare ( „Numărul de elemente:” , num_elemente )

În codul furnizat, remodelăm un tensor utilizând funcția de remodelare, recuperăm dimensiunea unui tensor utilizând metoda mărimii și obținem numărul total de elemente dintr-un tensor utilizând metoda numerică.

Mutarea tensoarelor între CPU și GPU

PyTorch oferă suport pentru accelerarea GPU, ceea ce ne permite să efectuăm calcule pe plăcile grafice, ceea ce poate accelera semnificativ sarcinile de învățare profundă prin reducerea timpilor de antrenament. Putem muta tensorii între CPU și GPU folosind metoda „to”.

Notă : Acest lucru se poate face numai dacă aveți un GPU NVIDIA cu CUDA pe computer.

import torță

# Creați un tensor pe CPU
tensor_cpu = torță. tensor ( [ 1 , 2 , 3 ] )

# Verifica dacă GPU este disponibil
dacă torță. diferit . este disponibil ( ) :
# Mutați tensorul în GPU
tensor_gpu = tensor_cpu. la ( 'diferit' )
imprimare ( „Tensor pe GPU:” , tensor_gpu )
altfel :
imprimare ( „GPU nu este disponibil.” )

În codul furnizat, verificăm dacă un GPU este disponibil folosind torch.cuda.is_available(). Dacă este disponibil un GPU, mutăm tensorul de la CPU la GPU folosind metoda „to” cu argumentul „cuda”.

Concluzie

Înțelegerea operațiilor fundamentale ale tensorilor este crucială pentru lucrul cu PyTorch și construirea modelelor de învățare profundă. În acest articol, am explorat cum să creăm tensori, să efectuăm operațiuni de bază, să le manipulăm forma și să le mutăm între CPU și GPU. Înarmați cu aceste cunoștințe, puteți începe acum să lucrați cu tensori în PyTorch, să efectuați calcule și să construiți modele sofisticate de învățare profundă. Tensorii servesc drept bază pentru reprezentarea și manipularea datelor în PyTorch, ceea ce vă permite să eliberați întreaga putere a acestui cadru versatil de învățare automată.