Základné operácie s tenzormi v PyTorch

Zakladne Operacie S Tenzormi V Pytorch



Tenzory sú základným kameňom PyTorch, ktorý poskytuje výkonnú a flexibilnú dátovú štruktúru pre numerické výpočty v hlbokom učení. Rovnako ako polia NumPy predstavujú viacrozmerné polia, ale s ďalšími funkciami a optimalizáciami, ktoré sú špeciálne navrhnuté pre úlohy hlbokého učenia. Keďže tenzory sú primárne objekty na ukladanie a manipuláciu s číselnými údajmi v PyTorch, môžu mať rôzne rozmery, od skalárov (0-rozmerné tenzory) po vektory (1-rozmerné tenzory), matice (2-rozmerné tenzory) a vyššie. -rozmerné tenzory.

Jednou z najväčších výhod tenzorov je ich schopnosť vykonávať efektívne matematické operácie. Tenzory podporujú širokú škálu aritmetických operácií vrátane operácií s prvkami, ako je sčítanie, odčítanie, násobenie a delenie, a maticové operácie, ako je násobenie a transpozícia matice.

PyTorch poskytuje komplexný súbor funkcií a metód na manipuláciu s tenzormi. Patria sem operácie na pretvarovanie tenzorov, extrahovanie špecifických prvkov alebo sub-tenzorov a zreťazenie alebo rozdelenie tenzorov pozdĺž špecifikovaných rozmerov. Okrem toho PyTorch ponúka funkcie na indexovanie, krájanie a vysielanie tenzorov, ktoré uľahčujú prácu s tenzormi rôznych tvarov a veľkostí.







V tomto článku sa naučíme základné operácie s tenzormi v PyTorch, preskúmame, ako vytvárať tenzory, vykonávať základné operácie, manipulovať s ich tvarom a presúvať ich medzi CPU a GPU.



Vytváranie tenzorov

Tenzory v PyTorch môžu byť vytvorené niekoľkými spôsobmi. Pozrime sa na niektoré bežné metódy.



Na vytvorenie tenzora môžeme použiť triedu „torch.Tensor“ alebo funkciu „torch.tensor“. Pozrime sa na niekoľko príkladov:





importovať fakľa

# Vytvor 1 - rozmerový tenzor zo zoznamu Pythonu
tensor_1d = fakľa. tenzor ( [ 1 , 2 , 3 , 4 , 5 ] )
vytlačiť ( tensor_1d )

# Vytvor 2 - rozmerový tenzor z vnoreného zoznamu Pythonu
tensor_2d = fakľa. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
vytlačiť ( tensor_2d )

# Vytvorte tenzor núl so špecifickým tvarom
zeros_tensor = fakľa. nuly ( 3 , 2 )
vytlačiť ( zeros_tensor )

# Vytvorte tenzor z nich so špecifickým tvarom
one_tensor = fakľa. tie ( 2 , 3 )
vytlačiť ( one_tensor )

# Vytvorte tenzor s náhodnými hodnotami z rovnomerného rozdelenia
random_tensor = fakľa. rand ( 2 , 2 )
vytlačiť ( random_tensor )

V uvedených príkladoch vytvárame tenzory rôznych tvarov a inicializujeme ich rôznymi hodnotami, ako sú konkrétne čísla, nuly, jednotky alebo náhodné hodnoty. Pri spustení predchádzajúceho útržku kódu by ste mali vidieť podobný výstup:



Tenzorové operácie

Keď máme tenzory, môžeme s nimi vykonávať rôzne operácie, ako sú aritmetické operácie s prvkami, maticové operácie a ďalšie.

Element-Wise aritmetické operácie

Aritmetické operácie na základe prvkov nám umožňujú vykonávať výpočty medzi tenzormi na báze prvku po prvku. Tenzory zapojené do operácie by mali mať rovnaký tvar.

Tu je niekoľko príkladov:

importovať fakľa

# Vytvorte tenzory
tenzor1 = fakľa. tenzor ( [ 1 , 2 , 3 ] )
tenzor2 = fakľa. tenzor ( [ 4 , 5 , 6 ] )

# Dodatok
doplnenie = tenzor1 + tenzor2
vytlačiť ( 'Doplnenie:' , doplnenie )

# Odčítanie
odčítanie = tenzor1 - tenzor2
vytlačiť ( 'Odčítanie:' , odčítanie )

