Osnovne operacije s tenzorji v PyTorchu

Osnovne Operacije S Tenzorji V Pytorchu



Tenzorji so temelj PyTorcha, ki zagotavlja zmogljivo in prilagodljivo strukturo podatkov za numerične izračune pri globokem učenju. Tako kot polja NumPy predstavljajo večdimenzionalna polja, vendar z dodatnimi funkcijami in optimizacijami, ki so posebej zasnovane za naloge globokega učenja. Ker so tenzorji primarni objekti za shranjevanje in upravljanje numeričnih podatkov v PyTorchu, imajo lahko različne dimenzije, od skalarjev (0-dimenzionalni tenzorji) do vektorjev (1-dimenzionalni tenzorji), matrik (2-dimenzionalni tenzorji) in višjih. -dimenzijski tenzorji.

Ena največjih prednosti tenzorjev je njihova sposobnost izvajanja učinkovitih matematičnih operacij. Tenzorji podpirajo široko paleto aritmetičnih operacij, vključno z operacijami po elementih, kot so seštevanje, odštevanje, množenje in deljenje, ter matričnimi operacijami, kot sta matrično množenje in transponiranje.

PyTorch ponuja obsežen nabor funkcij in metod za manipulacijo tenzorjev. Ti vključujejo operacije za preoblikovanje tenzorjev, ekstrakcijo določenih elementov ali podtenzorjev in združevanje ali razdelitev tenzorjev vzdolž določenih dimenzij. Poleg tega PyTorch ponuja funkcije za indeksiranje, rezanje in oddajanje tenzorjev, ki olajšajo delo s tenzorji različnih oblik in velikosti.







V tem članku se bomo naučili temeljnih operacij s tenzorji v PyTorchu, raziskali, kako ustvariti tenzorje, izvajati osnovne operacije, manipulirati z njihovo obliko in jih premikati med CPE in GPE.



Ustvarjanje tenzorjev

Tenzorje v PyTorchu je mogoče ustvariti na več načinov. Raziščimo nekaj običajnih metod.



Za ustvarjanje tenzorja lahko uporabimo razred »torch.Tensor« ali funkcijo »torch.tensor«. Oglejmo si nekaj primerov:





uvoz svetilka

# Ustvariti 1 - dimenzionalni tenzor s seznama Python
tenzor_1d = svetilka. tenzor ( [ 1 , 2 , 3 , 4 , 5 ] )
tiskanje ( tenzor_1d )

# Ustvariti 2 - dimenzionalni tenzor z ugnezdenega seznama Python
tenzor_2d = svetilka. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
tiskanje ( tenzor_2d )

# Ustvarite tenzor ničel z določeno obliko
ničelni_tenzor = svetilka. ničle ( 3 , 2 )
tiskanje ( ničelni_tenzor )

# Ustvarite tenzor enic z določeno obliko
ones_tenzor = svetilka. tiste ( 2 , 3 )
tiskanje ( ones_tenzor )

# Ustvarite tenzor z naključnimi vrednostmi iz enotne porazdelitve
naključni_tenzor = svetilka. rand ( 2 , 2 )
tiskanje ( naključni_tenzor )

V danih primerih ustvarimo tenzorje različnih oblik in jih inicializiramo z različnimi vrednostmi, kot so določene številke, ničle, enice ali naključne vrednosti. Ko zaženete prejšnji delček kode, bi morali videti podoben rezultat:



Tenzorske operacije

Ko imamo tenzorje, lahko na njih izvajamo različne operacije, kot so aritmetične operacije po elementih, matrične operacije in drugo.

Aritmetične operacije po elementih

Aritmetične operacije po elementih nam omogočajo, da izvajamo izračune med tenzorji po elementih. Tenzorji, vključeni v operacijo, morajo imeti enako obliko.

Tukaj je nekaj primerov:

uvoz svetilka

# Ustvarite tenzorje
tenzor1 = svetilka. tenzor ( [ 1 , 2 , 3 ] )
tenzor2 = svetilka. tenzor ( [ 4 , 5 , 6 ] )

#Dodatek
dodatek = tenzor1 + tenzor2
tiskanje ( 'Dodatek:' , dodatek )

