Pamatdarbības ar tensoriem programmā PyTorch

Pamatdarbibas Ar Tensoriem Programma Pytorch



Tensori ir PyTorch stūrakmens, kas nodrošina jaudīgu un elastīgu datu struktūru skaitliskiem aprēķiniem dziļās mācīšanās procesā. Tāpat kā NumPy masīvi, tie attēlo daudzdimensiju masīvus, bet ar papildu funkcijām un optimizācijām, kas ir īpaši izstrādātas dziļas mācīšanās uzdevumiem. Tā kā tensori ir primārie objekti PyTorch skaitlisko datu glabāšanai un manipulēšanai, tiem var būt dažādas dimensijas, sākot no skalāriem (0-dimensiju tenzoriem) līdz vektoriem (1-dimensiju tenzoriem), matricām (2-dimensiju tenzoriem) un augstākiem. -dimensiju tensori.

Viena no lielākajām tenzoru priekšrocībām ir to spēja veikt efektīvas matemātiskas darbības. Tensori atbalsta plašu aritmētisko darbību klāstu, tostarp elementārās darbības, piemēram, saskaitīšanu, atņemšanu, reizināšanu un dalīšanu, un matricas darbības, piemēram, matricas reizināšanu un transponēšanu.

PyTorch nodrošina visaptverošu funkciju un metožu kopumu, lai manipulētu ar tensoriem. Tie ietver darbības, kas paredzētas tensoru pārveidošanai, noteiktu elementu vai apakštensoru iegūšanai un tenzoru savienošanai vai sadalīšanai pa noteiktiem izmēriem. Turklāt PyTorch piedāvā funkcijas indeksēšanai, sagriešanai un tenzoru pārraidīšanai, kas atvieglo darbu ar dažādu formu un izmēru tenzoriem.







Šajā rakstā mēs uzzināsim pamatdarbības ar tensoriem programmā PyTorch, izpētīsim, kā izveidot tensorus, veikt pamatdarbības, manipulēt ar to formu un pārvietot tos starp CPU un GPU.



Tensoru izveide

PyTorch tensorus var izveidot vairākos veidos. Izpētīsim dažas izplatītas metodes.



Lai izveidotu tensoru, mēs varam izmantot klasi “torch.Tensor” vai funkciju “torch.tensor”. Apskatīsim dažus piemērus:





imports lāpa

# Izveidot a 1 - dimensiju tensors no Python saraksta
tenzors_1d = lāpa. tenzors ( [ 1 , 2 , 3 , 4 , 5 ] )
drukāt ( tenzors_1d )

# Izveidot a 2 - dimensiju tensors no ligzdotā Python saraksta
tenzors_2d = lāpa. tenzors ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
drukāt ( tenzors_2d )

# Izveidojiet nulles tenzoru ar noteiktu formu
nulles_tensors = lāpa. nulles ( 3 , 2 )
drukāt ( nulles_tensors )

# Izveidojiet tenzoru no tiem, kuriem ir noteikta forma
onees_tensor = lāpa. vieni ( 2 , 3 )
drukāt ( onees_tensor )

# Izveidojiet tensoru ar nejaušām vērtībām no vienmērīga sadalījuma
random_tensor = lāpa. rand ( 2 , 2 )
drukāt ( random_tensor )

Dotajos piemēros mēs izveidojam dažādu formu tenzorus un inicializējam tos ar dažādām vērtībām, piemēram, konkrētiem skaitļiem, nullēm, vieniniekiem vai nejaušām vērtībām. Palaižot iepriekšējo koda fragmentu, jums vajadzētu redzēt līdzīgu izvadi:



Tenzoras operācijas

Kad mums ir tenzori, mēs varam ar tiem veikt dažādas darbības, piemēram, elementārās aritmētiskās darbības, matricas darbības un citas.

Elementu viedās aritmētiskās darbības

Elementu aritmētiskās darbības ļauj mums veikt aprēķinus starp tenzoriem, pamatojoties uz elementiem pa elementiem. Darbībā iesaistītajiem tenzoriem jābūt vienādai formai.

Šeit ir daži piemēri:

imports lāpa

# Izveidojiet tenzorus
tenzors1 = lāpa. tenzors ( [ 1 , 2 , 3 ] )
tenzors2 = lāpa. tenzors ( [ 4 , 5 , 6 ] )

# Papildinājums
papildinājums = tenzors1 + tenzors2
drukāt ( 'Papildinājums:' , papildinājums )

# Atņemšana
atņemšana = tenzors1 - tenzors2
drukāt ( 'Atņemšana:' , atņemšana )

# Reizināšana
reizināšana = tenzors1 * tenzors2
drukāt ( 'Reizināšana:' , reizināšana )

