Osnovne operacije s tenzorima u PyTorchu

Osnovne Operacije S Tenzorima U Pytorchu



Tenzori su kamen temeljac PyTorcha koji pruža snažnu i fleksibilnu strukturu podataka za numeričke proračune u dubokom učenju. Kao i NumPy nizovi, oni predstavljaju višedimenzionalne nizove, ali s dodatnim značajkama i optimizacijama koje su posebno dizajnirane za zadatke dubokog učenja. Budući da su tenzori primarni objekti za pohranjivanje i rukovanje numeričkim podacima u PyTorchu, mogu imati različite dimenzije, u rasponu od skalara (0-dimenzionalni tenzori) do vektora (1-dimenzionalni tenzori), matrice (2-dimenzionalni tenzori) i više -dimenzionalni tenzori.

Jedna od najvećih prednosti tenzora je njihova sposobnost izvođenja učinkovitih matematičkih operacija. Tenzori podržavaju širok raspon aritmetičkih operacija uključujući operacije po elementima kao što su zbrajanje, oduzimanje, množenje i dijeljenje te matrične operacije kao što su matrično množenje i transponiranje.

PyTorch pruža opsežan skup funkcija i metoda za manipuliranje tenzorima. To uključuje operacije za preoblikovanje tenzora, izdvajanje specifičnih elemenata ili podtenzora i ulančavanje ili razdvajanje tenzora duž određenih dimenzija. Dodatno, PyTorch nudi funkcionalnosti za indeksiranje, rezanje i emitiranje tenzora što olakšava rad s tenzorima različitih oblika i veličina.







U ovom ćemo članku naučiti temeljne operacije s tenzorima u PyTorchu, istražiti kako stvoriti tenzore, izvesti osnovne operacije, manipulirati njihovim oblikom i premještati ih između CPU-a i GPU-a.



Stvaranje tenzora

Tenzori u PyTorchu mogu se stvoriti na nekoliko načina. Istražimo neke uobičajene metode.



Za izradu tenzora možemo koristiti klasu “torch.Tensor” ili funkciju “torch.tensor”. Pogledajmo neke primjere:





uvoz baklja

# Stvoriti 1 - dimenzionalni tenzor s Python liste
tenzor_1d = baklja. tenzor ( [ 1 , 2 , 3 , 4 , 5 ] )
ispisati ( tenzor_1d )

# Stvoriti 2 - dimenzionalni tenzor iz ugniježđene Python liste
tenzor_2d = baklja. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
ispisati ( tenzor_2d )

# Napravite tenzor nula s određenim oblikom
nula_tenzor = baklja. nule ( 3 , 2 )
ispisati ( nula_tenzor )

# Stvorite tenzor jedinica s određenim oblikom
tenzor_jedinica = baklja. one ( 2 , 3 )
ispisati ( tenzor_jedinica )

# Stvorite tenzor sa slučajnim vrijednostima iz uniformne distribucije
slučajni_tenzor = baklja. rand ( 2 , 2 )
ispisati ( slučajni_tenzor )

U danim primjerima stvaramo tenzore različitih oblika i inicijaliziramo ih različitim vrijednostima kao što su određeni brojevi, nule, jedinice ili slučajne vrijednosti. Trebali biste vidjeti sličan izlaz kada pokrenete prethodni isječak koda:



Tenzorske operacije

Nakon što imamo tenzore, možemo izvoditi razne operacije na njima kao što su aritmetičke operacije po elementima, matrične operacije i još mnogo toga.

Aritmetičke operacije po elementima

Aritmetičke operacije po elementima omogućuju nam izvođenje izračuna između tenzora na bazi element po element. Tenzori uključeni u operaciju trebaju imati isti oblik.

Evo nekoliko primjera:

uvoz baklja

# Stvorite tenzore
tenzor1 = baklja. tenzor ( [ 1 , 2 , 3 ] )
tenzor2 = baklja. tenzor ( [ 4 , 5 , 6 ] )

# Dodavanje
dodatak = tenzor1 + tenzor2
ispisati ( 'Dodatak:' , dodatak )

# Oduzimanje
oduzimanje = tenzor1 - tenzor2
ispisati ( 'Oduzimanje:' , oduzimanje )

