Základní operace s tenzory v PyTorch

Zakladni Operace S Tenzory V Pytorch



Tenzory jsou základním kamenem PyTorch, který poskytuje výkonnou a flexibilní datovou strukturu pro numerické výpočty v hlubokém učení. Stejně jako pole NumPy představují vícerozměrná pole, ale s dalšími funkcemi a optimalizacemi, které jsou speciálně navrženy pro úkoly hlubokého učení. Protože tenzory jsou primární objekty pro ukládání a manipulaci s numerickými daty v PyTorch, mohou mít různé rozměry, od skalárů (0-rozměrné tenzory) po vektory (1-rozměrné tenzory), matice (2-rozměrné tenzory) a vyšší. -rozměrové tenzory.

Jednou z největších výhod tenzorů je jejich schopnost provádět efektivní matematické operace. Tenzory podporují širokou škálu aritmetických operací včetně prvkových operací, jako je sčítání, odčítání, násobení a dělení, a maticových operací, jako je násobení matice a transpozice.

PyTorch poskytuje komplexní sadu funkcí a metod pro manipulaci s tenzory. Patří mezi ně operace pro přetváření tenzorů, extrahování specifických prvků nebo sub-tenzorů a zřetězení nebo rozdělení tenzorů podél zadaných rozměrů. PyTorch navíc nabízí funkce pro indexování, krájení a vysílání tenzorů, které usnadňují práci s tenzory různých tvarů a velikostí.







V tomto článku se naučíme základní operace s tenzory v PyTorch, prozkoumáme, jak vytvářet tenzory, provádět základní operace, manipulovat s jejich tvarem a přesouvat je mezi CPU a GPU.



Vytváření tenzorů

Tenzory v PyTorch lze vytvořit několika způsoby. Pojďme prozkoumat některé běžné metody.



K vytvoření tenzoru můžeme použít třídu „torch.Tensor“ nebo funkci „torch.tensor“. Podívejme se na několik příkladů:





import pochodeň

# Vytvořit 1 - rozměrový tenzor ze seznamu Pythonu
tensor_1d = pochodeň. tenzor ( [ 1 , 2 , 3 , 4 , 5 ] )
tisk ( tensor_1d )

# Vytvořit 2 - dimenzionální tenzor z vnořeného seznamu Pythonu
tensor_2d = pochodeň. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
tisk ( tensor_2d )

# Vytvořte tenzor nul s konkrétním tvarem
zeros_tensor = pochodeň. nuly ( 3 , 2 )
tisk ( zeros_tensor )

# Vytvořte tenzor jedniček s konkrétním tvarem
one_tensor = pochodeň. jedničky ( 2 , 3 )
tisk ( one_tensor )

# Vytvořte tenzor s náhodnými hodnotami z rovnoměrného rozdělení
random_tensor = pochodeň. rand ( 2 , 2 )
tisk ( random_tensor )

V uvedených příkladech vytváříme tenzory různých tvarů a inicializujeme je různými hodnotami, jako jsou konkrétní čísla, nuly, jedničky nebo náhodné hodnoty. Při spuštění předchozího fragmentu kódu byste měli vidět podobný výstup:



Tenzorové operace

Jakmile máme tenzory, můžeme s nimi provádět různé operace, jako jsou aritmetické operace s prvky, maticové operace a další.

Element-Wise aritmetické operace

Elementové aritmetické operace nám umožňují provádět výpočty mezi tenzory na bázi element po elementu. Tenzory zapojené do operace by měly mít stejný tvar.

Zde jsou nějaké příklady:

import pochodeň

# Vytvořte tenzory
tenzor1 = pochodeň. tenzor ( [ 1 , 2 , 3 ] )
tenzor 2 = pochodeň. tenzor ( [ 4 , 5 , 6 ] )

# Přidání
přidání = tenzor1 + tenzor 2
tisk ( 'Přidání:' , přidání )

# Odečítání
odčítání = tenzor1 - tenzor 2
tisk ( 'Odčítání:' , odčítání )

# Násobení
násobení = tenzor1 * tenzor 2
tisk ( 'Násobení:' , násobení )

