Pagrindinės operacijos su tensorais „PyTorch“.

Pagrindines Operacijos Su Tensorais Pytorch



Tenzoriai yra kertinis PyTorch akmuo, kuris suteikia galingą ir lanksčią duomenų struktūrą skaitmeniniams skaičiavimams gilaus mokymosi metu. Kaip ir „NumPy“ masyvai, jie atstovauja kelių dimensijų masyvams, tačiau su papildomomis funkcijomis ir optimizavimu, kurie yra specialiai sukurti gilaus mokymosi užduotims. Kadangi tenzoriai yra pagrindiniai PyTorch skaitmeninių duomenų saugojimo ir manipuliavimo objektai, jie gali turėti skirtingus matmenis – nuo ​​skalierių (0 matmenų tenzoriai) iki vektorių (1 dimensijos tenzoriai), matricos (dvimačiai tenzoriai) ir aukštesni. -matmenų tenzoriai.

Vienas didžiausių tenzorių privalumų yra jų gebėjimas atlikti efektyvius matematinius veiksmus. Tenzoriai palaiko platų aritmetinių operacijų spektrą, įskaitant operacijas pagal elementus, tokias kaip sudėjimas, atimtis, daugyba ir padalijimas, ir matricos operacijas, tokias kaip matricos daugyba ir perkėlimas.

„PyTorch“ pateikia išsamų funkcijų ir metodų rinkinį, skirtą manipuliuoti tenzoriais. Tai apima tenzorių pertvarkymo, konkrečių elementų ar subtenzorių ištraukimo ir tenzorių sujungimo arba padalijimo pagal nurodytus matmenis operacijas. Be to, „PyTorch“ siūlo tenzorių indeksavimo, pjaustymo ir transliavimo funkcijas, kurios palengvina darbą su skirtingų formų ir dydžių tenzoriais.





Šiame straipsnyje mes išmoksime pagrindines operacijas su tenzoriais PyTorch, išnagrinėsime, kaip sukurti tenzorius, atlikti pagrindines operacijas, manipuliuoti jų forma ir perkelti juos iš procesoriaus į GPU.



Tenzorių kūrimas

„PyTorch“ tenzoriai gali būti sukurti keliais būdais. Panagrinėkime keletą bendrų metodų.



Norėdami sukurti tenzorių, galime naudoti „torch.Tensor“ klasę arba „torch.tensor“ funkciją. Pažvelkime į keletą pavyzdžių:





importuoti deglas

# Sukurti 1 - matmenų tenzorius iš Python sąrašo
tensor_1d = deglas. tenzoras ( [ 1 , 2 , 3 , 4 , 5 ] )
spausdinti ( tensor_1d )

# Sukurti 2 - matmenų tenzorius iš įdėto Python sąrašo
tensor_2d = deglas. tenzoras ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
spausdinti ( tensor_2d )

# Sukurkite tam tikros formos nulių tenzorių
zeros_tensor = deglas. nuliai ( 3 , 2 )
spausdinti ( zeros_tensor )

# Sukurkite tam tikros formos tenzorių
tie_tenzorius = deglas. vieni ( 2 , 3 )
spausdinti ( tie_tenzorius )

# Sukurkite tenzorių su atsitiktinėmis reikšmėmis iš vienodo skirstinio
atsitiktinis_tenzorius = deglas. rand ( 2 , 2 )
spausdinti ( atsitiktinis_tenzorius )

Pateiktuose pavyzdžiuose sukuriame skirtingų formų tenzorius ir inicijuojame juos įvairiomis reikšmėmis, tokiomis kaip konkretūs skaičiai, nuliai, vienetai arba atsitiktinės reikšmės. Turėtumėte matyti panašią išvestį, kai paleisite ankstesnį kodo fragmentą:



Tenzorinės operacijos

Kai turime tenzorius, galime su jais atlikti įvairias operacijas, tokias kaip elementų aritmetinės operacijos, matricos operacijos ir kt.

Elementų išmintingos aritmetinės operacijos

Elementų aritmetinės operacijos leidžia atlikti tenzorių skaičiavimus kiekvienam elementui. Operacijoje dalyvaujantys tenzoriai turi būti tokios pačios formos.

Štai keletas pavyzdžių:

importuoti deglas

# Sukurkite tenzorius
tensor1 = deglas. tenzoras ( [ 1 , 2 , 3 ] )
tenzorius2 = deglas. tenzoras ( [ 4 , 5 , 6 ] )

# Papildymas
papildymas = tensor1 + tenzorius2
spausdinti ( 'Papildymas:' , papildymas )

# Atimtis
atimti = tensor1 - tenzorius2
spausdinti ( 'Atimtis:' , atimti )

