Водич за ТенсорФлов - Дубинско учење помоћу ТенсорФлов-а



Водич за ТенсорФлов је трећи блог у серији. Обухвата све основе ТенсорФлов-а. Такође говори о томе како створити једноставан линеарни модел.

Дизајнирао сам овај водич за ТенсорФлов за професионалце и ентузијасте који су заинтересовани за примену алгоритма за дубинско учење помоћу ТенсорФлов-а за решавање различитих проблема. ТенсорФлов је библиотека за дубоко учење отвореног кода која се заснива на концепту графикона протока података за изградњу модела. Омогућава вам стварање нервних мрежа великих размера са много слојева.Учење употребе ове библиотеке такође је основни део .Следе теме о којима ће бити речи у овом блогу туторијала за ТенсорФлов:

  • Шта је ТенсорФлов
  • Основе ТенсорФлов кода
  • ТенсорФлов УсеЦасе

Шта су тензори?

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





Тенсори - Водич за ТенсорФлов - ЕдурекаКао што је приказано на горњој слици, тензори су само вишедимензионални низови, што вам омогућава да представите податке већих димензија. Генерално, Дееп Леарнинг се бави високодимензионалним скуповима података где се димензије односе на различите карактеристике присутне у скупу података. У ствари, назив „ТенсорФлов“ изведен је из операција које неуронске мреже изводе на тензорима. То је буквално ток тензора. Пошто сте разумели шта су тензори, идемо напред у овом водичу за ТенсорФлов и разумејмо - шта је ТенсорФлов?

Шта је ТенсорФлов?

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



У ТенсорФлов, израз тензор односи се на представљање података као вишедимензионални низ, док се термин ток односи на серију операција које се извршавају на тензорима, као што је приказано на горњој слици.

Сада смо покрили довољно позадине о ТенсорФлов-у.



Даље, у овом водичу за ТенсорФлов разговараћемо о основама ТенсорФлов кода.

Водич за ТенсорФлов: Основе кода

У основи, целокупан процес писања програма ТенсорФлов укључује два корака:

  1. Израда рачунарског графикона
  2. Покретање рачунарског графа

Дозволите ми да вам објасним горња два корака један по један:

1. Израда рачунарског графикона

Тако, шта је рачунски граф? Па, рачунски граф је низ операција ТенсорФлов распоређених као чворови у графу. Сваки чвор узима 0 или више тензора као улаз и производи тензор као излаз. Даћу вам пример једноставног рачунског графа који се састоји од три чвора - до , б & ц како је приказано испод:

Објашњење горњег рачунског графикона:

  • Константни чворовикористе се за чување константних вредности јер је потребно нула улаза, али сачуване вредности производе као излаз. У горњем примеру, а и б су константни чворови са вредностима 5 односно 6.

  • Чвор ц представља операцију множења константног чвора а са б. Стога ће извршење чвора ц резултирати умножавањем цонст чвора а & б.

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

Овде само описујемо прорачун, он ништа не израчунава, не садржи никакве вредности, већ само дефинише операције наведене у вашем коду.

2. Покретање рачунарског графикона

Узмимо претходни пример рачунског графа и разумејмо како га извршити. Следи код из претходног примера:

Пример 1:

увоз тенсорфлов као тф # Направите граф а = тф.цонстант (5.0) б = тф.цонстант (6.0) ц = а * б

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

Сесија обухваћа контролу и стање времена извођења ТенсорФлов, тј. Чува информације о редоследу којим ће се све операције изводити и преноси резултат већ израчунате операције на следећу операцију у цевоводу. Дозволићу вам да вам покажем како се покреће горњи рачунски граф унутар сесије (Објашњење сваког ретка кода је додато као коментар):

# Креирајте објекат сесије сесс = тф.Сессион () # Покрените граф унутар сесије и сачувајте излаз у променљиву оутпут_ц = сесс.рун (ц) # Штампајте излаз чвора ц принт (оутпут_ц) # Затворите сесију у ослободите неке ресурсе сесс.цлосе ()
 Излаз: 30

Дакле, све се овде тицало сесије и покретања рачунарског графа у њој. Хајде сада да разговарамо о променљивим и чуварима места које ћемо интензивно користити док градимо модел дубоког учења помоћу ТенсорФлов-а.

Константе, резервирано место и променљиве

У ТенсорФлов-у константе, чувари места и променљиве се користе за представљање различитих параметара модела дубоког учења. Будући да сам већ раније разговарао о константама, почећу од резервираних места.

проћи по вредности и проћи поред референце јава

Резервисано место:

Константа ТенсорФлов вам омогућава да сачувате вредност, али, шта ако желите да ваши чворови узимају улазе у току? За ову врсту функционалности користе се чувари места што омогућава вашем графикону да узима спољне улазе као параметре. У основи, резервирано место је обећање да ће дати вредност касније или током извођења. Даћу вам пример за поједностављивање ствари:

импорт тенсорфлов ас тф # Креирање резервираних места а = тф. резервирано место (тф.флоат32) б = тф. плацехолдер (тф.флоат32) # Додељивање операције множења в.р.т. а & ампамп б за чвор мул мул = а * б # Креирајте објекат сесије сесс = тф.Сессион () # Извршавање мул-а прослеђивањем вредности [1, 3] [2, 4] за а и б односно оутпут = сесс.рун ( мул, {а: [1,3], б: [2, 4]}) принт ('Множење аб:', излаз)
 Излаз: [2. 12.]

