Дата Сциенце

Водич за Питхон Тенсорфлов

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

Свеукупно, обрадићемо три главне теме у овој лекцији:

  1. Шта су Тенсори и ТенсорФлов
  2. Примена МЛ алгоритама са ТенсорФлов-ом
  3. Случајеви употребе ТенсорФлов

ТенсорФлов је одличан Гооглеов пакет Питхон који добро користи парадигму програмирања тока података за високо оптимизоване математичке прорачуне. Неке од карактеристика ТенсорФлов-а су:

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

Инсталирање ТенсорФлов-а

Како ћемо користити Питхон АПИ за ТенсорФлов, добро је знати да он функционише са оба Питхон 2.7 и 3.3+ верзије. Инсталирајмо ТенсорФлов библиотеку пре него што пређемо на стварне примере и концепте. Постоје два начина за инсталирање овог пакета. Први укључује употребу Питхон менаџера пакета, пип:

пип инсталл тенсорфлов

Други начин се односи на Анацонду, пакет можемо инсталирати као:

цонда инсталл -ц цонда-форге тенсорфлов

Слободно потражите верзије ноћних верзија и верзије ГПУ-а на званичним страницама за инсталацију ТенсорФлов-а.

Користићу менаџер Анацонде за све примере у овој лекцији. Покренућу Јупитер Нотебоок за исти:

Сад кад смо спремни да са свим наредбама за увоз напишемо неки код, почнимо да зарањамо у СциПи пакет са неколико практичних примера.

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

Тензори су основне структуре података које се користе у програму Тенсорфлов. Да, они су само начин за представљање података у дубоком учењу. Замислимо их овде:

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

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

Разумевање ТенсорФлов-а са константама

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

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

увоз тенсорфлов као тф
к = тф.константан (5)
и = тф.константан (6)
з = к * и
испис (з)

Када покренемо овај пример, видећемо следећи излаз:

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

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

# Почните са објектом сесије
сесија = тф.Седница()
# Обезбедите израчунавање за сесију и сачувајте га
резултат = сесија.трчање (з)
# Одштампајте резултат израчунавања
испис (резултат)
# Затвори сесију
седница.Близу()

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

Иако смо добили упозорење од ТенсорФлов-а, ипак смо добили тачан излаз из израчунавања.

Операције тензора са једним елементом

Баш као и оно што смо помножили са два константна тензора у прошлом примеру, и у ТенсорФлов-у имамо много других операција које се могу изводити на појединачним елементима:

Операције са једним елементом значе да ће се чак и када наведете низ извршити на сваком елементу тог низа. На пример:

увоз тенсорфлов као тф
увоз нумпи као нп
тензор = нп.низ ([2, 5, 8])
тензор = тф.цонверт_то_тенсор (тензор, дтипе = тф.флоат64)
са тф.Сесија () као сесија:
испис (сесија.трчање (тф.цос (тензор)))

Када покренемо овај пример, видећемо следећи излаз:

Овде смо разумели два важна појма:

  1. Било који НумПи низ може се лако претворити у тензор помоћу функције цонверт_то_тенсор
  2. Операција је изведена на сваком елементу низа НумПи

Резервисачи и променљиве

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

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

Резервисање се може назвати договором на графикону који ће сигурно пружити улаз током извођења. Ево примера чувара места:

увоз тенсорфлов као тф
# Два резервисана места
к = тф. резервирано место (тф.флоат32)
и = тф. резервирано место (тф.флоат32)
# Додељивање операције множења в.р.т. а & б да чвор мул
з = к * и
# Креирајте сесију
сесија = тф.Седница()
# Пролазне вредности за плацехоллдерс
резултат = сесија.трчање (з, к: [2, 5], и: [3, 7])
принт ('Множење к и и:', резултат)

Када покренемо овај пример, видећемо следећи излаз:

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

к = тф.Променљива ([5.2], дтипе = тф.флоат32)

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

За разлику од константе, морамо да позовемо Питхон функцију да иницијализујемо све променљиве графа:

инит = тф.глобал_вариаблес_инитиализер ()
седница.покрените (инит)

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

Линеарна регресија са ТенсорФлов-ом

Линеарна регресија један је од најчешћих алгоритама који се користи за успостављање односа у датим континуираним подацима. Овај однос између координатних тачака, рецимо к и и, назива се а хипотеза. Када говоримо о Линеарној регресији, хипотеза је равна линија:

и = мк + ц

Овде је м нагиб праве, а овде вектор који представља тегова. ц је константни коефицијент (пресек и) и овде представља Склоност. Тежина и пристрасност се називају параметри модела.

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

увоз тенсорфлов као тф
# Променљиве за нагиб параметра (В) са почетном вредношћу 1.1
В = тф.Променљива ([1.1], тф.флоат32)
# Променљива за пристрасност (б) са почетном вредношћу -1.1
б = тф.Променљива ([- 1.1], тф.флоат32)
# Резервисари за пружање улазних података или независне променљиве, означени са к
к = тф.резервирано место (тф.флоат32)
# Једначина праве или линеарна регресија
линеарни_модел = Ш * к + б
# Иницијализација свих променљивих
сесија = тф.Седница()
инит = тф.глобал_вариаблес_инитиализер ()
седница.покрените (инит)
# Извршити регресиони модел
испис (сесија.трчање (линеарни_модел к: [2, 5, 7, 9])))

Ево, урадили смо управо оно што смо раније објаснили, хајде да резимирамо овде:

Када покренемо овај пример, видећемо следећи излаз:

Једноставни исечак кода само пружа основну идеју о томе како можемо изградити регресијски модел. Али још увек морамо учинити још неколико корака да бисмо довршили модел који смо изградили:

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

Да бисмо потврдили модел, треба да имамо меру колика је одступања тренутне излазне снаге од очекиване. Постоје разне функције губитака које се овде могу користити за валидацију, али погледаћемо једну од најчешћих метода, Збир грешке квадрата или ССЕ.

Једначина за ССЕ дата је као:

Е = 1/2 * (т - и) 2

Овде:

Хајде да сада напишемо исечак кода континуирано до последњег исечка да одражава вредност губитка:

и = тф.резервирано место (тф.флоат32)
грешка = линеарни_модел - год
квадратне_грешке = тф.квадрат (грешка)
губитак = тф.смањити_сум (квадратне_погрешке)
испис (сесија.трчање (губитак, к: [2, 5, 7, 9], и: [2, 4, 6, 8]))

Када покренемо овај пример, видећемо следећи излаз:

Јасно је да је вредност губитка врло ниска за дати модел линеарне регресије.

Закључак

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

Замените тастере миша другачије за различити софтвер помоћу Кс-Моусе Буттон Цонтрол
Можда вам је потребан алат који би могао да промени контролу миша са сваком апликацијом коју користите. Ако је то случај, можете испробати апликацију ...
Преглед бежичног миша Мицрософт Сцулпт Тоуцх
Недавно сам читао о Мицрософт Сцулпт Тоуцх бежични миш и одлучио да га купи. Након што сам га неко време користио, одлучио сам да са њим поделим своје...
Екран Трацкпад и показивач миша АппиМоусе за Виндовс таблете
Корисницима таблета често недостаје показивач миша, посебно када су уобичајени за коришћење преносних рачунара. Паметни телефони и таблети на додир ос...