Alapvető műveletek a PyTorch tenzorokkal

Alapveto Muveletek A Pytorch Tenzorokkal



A tenzorok a PyTorch sarokkövei, amely hatékony és rugalmas adatstruktúrát biztosít a numerikus számításokhoz a mélytanulásban. A NumPy tömbökhöz hasonlóan többdimenziós tömböket képviselnek, de további funkciókkal és optimalizálásokkal, amelyeket kifejezetten a mély tanulási feladatokhoz terveztek. Mivel a tenzorok az elsődleges objektumok a PyTorch numerikus adatok tárolására és manipulálására, ezek különböző dimenziókkal rendelkezhetnek, kezdve a skalároktól (0-dimenziós tenzorok) a vektorokig (1-dimenziós tenzorok), mátrixokig (2-dimenziós tenzorok) és magasabbakig. -dimenziós tenzorok.

A tenzorok egyik legnagyobb előnye, hogy képesek hatékony matematikai műveleteket végrehajtani. A tenzorok aritmetikai műveletek széles skáláját támogatják, beleértve az elemenkénti műveleteket, mint az összeadás, kivonás, szorzás és osztás, valamint a mátrixműveleteket, mint például a mátrixszorzás és transzponálás.

A PyTorch funkciók és módszerek átfogó készletét kínálja a tenzorok manipulálásához. Ezek közé tartoznak a tenzorok átformálására, meghatározott elemek vagy altenzorok kinyerésére, valamint a tenzorok meghatározott méretek mentén történő összefűzésére vagy felosztására szolgáló műveletek. Ezenkívül a PyTorch funkciókat kínál a tenzorok indexeléséhez, szeleteléséhez és sugárzásához, amelyek megkönnyítik a különböző alakú és méretű tenzorokkal való munkát.







Ebben a cikkben megtanuljuk a PyTorch tenzorokkal végzett alapvető műveleteket, megvizsgáljuk, hogyan hozhatunk létre tenzorokat, hogyan hajthatunk végre alapvető műveleteket, manipulálhatjuk alakjukat, és mozgathatjuk őket a CPU és a GPU között.



Tenzorok létrehozása

A PyTorch tenzorai többféleképpen is létrehozhatók. Nézzünk meg néhány általános módszert.



Tenzor létrehozásához használhatjuk a „torch.Tensor” osztályt vagy a „torch.tensor” függvényt. Nézzünk néhány példát:





import fáklya

# Hozzon létre egy 1 - dimenziós tenzor egy Python listából
tenzor_1d = fáklya. tenzor ( [ 1 , 2 , 3 , 4 , 5 ] )
nyomtatás ( tenzor_1d )

# Hozzon létre egy 2 - dimenziós tenzor egy beágyazott Python listából
tenzor_2d = fáklya. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
nyomtatás ( tenzor_2d )

# Hozzon létre egy adott alakú nullák tenzorát
zeros_tensor = fáklya. nullák ( 3 , 2 )
nyomtatás ( zeros_tensor )

# Hozzon létre egy tenzort egy adott alakkal
egyesek_tenzor = fáklya. azok ( 2 , 3 )
nyomtatás ( egyesek_tenzor )

# Hozzon létre egy tenzort véletlenszerű értékekkel egyenletes eloszlásból
random_tensor = fáklya. rand ( 2 , 2 )
nyomtatás ( random_tensor )

A megadott példákban különböző alakú tenzorokat hozunk létre, és inicializáljuk azokat különböző értékekkel, például meghatározott számokkal, nullákkal, egyesekkel vagy véletlenszerű értékekkel. Hasonló kimenetet kell látnia az előző kódrészlet futtatásakor:



Tenzorműveletek

Ha megvannak a tenzoraink, különféle műveleteket hajthatunk végre velük, például elemenkénti aritmetikai műveleteket, mátrixműveleteket stb.

Elem-bölcs aritmetikai műveletek

Az elemenkénti aritmetikai műveletek lehetővé teszik a tenzorok közötti számítások elvégzését elemenként. A műveletben részt vevő tenzoroknak azonos alakúaknak kell lenniük.

Íme néhány példa:

import fáklya

# Hozzon létre tenzorokat
tenzor1 = fáklya. tenzor ( [ 1 , 2 , 3 ] )
tenzor2 = fáklya. tenzor ( [ 4 , 5 , 6 ] )

# Kiegészítés
kiegészítés = tenzor1 + tenzor2
nyomtatás ( 'Kiegészítés:' , kiegészítés )

# Kivonás
kivonás = tenzor1 - tenzor2
nyomtatás ( 'Kivonás:' , kivonás )

