Grundlæggende operationer med tensorer i PyTorch

Grundlaeggende Operationer Med Tensorer I Pytorch



Tensorer er hjørnestenen i PyTorch, som giver en kraftfuld og fleksibel datastruktur til numeriske beregninger i deep learning. Ligesom NumPy-arrays repræsenterer de multidimensionelle arrays, men med yderligere funktioner og optimeringer, der er specielt designet til dybe læringsopgaver. Da tensorer er de primære objekter til lagring og manipulation af de numeriske data i PyTorch, kan de have forskellige dimensioner, lige fra skalarer (0-dimensionelle tensorer) til vektorer (1-dimensionelle tensorer), matricer (2-dimensionelle tensorer) og højere -dimensionelle tensorer.

En af de største fordele ved tensorer er deres evne til at udføre effektive matematiske operationer. Tensorer understøtter en bred vifte af aritmetiske operationer, herunder element-vise operationer som addition, subtraktion, multiplikation og division og matrixoperationer som matrix multiplikation og transponering.

PyTorch giver et omfattende sæt funktioner og metoder til at manipulere tensorerne. Disse omfatter operationer til at omforme tensorerne, udtrække specifikke elementer eller sub-tensorer og sammenkæde eller opdele tensorerne langs specificerede dimensioner. Derudover tilbyder PyTorch funktioner til indeksering, udskæring og udsendelse af tensorerne, hvilket gør det lettere at arbejde med tensorer af forskellige former og størrelser.







I denne artikel vil vi lære de grundlæggende operationer med tensorer i PyTorch, udforske, hvordan man opretter tensorer, udfører grundlæggende operationer, manipulerer deres form og flytter dem mellem CPU og GPU.



Oprettelse af tensorer

Tensorer i PyTorch kan oprettes på flere måder. Lad os undersøge nogle almindelige metoder.



For at oprette en tensor kan vi bruge klassen 'torch.Tensor' eller funktionen 'torch.tensor'. Lad os se på nogle eksempler:





importere fakkel

# Lave en 1 - dimensionel tensor fra en Python-liste
tensor_1d = fakkel. tensor ( [ 1 , 2 , 3 , 4 , 5 ] )
Print ( tensor_1d )

# Lave en 2 - dimensionel tensor fra en indlejret Python-liste
tensor_2d = fakkel. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
Print ( tensor_2d )

# Opret en tensor af nuller med en bestemt form
nuller_tensor = fakkel. nuller ( 3 , 2 )
Print ( nuller_tensor )

# Opret en tensor af dem med en bestemt form
ones_tensor = fakkel. dem ( 2 , 3 )
Print ( ones_tensor )

# Opret en tensor med tilfældige værdier fra en ensartet fordeling
random_tensor = fakkel. rand ( 2 , 2 )
Print ( random_tensor )

I de givne eksempler opretter vi tensorerne af forskellige former og initialiserer dem med forskellige værdier såsom specifikke tal, nuller, enere eller tilfældige værdier. Du bør se et lignende output, når du kører det forrige kodestykke:



Tensor operationer

Når vi har tensorer, kan vi udføre forskellige operationer på dem, såsom element-vise aritmetiske operationer, matrixoperationer og mere.

Element-kloge aritmetiske operationer

Element-vise aritmetiske operationer giver os mulighed for at udføre beregninger mellem tensorer på en element-for-element basis. Tensorerne involveret i operationen skal have samme form.

Her er nogle eksempler:

importere fakkel

# Opret tensorer
tensor1 = fakkel. tensor ( [ 1 , 2 , 3 ] )
tensor2 = fakkel. tensor ( [ 4 , 5 , 6 ] )

# Tilføjelse
tilføjelse = tensor1 + tensor2
Print ( 'Tilføjelse:' , tilføjelse )

# Subtraktion
subtraktion = tensor1 - tensor2
Print ( 'Subtraktion:' , subtraktion )

# Multiplikation
multiplikation = tensor1 * tensor2
Print ( 'Multiplikation:' , multiplikation )