# Odštevanje
odštevanje = tenzor1 - tenzor2
tiskanje ( 'Odštevanje:' , odštevanje )

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

# Delitev
delitev = tenzor1 / tenzor2
tiskanje ( 'Razdelitev:' , delitev )

V dani kodi izvajamo operacije seštevanja, odštevanja, množenja in deljenja med dvema tenzorjema, kar povzroči nov tenzor z izračunanimi vrednostmi. Rezultat delčka kode je prikazan takole:

Matrične operacije

PyTorch zagotavlja učinkovite matrične operacije za tenzorje, kot sta množenje in transponiranje matrik. Te operacije so še posebej uporabne za naloge, kot so linearna algebra in izračuni nevronske mreže.

uvoz svetilka

# Ustvarite tenzorje
tenzor1 = svetilka. tenzor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tenzor2 = svetilka. tenzor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Množenje matrik
matrix_product = svetilka. mat ( tenzor1 , tenzor2 )
tiskanje ( 'Izdelek Matrix:' , matrix_product )

# Transponiranje matrice
matrix_transpose = tenzor1. T
tiskanje ( 'Matrični prenos:' , matrix_transpose )

V danem primeru izvedemo množenje matrike s funkcijo “torch.matmul” in pridobimo transponacijo matrike z uporabo atributa “.T”.

Manipulacija oblike tenzorja

Poleg izvajanja operacij na tenzorjih moramo pogosto manipulirati z njihovo obliko, da ustreza posebnim zahtevam. PyTorch ponuja več funkcij za preoblikovanje tenzorjev. Raziščimo nekaj teh funkcij:

uvoz svetilka

# Ustvarite tenzor
tenzor = svetilka. tenzor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Preoblikujte tenzor
preoblikovan_tenzor = tenzor. preoblikovati ( 3 , 2 )
tiskanje ( 'Preoblikovan tenzor:' , preoblikovan_tenzor )

# Pridobite velikost tenzorja
velikost = tenzor. velikost ( )
tiskanje ( 'Velikost tenzorja:' , velikost )

# Pridobite število elementov v tenzor
število_elementov = tenzor. daj ime ( )
tiskanje ( 'Število elementov:' , število_elementov )

V predloženi kodi preoblikujemo tenzor s funkcijo preoblikovanja, pridobimo velikost tenzorja z metodo velikosti in pridobimo skupno število elementov v tenzorju z metodo numel.

Premikanje tenzorjev med CPE in GPE

PyTorch nudi podporo za pospeševanje GPE, ki nam omogoča izvajanje izračunov na grafičnih karticah, kar lahko znatno pospeši naloge globokega učenja z znižanjem časa usposabljanja. Tenzorje lahko premikamo med CPE in GPE z uporabo metode »na«.

Opomba : To lahko storite samo, če imate na svojem računalniku NVIDIA GPE s CUDA.

uvoz svetilka

# Ustvarite tenzor na CPU
tensor_cpu = svetilka. tenzor ( [ 1 , 2 , 3 ] )

# Preverite če GPU je na voljo
če svetilka. drugačen . Na voljo ( ) :
# Premakni tenzor na GPU
tensor_gpu = tensor_cpu. do ( 'drugačen' )
tiskanje ( 'Tenzor na GPU:' , tensor_gpu )
drugače :
tiskanje ( 'GPU ni na voljo.' )

V predloženi kodi preverimo, ali je GPE na voljo z uporabo torch.cuda.is_available(). Če je GPE na voljo, premaknemo tenzor iz CPE v GPE z uporabo metode »to« z argumentom »cuda«.

Zaključek

Razumevanje temeljnih tenzorskih operacij je ključnega pomena za delo s PyTorch in gradnjo modelov globokega učenja. V tem članku smo raziskali, kako ustvariti tenzorje, izvajati osnovne operacije, manipulirati z njihovo obliko in jih premikati med CPE in GPE. Oboroženi s tem znanjem lahko zdaj začnete delati s tenzorji v PyTorchu, izvajate izračune in gradite sofisticirane modele globokega učenja. Tenzorji služijo kot osnova za predstavitev podatkov in manipulacijo v PyTorchu, kar vam omogoča, da sprostite vso moč tega vsestranskega okvira strojnega učenja.