Grunnleggende operasjoner med tensorer i PyTorch

Grunnleggende Operasjoner Med Tensorer I Pytorch



Tensorer er hjørnesteinen i PyTorch som gir en kraftig og fleksibel datastruktur for numeriske beregninger i dyp læring. I likhet med NumPy-matriser representerer de flerdimensjonale matriser, men med tilleggsfunksjoner og optimaliseringer som er spesielt designet for dyplæringsoppgaver. Siden tensorer er de primære objektene for lagring og manipulering av numeriske data i PyTorch, kan de ha forskjellige dimensjoner, alt fra skalarer (0-dimensjonale tensorer) til vektorer (1-dimensjonale tensorer), matriser (2-dimensjonale tensorer) og høyere -dimensjonale tensorer.

En av de største fordelene med tensorer er deres evne til å utføre effektive matematiske operasjoner. Tensorer støtter et bredt spekter av aritmetiske operasjoner, inkludert elementvise operasjoner som addisjon, subtraksjon, multiplikasjon og divisjon og matriseoperasjoner som matrisemultiplikasjon og transponering.

PyTorch gir et omfattende sett med funksjoner og metoder for å manipulere tensorene. Disse inkluderer operasjoner for å omforme tensorene, trekke ut spesifikke elementer eller sub-tensorer, og sammenkoble eller splitte tensorene langs spesifiserte dimensjoner. I tillegg tilbyr PyTorch funksjoner for indeksering, skjæring og kringkasting av tensorene som gjør det lettere å jobbe med tensorer av forskjellige former og størrelser.







I denne artikkelen vil vi lære de grunnleggende operasjonene med tensorer i PyTorch, utforske hvordan du lager tensorer, utfører grunnleggende operasjoner, manipulerer formen deres og flytter dem mellom CPU og GPU.



Opprette tensorer

Tensorer i PyTorch kan lages på flere måter. La oss utforske noen vanlige metoder.



For å lage en tensor kan vi bruke 'torch.Tensor'-klassen eller 'torch.tensor'-funksjonen. La oss se på noen eksempler:





import lommelykt

# Lage en 1 - dimensjonal tensor fra en Python-liste
tensor_1d = lommelykt. tensor ( [ 1 , 2 , 3 , 4 , 5 ] )
skrive ut ( tensor_1d )

# Lage en 2 - dimensjonal tensor fra en nestet Python-liste
tensor_2d = lommelykt. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
skrive ut ( tensor_2d )

# Lag en tensor av nuller med en bestemt form
zeros_tensor = lommelykt. nuller ( 3 , 2 )
skrive ut ( zeros_tensor )

# Lag en tensor av dem med en bestemt form
ones_tensor = lommelykt. seg ( 2 , 3 )
skrive ut ( ones_tensor )

# Lag en tensor med tilfeldige verdier fra en enhetlig fordeling
random_tensor = lommelykt. rand ( 2 , 2 )
skrive ut ( random_tensor )

I de gitte eksemplene lager vi tensorene med forskjellige former og initialiserer dem med forskjellige verdier som spesifikke tall, nuller, enere eller tilfeldige verdier. Du bør se en lignende utgang når du kjører den forrige kodebiten:



Tensoroperasjoner

Når vi har tensorer, kan vi utføre ulike operasjoner på dem, for eksempel elementvise aritmetiske operasjoner, matriseoperasjoner og mer.

Element-kloke aritmetiske operasjoner

Elementvise aritmetiske operasjoner lar oss utføre beregninger mellom tensorer på element-for-element-basis. Tensorene som er involvert i operasjonen skal ha samme form.

Her er noen eksempler:

import lommelykt

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

# Tillegg
addisjon = tensor1 + tensor2
skrive ut ( 'Addisjon:' , addisjon )

# Subtraksjon
subtraksjon = tensor1 - tensor2
skrive ut ( 'Subtraksjon:' , subtraksjon )

# Multiplikasjon
multiplikasjon = tensor1 * tensor2
skrive ut ( 'Multiplikasjon:' , multiplikasjon )

# Divisjon
inndeling = tensor1 / tensor2
skrive ut ( 'Inndeling:' , inndeling )

I den gitte koden utfører vi addisjons-, subtraksjon-, multiplikasjons- og divisjonsoperasjoner mellom to tensorer som resulterer i en ny tensor med de beregnede verdiene. Resultatet av kodebiten vises som følger:

Matriseoperasjoner

PyTorch gir effektive matriseoperasjoner for tensorer som matrisemultiplikasjon og transponering. Disse operasjonene er spesielt nyttige for oppgaver som lineær algebra og nevrale nettverksberegninger.

import lommelykt

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

# Matrisemultiplikasjon
matrise_produkt = lommelykt. matten ( tensor1 , tensor2 )
skrive ut ( 'Matrix Product:' , matrise_produkt )

# Matrisetransponering
matrix_transpose = tensor1. T
skrive ut ( 'Matrix Transpose:' , matrix_transpose )

I det gitte eksemplet utfører vi matrisemultiplikasjonen ved å bruke «torch.matmul»-funksjonen og oppnår transponering av en matrise ved å bruke «.T»-attributtet.

Tensor Shape Manipulation

I tillegg til å utføre operasjoner på tensorer, må vi ofte manipulere formen deres for å passe spesifikke krav. PyTorch har flere funksjoner for å omforme tensorene. La oss utforske noen av disse funksjonene:

import lommelykt

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

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

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

# Få antall elementer i en tensor
antall_elementer = tensor. gi navn ( )
skrive ut ( 'Antall elementer:' , antall_elementer )

I den medfølgende koden omformer vi en tensor ved hjelp av omformingsfunksjonen, henter størrelsen på en tensor ved hjelp av størrelsesmetoden, og får det totale antallet elementer i en tensor ved å bruke numelmetoden.

Flytte tensorer mellom CPU og GPU

PyTorch gir støtte for GPU-akselerasjon som lar oss utføre beregninger på grafikkort som kan øke hastigheten på dyplæringsoppgavene betydelig ved å senke treningstidene. Vi kan flytte tensorene mellom CPU og GPU ved å bruke 'til'-metoden.

Merk : Dette kan bare gjøres hvis du har en NVIDIA GPU med CUDA på maskinen din.

import lommelykt

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

# Kryss av hvis GPU er tilgjengelig
hvis lommelykt. annerledes . er tilgjengelig ( ) :
# Flytt tensoren til GPU
tensor_gpu = tensor_cpu. til ( 'annerledes' )
skrive ut ( 'Tensor på GPU:' , tensor_gpu )
ellers :
skrive ut ( 'GPU ikke tilgjengelig.' )

I den oppgitte koden sjekker vi om en GPU er tilgjengelig ved å bruke torch.cuda.is_available(). Hvis en GPU er tilgjengelig, flytter vi tensoren fra CPU til GPU ved å bruke 'til'-metoden med 'cuda'-argumentet.

Konklusjon

Å forstå de grunnleggende tensoroperasjonene er avgjørende for å jobbe med PyTorch og bygge dyplæringsmodellene. I denne artikkelen utforsket vi hvordan du lager tensorer, utfører grunnleggende operasjoner, manipulerer formen deres og flytter dem mellom CPU og GPU. Bevæpnet med denne kunnskapen kan du nå begynne å jobbe med tensorer i PyTorch, utføre beregninger og bygge sofistikerte dyplæringsmodeller. Tensorer fungerer som grunnlaget for datarepresentasjon og manipulering i PyTorch, som lar deg slippe løs kraften til dette allsidige maskinlæringsrammeverket.