# Division
division = tensor1 / tensor2
Print ( 'Division:' , division )

I den givne kode udfører vi addition, subtraktion, multiplikation og division mellem to tensorer, hvilket resulterer i en ny tensor med de beregnede værdier. Resultatet af kodestykket vises som følger:

Matrix operationer

PyTorch leverer effektive matrixoperationer til tensorer såsom matrixmultiplikation og transponering. Disse operationer er især nyttige til opgaver som lineær algebra og neurale netværksberegninger.

importere fakkel

# Opret tensorer
tensor1 = fakkel. tensor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensor2 = fakkel. tensor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Matrix multiplikation
matrix_produkt = fakkel. måtten ( tensor1 , tensor2 )
Print ( 'Matrix Produkt:' , matrix_produkt )

# Matrix transponering
matrix_transponere = tensor1. T
Print ( 'Matrix Transpose:' , matrix_transponere )

I det givne eksempel udfører vi matrixmultiplikationen ved hjælp af 'torch.matmul'-funktionen og opnår transponering af en matrix ved hjælp af '.T'-attributten.

Tensor Shape Manipulation

Ud over at udføre operationer på tensorer, er vi ofte nødt til at manipulere deres form, så de passer til specifikke krav. PyTorch giver flere funktioner til at omforme tensorerne. Lad os undersøge nogle af disse funktioner:

importere fakkel

# Opret en tensor
tensor = fakkel. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Omform tensoren
omformet_tensor = tensor. omforme ( 3 , 2 )
Print ( 'Omformet tensor:' , omformet_tensor )

# Få størrelsen på en tensor
størrelse = tensor. størrelse ( )
Print ( 'Størrelse af Tensor:' , størrelse )

# Få antallet af elementer i en tensor
antal_elementer = tensor. give navn ( )
Print ( 'Antal elementer:' , antal_elementer )

I den medfølgende kode omformer vi en tensor ved hjælp af omformningsfunktionen, henter størrelsen af ​​en tensor ved hjælp af størrelsesmetoden og opnår det samlede antal elementer i en tensor ved hjælp af numelmetoden.

Flytning af tensorer mellem CPU og GPU

PyTorch giver support til GPU-acceleration, som giver os mulighed for at udføre beregninger på grafikkort, hvilket kan fremskynde de dybe læringsopgaver betydeligt ved at sænke træningstiderne. Vi kan flytte tensorerne mellem CPU'en og GPU'en ved at bruge 'til'-metoden.

Bemærk : Dette kan kun lade sig gøre, hvis du har en NVIDIA GPU med CUDA på din maskine.

importere fakkel

# Opret en tensor på CPU
tensor_cpu = fakkel. tensor ( [ 1 , 2 , 3 ] )

# Kontrollere hvis GPU er tilgængelig
hvis fakkel. forskellige . er tilgængelig ( ) :
# Flyt tensoren til GPU
tensor_gpu = tensor_cpu. til ( 'forskellige' )
Print ( 'Tensor på GPU:' , tensor_gpu )
andet :
Print ( 'GPU ikke tilgængelig.' )

I den medfølgende kode tjekker vi, om en GPU er tilgængelig ved at bruge torch.cuda.is_available(). Hvis en GPU er tilgængelig, flytter vi tensoren fra CPU'en til GPU'en ved at bruge 'til'-metoden med 'cuda'-argumentet.

Konklusion

At forstå de grundlæggende tensoroperationer er afgørende for at arbejde med PyTorch og opbygge de dybe læringsmodeller. I denne artikel undersøgte vi, hvordan man opretter tensorer, udfører grundlæggende handlinger, manipulerer deres form og flytter dem mellem CPU og GPU. Bevæbnet med denne viden kan du nu begynde at arbejde med tensorer i PyTorch, udføre beregninger og bygge sofistikerede deep-learning-modeller. Tensorer tjener som grundlaget for datarepræsentation og -manipulation i PyTorch, som sætter dig i stand til at frigøre den fulde kraft af denne alsidige maskinlæringsramme.