# Množenje
množenje = tenzor1 * tenzor2
ispisati ( 'Množenje:' , množenje )

# Podjela
podjela = tenzor1 / tenzor2
ispisati ( 'Podjela:' , podjela )

U danom kodu izvodimo operacije zbrajanja, oduzimanja, množenja i dijeljenja između dva tenzora što rezultira novim tenzorom s izračunatim vrijednostima. Rezultat isječka koda prikazan je na sljedeći način:

Matrične operacije

PyTorch pruža učinkovite matrične operacije za tenzore kao što su množenje matrica i transponiranje. Ove su operacije osobito korisne za zadatke poput linearne algebre i računanja neuronske mreže.

uvoz baklja

# Stvorite tenzore
tenzor1 = baklja. tenzor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tenzor2 = baklja. tenzor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Množenje matrice
matrični_proizvod = baklja. otirač ( tenzor1 , tenzor2 )
ispisati ( 'Matrix proizvod:' , matrični_proizvod )

# Transponiranje matrice
transponiranje_matrice = tenzor1. T
ispisati ( 'Transponiranje matrice:' , transponiranje_matrice )

U navedenom primjeru izvodimo množenje matrice pomoću funkcije “torch.matmul” i dobivamo transponiranje matrice pomoću atributa “.T”.

Manipulacija oblikom tenzora

Osim izvođenja operacija na tenzorima, često moramo manipulirati njihovim oblikom kako bi odgovarali određenim zahtjevima. PyTorch nudi nekoliko funkcija za preoblikovanje tenzora. Istražimo neke od ovih funkcija:

uvoz baklja

# Napravite tenzor
tenzor = baklja. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Preoblikujte tenzor
preoblikovani_tenzor = tenzor. preoblikovati ( 3 , 2 )
ispisati ( 'Preoblikovani tenzor:' , preoblikovani_tenzor )

# Dobijte veličinu tenzora
veličina = tenzor. veličina ( )
ispisati ( 'Veličina tenzora:' , veličina )

# Dobijte broj elemenata u tenzor
broj_elemenata = tenzor. daj ime ( )
ispisati ( 'Broj elemenata:' , broj_elemenata )

U navedenom kodu preoblikujemo tenzor pomoću funkcije reshape, dohvaćamo veličinu tenzora pomoću metode veličine i dobivamo ukupan broj elemenata u tenzoru pomoću metode numel.

Premještanje tenzora između CPU-a i GPU-a

PyTorch pruža podršku za ubrzanje GPU-a što nam omogućuje izvođenje izračuna na grafičkim karticama koje mogu značajno ubrzati zadatke dubokog učenja smanjenjem vremena obuke. Tenzore možemo pomicati između CPU-a i GPU-a pomoću metode 'do'.

Bilješka : Ovo se može učiniti samo ako imate NVIDIA GPU sa CUDA na vašem računalu.

uvoz baklja

# Kreirajte tenzor na CPU-u
tensor_cpu = baklja. tenzor ( [ 1 , 2 , 3 ] )

# Ček ako GPU je dostupan
ako baklja. drugačiji . dostupan ( ) :
# Premjesti tenzor na GPU
tensor_gpu = tensor_cpu. do ( 'drugačiji' )
ispisati ( 'Tenzor na GPU-u:' , tensor_gpu )
drugo :
ispisati ( 'GPU nije dostupan.' )

U ponuđenom kodu provjeravamo je li GPU dostupan pomoću torch.cuda.is_available(). Ako je GPU dostupan, premještamo tenzor s CPU-a na GPU pomoću metode 'to' s argumentom 'cuda'.

Zaključak

Razumijevanje temeljnih tenzorskih operacija ključno je za rad s PyTorchom i izgradnju modela dubokog učenja. U ovom smo članku istražili kako stvoriti tenzore, izvesti osnovne operacije, manipulirati njihovim oblikom i premještati ih između CPU-a i GPU-a. Naoružani ovim znanjem, sada možete početi raditi s tenzorima u PyTorchu, izvoditi proračune i graditi sofisticirane modele dubokog učenja. Tenzori služe kao temelj za predstavljanje podataka i manipulaciju u PyTorchu što vam omogućuje da oslobodite punu snagu ovog svestranog okvira za strojno učenje.