Фундаменталне операције са тензорима у ПиТорцх-у

Fundamentalne Operacije Sa Tenzorima U Pitorch U



Тензори су камен темељац ПиТорцх-а који пружа моћну и флексибилну структуру података за нумеричка израчунавања у дубоком учењу. Као и НумПи низови, они представљају вишедимензионалне низове, али са додатним функцијама и оптимизацијама које су посебно дизајниране за задатке дубоког учења. Пошто су тензори примарни објекти за складиштење и манипулисање нумеричким подацима у ПиТорцх-у, они могу имати различите димензије, у распону од скалара (0-димензионални тензори) до вектора (1-димензионални тензори), матрица (2-димензионални тензори) и више -димензионални тензори.

Једна од највећих предности тензора је њихова способност да изводе ефикасне математичке операције. Тензори подржавају широк спектар аритметичких операција укључујући операције по елементима као што су сабирање, одузимање, множење и дељење и матричне операције као што су множење и транспоновање матрице.

ПиТорцх пружа свеобухватан скуп функција и метода за манипулисање тензорима. Ово укључује операције за преобликовање тензора, издвајање специфичних елемената или подтензора и спајање или цепање тензора дуж одређених димензија. Поред тога, ПиТорцх нуди функционалности за индексирање, сечење и емитовање тензора које олакшавају рад са тензорима различитих облика и величина.







У овом чланку ћемо научити основне операције са тензорима у ПиТорцх-у, истражити како да креирамо тензоре, изводимо основне операције, манипулишемо њиховим обликом и премештамо их између ЦПУ-а и ГПУ-а.



Креирање тензора

Тензори у ПиТорцх-у се могу креирати на неколико начина. Хајде да истражимо неке уобичајене методе.



За креирање тензора можемо користити класу „торцх.Тенсор“ или функцију „торцх.тенсор“. Погледајмо неке примере:





увоз бакља

# Створити 1 - димензионални тензор са Питхон листе
тенсор_1д = бакља. тензор ( [ 1 , 2 , 3 , 4 , 5 ] )
принт ( тенсор_1д )

# Створити 2 - димензионални тензор из угнежђене Питхон листе
тенсор_2д = бакља. тензор ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
принт ( тенсор_2д )

# Креирајте тензор нула са одређеним обликом
зеро_тенсор = бакља. нуле ( 3 , 2 )
принт ( зеро_тенсор )

# Направите тензор јединица са одређеним обликом
оне_тенсор = бакља. оне ( 2 , 3 )
принт ( оне_тенсор )

# Креирајте тензор са случајним вредностима из униформне дистрибуције
рандом_тенсор = бакља. ранд ( 2 , 2 )
принт ( рандом_тенсор )

У датим примерима креирамо тензоре различитих облика и иницијализујемо их различитим вредностима као што су одређени бројеви, нуле, јединице или случајне вредности. Требало би да видите сличан излаз када покренете претходни исечак кода:



Тензорске операције

Када имамо тензоре, можемо да изводимо разне операције на њима, као што су аритметичке операције по елементима, матричне операције и још много тога.

Аритметичке операције по елементима

Аритметичке операције по елементима омогућавају нам да изводимо прорачуне између тензора на бази елемент по елемент. Тензори укључени у операцију треба да имају исти облик.

Ево неколико примера:

увоз бакља

# Креирајте тензоре
тенсор1 = бакља. тензор ( [ 1 , 2 , 3 ] )
тенсор2 = бакља. тензор ( [ 4 , 5 , 6 ] )

# Аддитион
додатак = тенсор1 + тенсор2
принт ( 'Додатак:' , додатак )

# Одузимање
одузимање = тенсор1 - тенсор2
принт ( „Одузимање:“ , одузимање )

# Множење
множење = тенсор1 * тенсор2
принт ( 'Множење:' , множење )

# Дивисион
дивизије = тенсор1 / тенсор2
принт ( 'Дивизија:' , дивизије )

У датом коду изводимо операције сабирања, одузимања, множења и дељења између два тензора што резултира новим тензором са израчунатим вредностима. Резултат исечка кода је приказан на следећи начин:

Матричне операције

ПиТорцх обезбеђује ефикасне матричне операције за тензоре као што су множење матрице и транспоновање. Ове операције су посебно корисне за задатке као што су линеарна алгебра и прорачуни неуронске мреже.

увоз бакља

# Креирајте тензоре
тенсор1 = бакља. тензор ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
тенсор2 = бакља. тензор ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Множење матрице
матрични_производ = бакља. мат ( тенсор1 , тенсор2 )
принт ( „Матрични производ:“ , матрични_производ )

# Транспоновање матрице
матрик_транспосе = тенсор1. Т
принт ( „Транспоновање матрице:“ , матрик_транспосе )

У датом примеру вршимо множење матрице помоћу функције “торцх.матмул” и добијамо транспоновање матрице коришћењем атрибута “.Т”.

Манипулација облика тензора

Поред извођења операција над тензорима, често морамо да манипулишемо њиховим обликом како би одговарали специфичним захтевима. ПиТорцх пружа неколико функција за преобликовање тензора. Хајде да истражимо неке од ових функција:

увоз бакља

# Направите тензор
тензор = бакља. тензор ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Преобликујте тензор
ресхапед_тенсор = тензор. преобликовати ( 3 , 2 )
принт ( „Преобликовани тензор:“ , ресхапед_тенсор )

# Добијте величину тензора
величина = тензор. величина ( )
принт ( „Величина тензора:“ , величина )

# Добијте број елемената ин тензор
број_елемената = тензор. дати име ( )
принт ( 'Број елемената:' , број_елемената )

У датом коду ми преобликујемо тензор помоћу функције преобликовања, преузимамо величину тензора користећи методу величине и добијамо укупан број елемената у тензору помоћу нумел методе.

Померање тензора између ЦПУ-а и ГПУ-а

ПиТорцх пружа подршку за убрзање ГПУ-а што нам омогућава да изводимо прорачуне на графичким картицама што може значајно убрзати задатке дубоког учења смањењем времена обуке. Можемо да померамо тензоре између ЦПУ-а и ГПУ-а користећи методу „до“.

Белешка : Ово се може урадити само ако имате НВИДИА ГПУ са ЦУДА на вашој машини.

увоз бакља

# Креирајте тензор на ЦПУ-у
тенсор_цпу = бакља. тензор ( [ 1 , 2 , 3 ] )

# Проверавати ако ГПУ је доступан
ако бакља. различит . је доступан ( ) :
# Померите тензор на ГПУ
тенсор_гпу = тенсор_цпу. до ( 'различит' )
принт ( „Тензор на ГПУ-у:“ , тенсор_гпу )
друго :
принт ( „ГПУ није доступан.“ )

У датом коду проверавамо да ли је ГПУ доступан помоћу торцх.цуда.ис_аваилабле(). Ако је ГПУ доступан, померамо тензор са ЦПУ-а на ГПУ користећи методу „до“ са аргументом „цуда“.

Закључак

Разумевање основних тензорских операција је кључно за рад са ПиТорцх-ом и изградњу модела дубоког учења. У овом чланку смо истражили како да креирамо тензоре, изводимо основне операције, манипулишемо њиховим обликом и премештамо их између ЦПУ-а и ГПУ-а. Наоружани овим знањем, сада можете почети да радите са тензорима у ПиТорцх-у, изводите прорачуне и градите софистициране моделе дубоког учења. Тензори служе као основа за представљање података и манипулацију у ПиТорцх-у што вам омогућава да ослободите пуну снагу овог свестраног оквира за машинско учење.