# Divize
divize = tenzor1 / tenzor 2
tisk ( 'Divize:' , divize )

V daném kódu provádíme operace sčítání, odčítání, násobení a dělení mezi dvěma tenzory, což vede k novému tenzoru s vypočtenými hodnotami. Výsledek fragmentu kódu je zobrazen následovně:

Maticové operace

PyTorch poskytuje efektivní maticové operace pro tenzory, jako je násobení matic a transpozice. Tyto operace jsou zvláště užitečné pro úlohy, jako je lineární algebra a výpočty s neuronovými sítěmi.

import pochodeň

# Vytvořte tenzory
tenzor1 = pochodeň. tenzor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tenzor 2 = pochodeň. tenzor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Maticové násobení
matrix_product = pochodeň. rohož ( tenzor1 , tenzor 2 )
tisk ( 'Matrixový produkt:' , matrix_product )

# Maticová transpozice
matrix_transpose = tenzor1. T
tisk ( 'Matrix Transpose:' , matrix_transpose )

V uvedeném příkladu provedeme násobení matic pomocí funkce „torch.matmul“ a transpozici matice získáme pomocí atributu „.T“.

Manipulace s tvarem tenzoru

Kromě provádění operací na tenzorech často potřebujeme manipulovat s jejich tvarem, aby vyhovoval konkrétním požadavkům. PyTorch poskytuje několik funkcí pro přetvoření tenzorů. Pojďme prozkoumat některé z těchto funkcí:

import pochodeň

# Vytvořte tenzor
tenzor = pochodeň. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Přetvarujte tenzor
přetvořený_tensor = tenzor. přetvořit ( 3 , 2 )
tisk ( 'Přetvarovaný tenzor:' , přetvořený_tensor )

# Získejte velikost tenzoru
velikost = tenzor. velikost ( )
tisk ( 'Velikost tenzoru:' , velikost )

# Získejte počet prvků v tenzor
počet_prvků = tenzor. Dej jméno ( )
tisk ( 'Počet prvků:' , počet_prvků )

V poskytnutém kódu přetváříme tenzor pomocí funkce přetváření, načteme velikost tenzoru pomocí metody velikosti a získáme celkový počet prvků v tenzoru pomocí metody numel.

Pohybující se tenzory mezi CPU a GPU

PyTorch poskytuje podporu pro akceleraci GPU, která nám umožňuje provádět výpočty na grafických kartách, což může výrazně urychlit úkoly hlubokého učení zkrácením doby školení. Tenzory mezi CPU a GPU můžeme přesouvat metodou „to“.

Poznámka : To lze provést pouze v případě, že máte na svém počítači GPU NVIDIA s CUDA.

import pochodeň

# Vytvořte tenzor na CPU
tensor_cpu = pochodeň. tenzor ( [ 1 , 2 , 3 ] )

# Šek -li GPU je k dispozici
-li pochodeň. odlišný . je k dispozici ( ) :
# Přesuňte tenzor na GPU
tensor_gpu = tensor_cpu. na ( 'odlišný' )
tisk ( 'Tensor na GPU:' , tensor_gpu )
jiný :
tisk ( 'GPU není k dispozici.' )

V poskytnutém kódu zkontrolujeme, zda je GPU k dispozici pomocí torch.cuda.is_available(). Pokud je k dispozici GPU, přesuneme tenzor z CPU na GPU pomocí metody „to“ s argumentem „cuda“.

Závěr

Pochopení základních tenzorových operací je klíčové pro práci s PyTorchem a vytváření modelů hlubokého učení. V tomto článku jsme prozkoumali, jak vytvářet tenzory, provádět základní operace, manipulovat s jejich tvarem a přesouvat je mezi CPU a GPU. Vyzbrojeni těmito znalostmi můžete nyní začít pracovat s tenzory v PyTorch, provádět výpočty a vytvářet sofistikované modely hlubokého učení. Tenzory slouží jako základ pro reprezentaci dat a manipulaci s nimi v PyTorch, což vám umožní využít plnou sílu tohoto všestranného rámce strojového učení.