# Daugyba
daugyba = tensor1 * tenzorius2
spausdinti ( 'Daugyba:' , daugyba )

# Padalinys
padalinys = tensor1 / tenzorius2
spausdinti ( 'Padalinys:' , padalinys )

Pateiktame kode atliekame sudėjimo, atimties, daugybos ir padalijimo operacijas tarp dviejų tenzorių, dėl kurių gaunamas naujas tenzorius su apskaičiuotomis reikšmėmis. Kodo fragmento rezultatas rodomas taip:

Matricos operacijos

„PyTorch“ teikia efektyvias matricos operacijas tokiems tenzoriams kaip matricos daugyba ir perkėlimas. Šios operacijos ypač naudingos atliekant tokias užduotis kaip tiesinė algebra ir neuroninių tinklų skaičiavimai.

importuoti deglas

# Sukurkite tenzorius
tensor1 = deglas. tenzoras ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tenzorius2 = deglas. tenzoras ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Matricos daugyba
matricos_produktas = deglas. kilimėlis ( tensor1 , tenzorius2 )
spausdinti ( 'Matricos produktas:' , matricos_produktas )

# Matricos perkėlimas
matrica_transponuoti = tensor1. T
spausdinti ( „Matricos perkėlimas“: , matrica_transponuoti )

Pateiktame pavyzdyje matricos dauginimą atliekame naudodami funkciją „torch.matmul“ ir gauname matricos transponavimą naudojant „.T“ atributą.

Tenzoriaus formos manipuliavimas

Be to, kad atliekame operacijas su tenzoriais, dažnai turime manipuliuoti jų forma, kad atitiktų konkrečius reikalavimus. „PyTorch“ teikia keletą funkcijų, kad pakeistų tenzorius. Panagrinėkime kai kurias iš šių funkcijų:

importuoti deglas

# Sukurkite tenzorių
tenzoras = deglas. tenzoras ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Performuokite tenzorių
performuotas_tenzorius = tenzoras. pertvarkyti ( 3 , 2 )
spausdinti ( 'Performuotas tensorius:' , performuotas_tenzorius )

# Gaukite tenzoriaus dydį
dydis = tenzoras. dydis ( )
spausdinti ( 'Tenzoriaus dydis:' , dydis )

# Gaukite elementų skaičių in tenzorius
elementų skaičius = tenzoras. duok vardą ( )
spausdinti ( 'Elementų skaičius:' , elementų skaičius )

Pateiktame kode performuojame tenzorių naudodami performavimo funkciją, naudodamiesi dydžio metodu gauname tenzoriaus dydį ir numerio metodu gauname bendrą tenzoriaus elementų skaičių.

Tensorių perkėlimas tarp procesoriaus ir GPU

„PyTorch“ palaiko GPU spartinimą, leidžiantį atlikti grafinių plokščių skaičiavimus, o tai gali žymiai pagreitinti giluminio mokymosi užduotis sumažinant mokymo laiką. Tenzorius tarp procesoriaus ir GPU galime perkelti naudodami „į“ metodą.

Pastaba : Tai galima padaryti tik tuo atveju, jei jūsų kompiuteryje yra NVIDIA GPU su CUDA.

importuoti deglas

# Sukurkite tenzorių CPU
tensor_cpu = deglas. tenzoras ( [ 1 , 2 , 3 ] )

# Patikrinti jeigu GPU yra
jeigu deglas. skirtinga . yra_prieinamas ( ) :
# Perkelkite tenzorių į GPU
tensor_gpu = tensor_cpu. į ( 'kitokia' )
spausdinti ( 'Tensor on GPU:' , tensor_gpu )
Kitas :
spausdinti ( „GPU nepasiekiamas“. )

Pateiktame kode patikriname, ar yra GPU, naudodami torch.cuda.is_available(). Jei yra GPU, perkeliame tenzorių iš procesoriaus į GPU, naudodami metodą „į“ su argumentu „cuda“.

Išvada

Norint dirbti su PyTorch ir kurti giluminio mokymosi modelius, labai svarbu suprasti pagrindines tenzorines operacijas. Šiame straipsnyje mes ištyrėme, kaip sukurti tenzorius, atlikti pagrindines operacijas, manipuliuoti jų forma ir perkelti juos iš procesoriaus į GPU ir atvirkščiai. Turėdami šias žinias, dabar galite pradėti dirbti su tenzoriais „PyTorch“, atlikti skaičiavimus ir kurti sudėtingus giluminio mokymosi modelius. Tensoriai yra „PyTorch“ duomenų vaizdavimo ir manipuliavimo pagrindas, leidžiantis išnaudoti visas šios universalios mašininio mokymosi sistemos galias.