ТенсорФлов

Први кораци са ТенсорФлов-ом

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

ТенсорФлов је нашао огромну употребу на пољу машинског учења, управо зато што машинско учење укључује пуно премештања бројева и користи се као генерализована техника решавања проблема. И премда ћемо с њим комуницирати помоћу Питхона, он има предње крајеве за друге језике попут Го, Ноде.јс, па чак и Ц #.

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

Машинско учење (МЛ)

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

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

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

Идеја је једноставна, започиње дефинисањем проблема класификације. На пример, желите да аутоматизујете поступак идентификације врста паука. Врсте које су вам познате су разне класе (не треба их мешати са таксономским класама) и циљ алгоритма је сортирање нове непознате слике у једну од ових класа.

Овде би први корак за човека био утврђивање карактеристика различитих појединачних паука. Дали бисмо податке о дужини, ширини, телесној маси и боји појединих паука заједно са врстама којима припадају:

Дужина Ширина Миса Боја Текстура Врсте
5 3 12 Браон глатка Тата Дуге ноге
10 8 28 Браон црни длакав Тарантула

Имати велику колекцију таквих појединачних података о пауку користиће се за „дресирање“ алгоритма, а други сличан скуп података користиће се за тестирање алгоритма како би се видело колико добро функционише у односу на нове информације са којима се никада раније није сусрео, али које већ знамо одговор на.

Алгоритам ће започети на случајан начин. То ће рећи, сваки паук, без обзира на његове особине, био би класификован као било ко од врста. Ако у нашем скупу података постоји 10 различитих врста, онда би овај наивни алгоритам добио тачну класификацију отприлике 1/10 пута због пуке среће.

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

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

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

ТенсорФлов и обучите сопствени класификатор цвећа

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

Али можемо и боље, пружајући алгоритму само необрађене податке о слици, можемо му дозволити да проналази обрасце и разуме разне ствари на слици, попут препознавања облика на слици, затим разумевање шта су текстуре различитих површина, боја , тако даље, и тако даље. Ово је почетни појам рачунарског вида и можете га користити и за друге врсте улаза, попут аудио сигнала и обуке вашег алгоритма за препознавање гласа. Све ово потпада под кровни термин „дубоко учење“, где је машинско учење доведено до своје логичне крајности.

Овај уопштени скуп појмова тада може бити специјализован за бављење великим бројем слика цвећа и њихово категоризовање.

У доњем примеру ћемо користити Питхон2.7 фронт-енд за интерфејс са ТенсорФлов-ом и користићемо пип (а не пип3) за инсталирање ТенсорФлов-а. Подршка за Питхон 3 је и даље мала грешка.

Да бисте направили свој властити класификатор слика, прво га употребите помоћу ТенсорФлов-а пип:

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

Даље, треба да клонирамо тенсорфлов-за-песнике-2 гит спремиште. Ово је заиста добро место за почетак из два разлога:

  1. Једноставан је и лак за употребу
  2. Долази унапред обучено до одређеног степена. На пример, класификатор цвећа већ је обучен да разуме какву текстуру гледа и које облике гледа, па је рачунски мање интензиван.

Узмимо спремиште:

$ гит клон хттпс: // гитхуб.цом / гооглецоделабс / тенсорфлов-фор-поетс-2
$ цд тенсорфлов-за-песнике-2

Ово ће бити наш радни директоријум, тако да би све наредбе од сада требало издавати из њега.

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

$ цурл хттп: // преузимање.тенсорфлов.орг / екампле_имагес / фловер_пхотос.тгз
|. | тар кз -Ц тф_филес

Директориј .. ./тенсорфлов-фор-поетс-2 / тф_филес садржи тону ових слика правилно означених и спремних за употребу. Слике ће бити у две различите сврхе:

  1. Обука МЛ програма
  2. Тестирање МЛ програма

Можете да проверите садржај фасцикле тф_филес и овде ћете открити да се сужавамо на само 5 категорија цвећа, и то тратинчице, тулипани, сунцокрет, маслачак и руже.

Обука модела

Процес обуке можете започети тако што ћете прво подесити следеће константе за промену величине свих улазних слика у стандардну величину и употребом лагане архитектуре мобилне мреже:

$ ИМАГЕ_СИЗЕ = 224
$ АРЦХИТЕЦТУРЕ = "мобиленет_0.50 _ $ ИМАГЕ_СИЗЕ "

Затим позовите питхон скрипту покретањем наредбе:

$ питхон -м скрипте.преквалификовати \
--уско грло = тф_филес / уска грла \
--хов_мани_траининг_степс = 500 \
--модел_дир = тф_филес / моделс / \
--суммариес_дир = тф_филес / траининг_суммариес / "$ АРЦХИТЕЦТУРЕ" \
--оутпут_грапх = тф_филес / ретраинед_грапх.пб \
--оутпут_лабелс = тф_филес / ретраинед_лабелс.ткт \
--архитектура = "$ АРЦХИТЕЦТУРЕ" \
--имаге_дир = тф_филес / фловер_пхотос

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

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

Користећи обучени модел

Сада сте спремни да користите овај модел за препознавање слика било које нове слике цвета. Користићемо ову слику:

Лице сунцокрета се слабо види и ово је велики изазов за наш модел:

Да бисте добили ову слику са Викимедиа цоммонс, користите вгет:

$ вгет хттпс: // уплоад.викимедиа.орг / википедиа / цоммонс / 2/28 / Сунфловер_хеад_2011_Г1.јпг
$ мв Сунфловер_хеад_2011_Г1.јпг тф_филес / непознато.јпг

Сачувано је као непознат.јпг под тф_филес поддиректориј.

Сада, за тренутак истине, видећемо шта наш модел има да каже о овој слици.Да бисмо то урадили, позивамо се на лабел_имаге скрипта:

$ питхон -м скрипте.лабел_имаге --грапх = тф_филес / ретраинед_грапх.пб --
слика = тф_филес / непознато.јпг

Добили бисте излаз сличан овом:

Бројеви поред врсте цвета представљају вероватноћу да наша непозната слика припада тој категорији. На пример, 98.04% је сигурно да је слика сунцокрета и само 1.37% шансе да то буде ружа.

Закључак

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

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

Водич за битку за Веснотх
Битка за Веснотх је једна од најпопуларнијих стратешких игара отвореног кода које тренутно можете играти. Не само да је ова игра у развоју већ јако ду...
0 А.Д. Приручник
Од многих стратешких игара тамо, 0 А.Д. успева да се истакне као свеобухватан наслов и врло дубока, тактичка игра упркос томе што је отворен извор. Ра...
Водич за Унити3Д
Увод у Унити 3Д Унити 3Д је моћан мотор за развој игара. То је унакрсна платформа која вам омогућава да креирате игре за мобилне уређаје, веб, стоне р...