Тачке које треба запамтити чувари места:

  • Резервисари нису иницијализовани и не садрже податке.
  • Човек мора да обезбеди улазе или феедове чувару места који се узимају у обзир током извођења.
  • Извршење чувара места без уноса генерише грешку.

Сада, кренимо напред и схватимо - шта су променљиве?

Променљиве

У дубоком учењу, резервирани знакови се користе за унос произвољних података у ваш модел или графикон. Поред узимања уноса, такође је потребно изменити графикон тако да може произвести нове излазе в.р.т. исти улази. За ово ћете користити променљиве. Укратко, променљива вам омогућава да на графикон додате такве параметре или чвор који се могу обучити, тј. Вредност се може мењати током одређеног временског периода. Променљиве су дефинисане давањем њихове почетне вредности и типа као што је приказано доле:

вар = тф.Вариабле ([0,4], дтипе = тф.флоат32)

Белешка:

  • У случају да нисте експлицитно навели тип података, ТенсорФлов ће из иницијалне вредности закључити тип константе / променљиве.
  • ТенсорФлов има много властитих типова података попут тф.флоат32 , тф.инт32 итд. Можете их упутити на све овде .

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

инит = тф.глобал_вариаблес_инитиализер () сесс.рун (инит)

Увек имајте на уму да променљива мора бити иницијализована пре прве употребе графикона.

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

Сад кад смо покрили довољно основа ТенсорФлов-а, хајде да схватимо како да применимо модел линеарне регресије помоћу ТенсорФлов-а.

Модел линеарне регресије помоћу ТенсорФлов-а

Модел линеарне регресије користи се за предвиђање непознате вредности променљиве (зависне променљиве) из познате вредности других променљивих (независна променљива) користећи линеарну регресиону једначину као што је приказано доле:

Због тога вам је за стварање линеарног модела потребно:

шта је подниз у јави
  1. Зависна или излазна променљива (И)
  2. Променљива нагиба (в)
  3. И - пресретање или пристрасност (б)
  4. Независна или улазна променљива (Кс)

Дакле, започнимо изградњу линеарног модела користећи ТенсорФлов:

Копирајте код кликом на дугме дато испод:

# Креирање променљиве за нагиб параметра (В) са почетном вредношћу од 0,4 В = тф.Вариабле ([. 4], тф.флоат32) # Стварање променљиве за пристраност параметра (б) са почетном вредношћу од -0,4 б = тф.Вариабле ( [-0,4], тф.флоат32) # Креирање резервираних места за пружање улазних или независних променљивих, означених са кк = тф.плацехолдер (тф.флоат32) # Једначина линеарне регресије линеар_модел = В * к + б # Иницијализација свих променљивих сесс = тф.Сессион () инит = тф.глобал_вариаблес_инитиализер () сесс.рун (инит) # Покретање регресионог модела за израчунавање излазног врт-а до исписаних вредности к (сесс.рун (линеарни_модел {к: [1, 2, 3, 4]}))

Излаз:

[0. 0.40000001 0.80000007 1.20000005]

Горе наведени код само представља основну идеју иза имплементације регресионог модела, тј. Како следите једначину регресионе линије како бисте добили излаз в.р.т. скуп улазних вредности. Али, преостале су још две ствари које треба додати у овај модел да би постао потпуни регресијски модел:

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

Сада да схватимо како могу да укључим горе наведене функционалности у свој код за регресијски модел.

Функција губитка - валидација модела

Функција губитка мери колико су тренутни излази модела удаљени од жељеног или циљног излаза. Користићу најчешће коришћену функцију губитка за свој модел линеарне регресије назван Збир грешке квадрата или ССЕ. ССЕ израчунато в.р.т. излаз модела (представља линеарни_модел) и жељени или циљни излаз (и) као:

и = тф.плацехолдер (тф.флоат32) грешка = линеарни_модел - и квадратни_погрешки = тф.скуаре (грешка) губитак = тф.редуце_сум (квадратни_грешке) принт (сесс.рун (губитак, {к: [1,2,3,4 ], и: [2, 4, 6, 8]})
 Излаз: 90.24

Као што видите, добијамо високу вредност губитака. Због тога морамо да прилагодимо тежину (В) и пристрасност (б) тако да смањимо грешку коју примамо.

тф.траин АПИ - Обука модела

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

# Стварање инстанце оптимизатора спуштања градијентног спуштања = тф.траин.ГрадиентДесцентОптимизер (0,01) траин = оптимизер.минимизе (губитак) за и ин ранге (1000): сесс.рун (траин, {к: [1, 2, 3, 4], и: [2, 4, 6, 8]}) принт (сесс.рун ([В, б]))
 Излаз: [низ ([1.99999964], дтипе = флоат32), низ ([9.86305167е-07], дтипе = флоат32)]

Дакле, на овај начин креирате линеарни модел помоћу ТенсорФлов-а и тренирате га да бисте добили жељени излаз.

Сад кад знате за дубоко учење, погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250 000 задовољних ученика раширених широм света. Едурека курс за дубинско учење помоћу ТенсорФлов сертификата помаже ученицима да постану стручњаци у обуци и оптимизацији основних и конволуционих неуронских мрежа користећи пројекте и задатке у стварном времену, заједно са концептима као што су СофтМак функција, Неуронске мреже са аутоматским кодирањем, Ограничена Болтзманн машина (РБМ).

Имате питање за нас? Молимо вас да то споменете у одељку за коментаре и јавићемо вам се.