Grundläggande verksamhet med tensorer i PyTorch

Grundlaggande Verksamhet Med Tensorer I Pytorch



Tensorer är hörnstenen i PyTorch som ger en kraftfull och flexibel datastruktur för numeriska beräkningar inom djupinlärning. Liksom NumPy-matriser representerar de flerdimensionella matriser men med ytterligare funktioner och optimeringar som är speciellt utformade för djupinlärningsuppgifter. Eftersom tensorer är de primära objekten för att lagra och manipulera numeriska data i PyTorch, kan de ha olika dimensioner, allt från skalärer (0-dimensionella tensorer) till vektorer (1-dimensionella tensorer), matriser (2-dimensionella tensorer) och högre -dimensionella tensorer.

En av de största fördelarna med tensorer är deras förmåga att utföra effektiva matematiska operationer. Tensorer stöder ett brett spektrum av aritmetiska operationer inklusive elementvisa operationer som addition, subtraktion, multiplikation och division och matrisoperationer som matrismultiplikation och transponering.

PyTorch tillhandahåller en omfattande uppsättning funktioner och metoder för att manipulera tensorerna. Dessa inkluderar operationer för att omforma tensorerna, extrahera specifika element eller subtensorer och sammanfoga eller dela tensorerna längs specificerade dimensioner. Dessutom erbjuder PyTorch funktioner för att indexera, skiva och sända tensorerna, vilket gör det lättare att arbeta med tensorer av olika former och storlekar.







I den här artikeln kommer vi att lära oss de grundläggande operationerna med tensorer i PyTorch, utforska hur man skapar tensorer, utför grundläggande operationer, manipulerar deras form och flyttar dem mellan CPU och GPU.



Skapa tensorer

Tensorer i PyTorch kan skapas på flera sätt. Låt oss utforska några vanliga metoder.



För att skapa en tensor kan vi använda klassen 'torch.Tensor' eller funktionen 'torch.tensor'. Låt oss titta på några exempel:





importera fackla

# Skapa en 1 - dimensionell tensor från en Python-lista
tensor_1d = fackla. tensor ( [ 1 , 2 , 3 , 4 , 5 ] )
skriva ut ( tensor_1d )

# Skapa en 2 - dimensionell tensor från en kapslad Python-lista
tensor_2d = fackla. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
skriva ut ( tensor_2d )

# Skapa en tensor av nollor med en specifik form
zeros_tensor = fackla. nollor ( 3 , 2 )
skriva ut ( zeros_tensor )

# Skapa en tensor av sådana med en specifik form
ones_tensor = fackla. ettor ( 2 , 3 )
skriva ut ( ones_tensor )

# Skapa en tensor med slumpmässiga värden från en enhetlig fördelning
random_tensor = fackla. rand ( 2 , 2 )
skriva ut ( random_tensor )

I de givna exemplen skapar vi tensorer av olika former och initialiserar dem med olika värden som specifika tal, nollor, ettor eller slumpmässiga värden. Du bör se en liknande utdata när du kör det föregående kodavsnittet:



Tensor Operations

När vi väl har tensorer kan vi utföra olika operationer på dem som elementvisa aritmetiska operationer, matrisoperationer och mer.

Element-Wise Aritmetic Operations

Elementvisa aritmetiska operationer tillåter oss att utföra beräkningar mellan tensorer på en element-för-element-basis. Tensorerna som är involverade i operationen bör ha samma form.

Här är några exempel:

importera fackla

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

# Tillägg
tillägg = tensor1 + tensor2
skriva ut ( 'Tillägg:' , tillägg )

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

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

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

I den givna koden utför vi addition, subtraktion, multiplikation och division mellan två tensorer vilket resulterar i en ny tensor med de beräknade värdena. Resultatet av kodavsnittet visas enligt följande:

Matrisoperationer

PyTorch tillhandahåller effektiva matrisoperationer för tensorer som matrismultiplikation och transponering. Dessa operationer är särskilt användbara för uppgifter som linjär algebra och neurala nätverksberäkningar.

importera fackla

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

# Matrismultiplikation
matrisprodukt = fackla. mattan ( tensor1 , tensor2 )
skriva ut ( 'Matrix Product:' , matrisprodukt )

# Matristransponera
matrix_transpose = tensor1. T
skriva ut ( 'Matrix Transpose:' , matrix_transpose )

I det givna exemplet utför vi matrismultiplikationen med 'torch.matmul'-funktionen och erhåller transponeringen av en matris med '.T'-attributet.

Tensor Shape Manipulation

Förutom att utföra operationer på tensorer behöver vi ofta manipulera deras form för att passa specifika krav. PyTorch tillhandahåller flera funktioner för att omforma tensorerna. Låt oss utforska några av dessa funktioner:

importera fackla

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

# Forma om tensorn
omformad_tensor = tensor. omforma ( 3 , 2 )
skriva ut ( 'Omformad Tensor:' , omformad_tensor )

# Få storleken på en tensor
storlek = tensor. storlek ( )
skriva ut ( 'Storlek på Tensor:' , storlek )

# Få antalet element i en tensor
antal_element = tensor. namnge ( )
skriva ut ( 'Antal element:' , antal_element )

I den medföljande koden omformar vi en tensor med hjälp av omformningsfunktionen, hämtar storleken på en tensor med hjälp av storleksmetoden och erhåller det totala antalet element i en tensor med numelmetoden.

Flytta tensorer mellan CPU och GPU

PyTorch tillhandahåller stöd för GPU-acceleration vilket gör att vi kan utföra beräkningar på grafikkort vilket avsevärt kan påskynda djupinlärningsuppgifterna genom att sänka träningstiderna. Vi kan flytta tensorerna mellan CPU och GPU med 'till'-metoden.

Notera : Detta kan bara göras om du har en NVIDIA GPU med CUDA på din maskin.

importera fackla

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

# Kolla upp om GPU är tillgänglig
om fackla. annorlunda . är tillgänglig ( ) :
# Flytta tensorn till GPU
tensor_gpu = tensor_cpu. till ( 'annorlunda' )
skriva ut ( 'Tensor på GPU:' , tensor_gpu )
annan :
skriva ut ( 'GPU inte tillgänglig.' )

I den medföljande koden kontrollerar vi om en GPU är tillgänglig med hjälp av torch.cuda.is_available(). Om en GPU är tillgänglig flyttar vi tensorn från CPU:n till GPU:n med hjälp av 'to'-metoden med 'cuda'-argumentet.

Slutsats

Att förstå de grundläggande tensoroperationerna är avgörande för att arbeta med PyTorch och bygga modellerna för djupinlärning. I den här artikeln utforskade vi hur man skapar tensorer, utför grundläggande operationer, manipulerar deras form och flyttar dem mellan CPU och GPU. Beväpnad med denna kunskap kan du nu börja arbeta med tensorer i PyTorch, utföra beräkningar och bygga sofistikerade modeller för djupinlärning. Tensorer fungerar som grunden för datarepresentation och manipulation i PyTorch, vilket gör att du kan släppa lös den fulla kraften i detta mångsidiga maskininlärningsramverk.