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.