# Szorzás
szorzás = tenzor1 * tenzor2
nyomtatás ( 'Szorzás:' , szorzás )

# Osztály
osztály = tenzor1 / tenzor2
nyomtatás ( 'Osztály:' , osztály )

Az adott kódban végrehajtjuk az összeadás, kivonás, szorzás és osztás műveleteket két tenzor között, aminek eredményeként a számított értékekkel egy új tenzor jön létre. A kódrészlet eredménye a következőképpen jelenik meg:

Mátrix műveletek

A PyTorch hatékony mátrixműveleteket biztosít olyan tenzorokhoz, mint a mátrixszorzás és transzponálás. Ezek a műveletek különösen hasznosak olyan feladatoknál, mint a lineáris algebra és a neurális hálózati számítások.

import fáklya

# Hozzon létre tenzorokat
tenzor1 = fáklya. tenzor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tenzor2 = fáklya. tenzor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Mátrix szorzás
mátrix_termék = fáklya. a szőnyeg ( tenzor1 , tenzor2 )
nyomtatás ( 'Matrix termék:' , mátrix_termék )

# Mátrix transzponálás
mátrix_transzponálás = tenzor1. T
nyomtatás ( 'Matrix Transpose:' , mátrix_transzponálás )

Az adott példában a mátrixszorzást a „torch.matmul” függvénnyel hajtjuk végre, és a „.T” attribútum segítségével megkapjuk a mátrix transzponálását.

Tenzor alak manipuláció

A tenzorokon végzett műveletek mellett gyakran módosítanunk kell alakjukat, hogy megfeleljenek az adott követelményeknek. A PyTorch számos funkciót biztosít a tenzorok átalakításához. Nézzünk meg néhány funkciót:

import fáklya

# Hozzon létre egy tenzort
tenzor = fáklya. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# A tenzor átformálása
átformált_tenzor = tenzor. átformálni ( 3 , 2 )
nyomtatás ( 'Újraformázott tenzor:' , átformált_tenzor )

# Szerezd meg a tenzor méretét
méret = tenzor. méret ( )
nyomtatás ( 'Tenzor mérete:' , méret )

# Szerezze meg az elemek számát ban ben egy tenzor
elemek_száma = tenzor. adjon nevet ( )
nyomtatás ( 'Elemek száma:' , elemek_száma )

A megadott kódban az átformálással átformálunk egy tenzort, a méret módszerrel lekérjük a tenzor méretét, és a numel módszerrel megkapjuk a tenzor elemeinek teljes számát.

Tenzorok mozgatása CPU és GPU között

A PyTorch támogatja a GPU-gyorsítást, amely lehetővé teszi számunkra, hogy grafikus kártyákon végezzünk számításokat, amelyek jelentősen felgyorsíthatják a mély tanulási feladatokat a képzési idők csökkentésével. A tenzorokat a CPU és a GPU között mozgathatjuk a „to” módszerrel.

jegyzet : Ezt csak akkor lehet megtenni, ha CUDA-val ellátott NVIDIA GPU van a gépen.

import fáklya

# Hozzon létre egy tenzort a CPU-n
tensor_cpu = fáklya. tenzor ( [ 1 , 2 , 3 ] )

# Jelölje be ha GPU elérhető
ha fáklya. különböző . elérhető ( ) :
# Mozgassa a tenzort a GPU-ra
tensor_gpu = tensor_cpu. nak nek ( 'különböző' )
nyomtatás ( 'Tensor a GPU-n:' , tensor_gpu )
más :
nyomtatás ( 'GPU nem elérhető.' )

A megadott kódban a torch.cuda.is_available() segítségével ellenőrizzük, hogy elérhető-e GPU. Ha elérhető GPU, a tenzort a CPU-ról a GPU-ra mozgatjuk a „to” metódussal a „cuda” argumentum mellett.

Következtetés

Az alapvető tenzorműveletek megértése kulcsfontosságú a PyTorch-al való munkához és a mély tanulási modellek felépítéséhez. Ebben a cikkben megvizsgáltuk, hogyan lehet tenzorokat létrehozni, alapvető műveleteket végrehajtani, módosítani az alakjukat, és áthelyezni őket a CPU és a GPU között. Ezzel a tudással felvértezve most elkezdhet dolgozni a PyTorch tenzorokkal, számításokat végezhet, és kifinomult mélytanulási modelleket építhet. A tenzorok szolgálják az alapját a PyTorch adatábrázolásnak és -manipulációnak, amely lehetővé teszi ennek a sokoldalú gépi tanulási keretrendszernek a teljes erejét.