Operacions fonamentals amb tensors a PyTorch

Operacions Fonamentals Amb Tensors A Pytorch



Els tensors són la pedra angular de PyTorch, que proporciona una estructura de dades potent i flexible per a càlculs numèrics en aprenentatge profund. Igual que les matrius NumPy, representen matrius multidimensionals, però amb funcions i optimitzacions addicionals dissenyades específicament per a tasques d'aprenentatge profund. Com que els tensors són els objectes principals per emmagatzemar i manipular les dades numèriques a PyTorch, poden tenir diferents dimensions, que van des d'escalars (tensors de 0 dimensions) fins a vectors (tensors d'1 dimensió), matrius (tensors de 2 dimensions) i superiors. -tensors dimensionals.

Un dels majors avantatges dels tensors és la seva capacitat per realitzar operacions matemàtiques eficients. Els tensors admeten una àmplia gamma d'operacions aritmètiques, incloses les operacions d'elements com la suma, la resta, la multiplicació i la divisió i les operacions de matriu com la multiplicació i transposició de matrius.

PyTorch proporciona un conjunt complet de funcions i mètodes per manipular els tensors. Aquestes inclouen operacions per remodelar els tensors, extreure elements o subtensors específics i concatenar o dividir els tensors al llarg de dimensions especificades. A més, PyTorch ofereix funcionalitats per indexar, tallar i difondre els tensors que faciliten el treball amb tensors de diferents formes i mides.







En aquest article, aprendrem les operacions fonamentals amb tensors a PyTorch, explorarem com crear tensors, realitzar operacions bàsiques, manipular-ne la forma i moure'ls entre la CPU i la GPU.



Creació de tensors

Els tensors a PyTorch es poden crear de diverses maneres. Explorem alguns mètodes comuns.



Per crear un tensor, podem utilitzar la classe 'torch.Tensor' o la funció 'torch.tensor'. Vegem alguns exemples:





importar torxa

# Crea un 1 - tensor dimensional d'una llista de Python
tensor_1d = torxa. tensor ( [ 1 , 2 , 3 , 4 , 5 ] )
imprimir ( tensor_1d )

# Crea un 2 - tensor dimensional d'una llista de Python imbricada
tensor_2d = torxa. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
imprimir ( tensor_2d )

# Crea un tensor de zeros amb una forma específica
tensor_zeros = torxa. zeros ( 3 , 2 )
imprimir ( tensor_zeros )

# Crea un tensor d'uns amb una forma específica
uns_tensor = torxa. uns ( 2 , 3 )
imprimir ( uns_tensor )

# Crea un tensor amb valors aleatoris a partir d'una distribució uniforme
tensor_atzar = torxa. rand ( 2 , 2 )
imprimir ( tensor_atzar )

En els exemples donats, creem els tensors de diferents formes i els inicialitzem amb diversos valors com ara nombres específics, zeros, uns o valors aleatoris. Hauríeu de veure una sortida similar quan executeu el fragment de codi anterior:



Operacions de tensors

Un cop tenim tensors, podem realitzar-hi diverses operacions, com ara les operacions aritmètiques per elements, les operacions de matriu i molt més.

Operacions aritmètiques per elements

Les operacions aritmètiques per element ens permeten realitzar càlculs entre tensors element per element. Els tensors implicats en l'operació han de tenir la mateixa forma.

Aquests són alguns exemples:

importar torxa

# Crea tensors
tensor 1 = torxa. tensor ( [ 1 , 2 , 3 ] )
tensor2 = torxa. tensor ( [ 4 , 5 , 6 ] )

# Addició
addició = tensor 1 + tensor2
imprimir ( 'Addició:' , addició )

# Resta
resta = tensor 1 - tensor2
imprimir ( 'Resta:' , resta )

# Multiplicació
multiplicació = tensor 1 * tensor2
imprimir ( 'Multiplicació:' , multiplicació )

# Divisió
divisió = tensor 1 / tensor2
imprimir ( 'Divisió:' , divisió )

En el codi donat, realitzem les operacions de suma, resta, multiplicació i divisió entre dos tensors que donen lloc a un nou tensor amb els valors calculats. El resultat del fragment de codi es mostra de la manera següent:

Operacions matricials

PyTorch proporciona operacions matricials eficients per a tensors com ara la multiplicació i la transposició de matrius. Aquestes operacions són especialment útils per a tasques com àlgebra lineal i càlculs de xarxes neuronals.

importar torxa

# Crea tensors
tensor 1 = torxa. tensor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensor2 = torxa. tensor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Multiplicació de matrius
producte_matriu = torxa. l'estora ( tensor 1 , tensor2 )
imprimir ( 'Producte Matrix:' , producte_matriu )

# Transposició de matrius
matriu_transposar = tensor 1. T
imprimir ( 'Transposició de matriu:' , matriu_transposar )

En l'exemple donat, realitzem la multiplicació de matrius mitjançant la funció 'torch.matmul' i obtenim la transposició d'una matriu mitjançant l'atribut '.T'.

Manipulació de la forma del tensor

A més de realitzar operacions sobre tensors, sovint hem de manipular la seva forma per adaptar-se a requisits específics. PyTorch proporciona diverses funcions per remodelar els tensors. Explorem algunes d'aquestes funcions:

importar torxa

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

# Reforma el tensor
tensor_reformat = tensor. remodelar ( 3 , 2 )
imprimir ( 'Tensor remodelat:' , tensor_reformat )

# Obteniu la mida d'un tensor
mida = tensor. mida ( )
imprimir ( 'Mida del tensor:' , mida )

# Obteniu el nombre d'elements en un tensor
num_elements = tensor. donar nom ( )
imprimir ( 'Nombre d'elements:' , num_elements )

Al codi proporcionat, remodelem un tensor mitjançant la funció de remodelació, recuperem la mida d'un tensor mitjançant el mètode de mida i obtenim el nombre total d'elements d'un tensor mitjançant el mètode numèric.

Moviment de tensors entre CPU i GPU

PyTorch proporciona suport per a l'acceleració de la GPU que ens permet realitzar càlculs en targetes gràfiques que poden accelerar significativament les tasques d'aprenentatge profund reduint els temps d'entrenament. Podem moure els tensors entre la CPU i la GPU mitjançant el mètode 'a'.

Nota : Això només es pot fer si teniu una GPU NVIDIA amb CUDA a la vostra màquina.

importar torxa

# Creeu un tensor a la CPU
tensor_cpu = torxa. tensor ( [ 1 , 2 , 3 ] )

# Comprova si La GPU està disponible
si torxa. diferents . està disponible ( ) :
# Mou el tensor a la GPU
tensor_gpu = tensor_cpu. a ( 'diferent' )
imprimir ( 'Tensor a la GPU:' , tensor_gpu )
altra cosa :
imprimir ( 'GPU no disponible.' )

Al codi proporcionat, comprovem si hi ha una GPU disponible mitjançant torch.cuda.is_available(). Si hi ha una GPU disponible, movem el tensor de la CPU a la GPU mitjançant el mètode 'to' amb l'argument 'cuda'.

Conclusió

Entendre les operacions fonamentals dels tensors és crucial per treballar amb PyTorch i construir els models d'aprenentatge profund. En aquest article, hem explorat com crear tensors, realitzar operacions bàsiques, manipular-ne la forma i moure'ls entre la CPU i la GPU. Amb aquest coneixement, ara podeu començar a treballar amb tensors a PyTorch, realitzar càlculs i crear models sofisticats d'aprenentatge profund. Els tensors serveixen com a base per a la representació i manipulació de dades a PyTorch, cosa que us permet alliberar tota la potència d'aquest versàtil marc d'aprenentatge automàtic.