# Násobenie
násobenie = tenzor1 * tenzor2
vytlačiť ( 'Násobenie:' , násobenie )

# divízia
divízie = tenzor1 / tenzor2
vytlačiť ( 'Oddelenie:' , divízie )

V danom kóde vykonávame operácie sčítania, odčítania, násobenia a delenia medzi dvoma tenzormi, výsledkom čoho je nový tenzor s vypočítanými hodnotami. Výsledok útržku kódu je zobrazený takto:

Maticové operácie

PyTorch poskytuje efektívne maticové operácie pre tenzory, ako je násobenie matice a transpozícia. Tieto operácie sú obzvlášť užitočné pre úlohy ako lineárna algebra a výpočty neurónových sietí.

importovať fakľa

# Vytvorte tenzory
tenzor1 = fakľa. tenzor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tenzor2 = fakľa. tenzor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Násobenie matice
matrix_product = fakľa. rohož ( tenzor1 , tenzor2 )
vytlačiť ( 'Matričný produkt:' , matrix_product )

# Maticová transpozícia
matrix_transpose = tenzor1. T
vytlačiť ( 'Matričná transpozícia:' , matrix_transpose )

V uvedenom príklade vykonáme násobenie matice pomocou funkcie „torch.matmul“ a transpozíciu matice získame pomocou atribútu „.T“.

Manipulácia s tvarom tenzora

Okrem vykonávania operácií na tenzoroch často potrebujeme manipulovať s ich tvarom, aby vyhovoval špecifickým požiadavkám. PyTorch poskytuje niekoľko funkcií na pretvorenie tenzorov. Poďme preskúmať niektoré z týchto funkcií:

importovať fakľa

# Vytvorte tenzor
tenzor = fakľa. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Pretvarujte tenzor
pretvarovaný_tensor = tenzor. pretvarovať ( 3 , 2 )
vytlačiť ( 'Pretvarovaný tenzor:' , pretvarovaný_tensor )

# Získajte veľkosť tenzora
veľkosť = tenzor. veľkosť ( )
vytlačiť ( 'Veľkosť tenzora:' , veľkosť )

# Získajte počet prvkov v tenzor
num_elements = tenzor. dať meno ( )
vytlačiť ( 'Počet prvkov:' , num_elements )

V poskytnutom kóde pretvoríme tenzor pomocou funkcie pretvarovania, načítame veľkosť tenzora pomocou metódy veľkosti a získame celkový počet prvkov v tenzore pomocou metódy numel.

Pohybujúce sa tenzory medzi CPU a GPU

PyTorch poskytuje podporu pre akceleráciu GPU, ktorá nám umožňuje vykonávať výpočty na grafických kartách, čo môže výrazne urýchliť úlohy hlbokého učenia skrátením času školenia. Tenzory medzi CPU a GPU môžeme presúvať metódou „to“.

Poznámka : Toto je možné vykonať iba vtedy, ak máte na svojom počítači GPU NVIDIA s CUDA.

importovať fakľa

# Vytvorte tenzor na CPU
tensor_cpu = fakľa. tenzor ( [ 1 , 2 , 3 ] )

# Skontrolujte ak GPU je k dispozícii
ak fakľa. rôzne . je k dispozícii ( ) :
# Presuňte tenzor na GPU
tensor_gpu = tensor_cpu. do ( 'iný' )
vytlačiť ( 'Tensor na GPU:' , tensor_gpu )
inak :
vytlačiť ( 'GPU nie je k dispozícii.' )

V poskytnutom kóde skontrolujeme, či je GPU k dispozícii pomocou torch.cuda.is_available(). Ak je k dispozícii GPU, presunieme tenzor z CPU na GPU pomocou metódy „to“ s argumentom „cuda“.

Záver

Pochopenie základných operácií tenzorov je kľúčové pre prácu s PyTorch a vytváranie modelov hlbokého učenia. V tomto článku sme skúmali, ako vytvárať tenzory, vykonávať základné operácie, manipulovať s ich tvarom a presúvať ich medzi CPU a GPU. Vyzbrojení týmito znalosťami môžete teraz začať pracovať s tenzormi v PyTorch, vykonávať výpočty a vytvárať sofistikované modely hlbokého učenia. Tenzory slúžia ako základ pre reprezentáciu údajov a manipuláciu s nimi v PyTorch, čo vám umožňuje naplno využiť tento všestranný rámec strojového učenia.