# Divīzija
nodaļa = tenzors1 / tenzors2
drukāt ( 'Dvīzija:' , nodaļa )

Dotajā kodā mēs veicam saskaitīšanas, atņemšanas, reizināšanas un dalīšanas darbības starp diviem tensoriem, kā rezultātā tiek iegūts jauns tensors ar aprēķinātajām vērtībām. Koda fragmenta rezultāts tiek parādīts šādi:

Matricas operācijas

PyTorch nodrošina efektīvas matricas darbības tādiem tensoriem kā matricas reizināšana un transponēšana. Šīs darbības ir īpaši noderīgas tādiem uzdevumiem kā lineārā algebra un neironu tīklu aprēķini.

imports lāpa

# Izveidojiet tenzorus
tenzors1 = lāpa. tenzors ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tenzors2 = lāpa. tenzors ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Matricas reizināšana
matricas_produkts = lāpa. paklājiņš ( tenzors1 , tenzors2 )
drukāt ( 'Matrix produkts:' , matricas_produkts )

# Matricas transponēšana
matrica_transponēt = tenzors1. T
drukāt ( 'Matricas transponēšana:' , matrica_transponēt )

Dotajā piemērā mēs veicam matricas reizināšanu, izmantojot funkciju “torch.matmul” un iegūstam matricas transponēšanu, izmantojot atribūtu “.T”.

Manipulācija ar tenzoru formu

Papildus operāciju veikšanai ar tenzoriem mums bieži ir jāmaina to forma, lai tā atbilstu īpašām prasībām. PyTorch nodrošina vairākas funkcijas, lai pārveidotu tensorus. Izpētīsim dažas no šīm funkcijām:

imports lāpa

# Izveidojiet tensoru
tenzors = lāpa. tenzors ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Pārveidojiet tenzoru
pārveidots_tensors = tenzors. pārveidot ( 3 , 2 )
drukāt ( 'Pārveidots tensors:' , pārveidots_tensors )

# Iegūstiet tenzora izmēru
Izmērs = tenzors. Izmērs ( )
drukāt ( 'Tenzora izmērs:' , Izmērs )

# Iegūstiet elementu skaitu iekšā tenzors
elementu_skaits = tenzors. dot vārdu ( )
drukāt ( 'Elementu skaits:' , elementu_skaits )

Norādītajā kodā mēs pārveidojam tensoru, izmantojot pārveidošanas funkciju, izgūstam tenzora izmēru, izmantojot lieluma metodi, un iegūstam kopējo elementu skaitu tensorā, izmantojot numel metodi.

Tensoru pārvietošana starp CPU un GPU

PyTorch nodrošina atbalstu GPU paātrināšanai, kas ļauj mums veikt aprēķinus grafiskajās kartēs, kas var ievērojami paātrināt dziļās mācīšanās uzdevumus, samazinot apmācības laiku. Mēs varam pārvietot tensorus starp CPU un GPU, izmantojot metodi “uz”.

Piezīme : To var izdarīt tikai tad, ja jūsu datorā ir NVIDIA GPU ar CUDA.

imports lāpa

# Izveidojiet tensoru CPU
tensor_cpu = lāpa. tenzors ( [ 1 , 2 , 3 ] )

# Pārbaudiet ja GPU ir pieejams
ja lāpa. savādāk . ir pieejams ( ) :
# Pārvietojiet tensoru uz GPU
tensor_gpu = tensor_cpu. uz ( 'savādāk' )
drukāt ( 'Tensor on GPU:' , tensor_gpu )
cits :
drukāt ( 'GPU nav pieejams.' )

Norādītajā kodā mēs pārbaudām, vai ir pieejams GPU, izmantojot torch.cuda.is_available(). Ja ir pieejams GPU, mēs pārvietojam tensoru no CPU uz GPU, izmantojot metodi “uz” ar argumentu “cuda”.

Secinājums

Lai strādātu ar PyTorch un izveidotu dziļās mācīšanās modeļus, ir ļoti svarīgi izprast pamata tensora darbības. Šajā rakstā mēs izpētījām, kā izveidot tensorus, veikt pamatdarbības, manipulēt ar to formu un pārvietot tos starp CPU un GPU. Apbruņojoties ar šīm zināšanām, tagad varat sākt strādāt ar tensoriem programmā PyTorch, veikt aprēķinus un veidot sarežģītus padziļinātas mācīšanās modeļus. Tensori kalpo par pamatu datu attēlošanai un manipulācijām PyTorch, kas ļauj atraisīt visas šīs daudzpusīgās mašīnmācīšanās sistēmas iespējas.