Почнимо овај водич са уводом у ТенсорФлов:
Шта је ТенсорФлов?
ТенсорФлов је опен-енд платформа за израду апликација за машинско учење. То је симболична математичка библиотека која користи проток података и различито програмирање за обављање различитих задатака усмерених на обуку и закључивање дубоких неуронских мрежа. Омогућава програмерима да креирају апликације за машинско учење користећи разне алате, библиотеке и ресурсе заједнице.
Тренутно је најпознатија библиотека за дубоко учење на свету Гоогле-ов ТенсорФлов. Гоогле производ користи машинско учење у свим својим производима да би побољшао претраживач, превод, титлове слика или препоруке.
Дајући конкретан пример, Гоогле корисници могу да доживе бржу и прецизнију претрагу помоћу АИ. Ако корисник упише кључну реч у траку за претрагу, Гоогле даје препоруку о томе која би могла бити следећа реч.
Гоогле жели да користи машинско учење како би искористио предности њихових масовних скупова података како би корисницима пружио најбоље искуство. Три различите групе користе машинско учење:
- Истраживачи
- Научници података
- Програмери.
Сви они могу користити исти сет алата за међусобну сарадњу и побољшање њихове ефикасности.
Гоогле нема само податке; имају најмасовнији рачунар на свету, па је Тенсор Флов направљен у мери. ТенсорФлов је библиотека коју је развио Гооглеов тим за мозак како би убрзао машинско учење и истраживање дубоких неуронских мрежа.
Направљен је за рад на више процесора или графичких процесора, па чак и на мобилним оперативним системима, а има неколико омота на неколико језика као што су Питхон, Ц ++ или Јава.
У овом водичу за ТенсорФлов научићете
- Шта је ТенсорФлов?
- Историја ТенсорФлов-а
- Како делује ТенсорФлов
- ТенсорФлов Арцхитецтуре
- Где може да ради Тенсорфлов?
- Увод у компоненте ТенсорФлов-а
- Зашто је ТенсорФлов популаран?
- Списак истакнутих алгоритама које подржава ТенсорФлов
- Пример једноставног ТенсорФлов-а
- Опције за учитавање података у ТенсорФлов
- Направите Тенсорфлов цевовод
Историја ТенсорФлов-а
Пре неколико година, дубоко учење је почело да надмашује све друге алгоритме машинског учења када је давало огромну количину података. Гоогле је видео да би могао да користи ове дубоке неуронске мреже за побољшање својих услуга:
- Гмаил
- Пхото
- Гоогле претраживач
Они граде оквир назван Тенсорфлов како би истраживачима и програмерима омогућили да заједно раде на АИ моделу. Једном развијен и скалиран, омогућава многим људима да га користе.
Први пут је објављен крајем 2015. године, док се прва стабилна верзија појавила 2017. године. Отворени је под лиценцом Апацхе Опен Соурце. Можете га користити, модификовати и поново дистрибуирати измењену верзију уз накнаду, а да ништа не плаћате Гоогле-у.
Следеће у овом водичу за дубоко учење за ТенсорФлов научићемо о архитектури ТенсорФлов и како функционише ТенсорФлов.
Како делује ТенсорФлов
ТенсорФлов вам омогућава да направите графиконе тока података и структуре како бисте дефинисали како се подаци крећу кроз графикон узимајући улазе као вишедимензионални низ зван Тенсор. Омогућава вам да направите дијаграм тока операција које се могу изводити на овим улазима, а који иде на један, а на други крај као излаз.
ТенсорФлов Арцхитецтуре
Тенсорфлов архитектура ради у три дела:
- Предобрада података
- Изградите модел
- Обучити и проценити модел
Зове се Тенсорфлов јер узима улаз као вишедимензионални низ, познат и као тензори . Можете створити неку врсту дијаграма тока операција (названог Графикон) који желите извршити на том улазу. Улаз улази на једном крају, а затим пролази кроз овај систем вишеструких операција и излази на други крај као излаз.
Због тога се зове ТенсорФлов јер тензор улази у њега тече кроз листу операција, а затим излази на другу страну.
Где може да ради Тенсорфлов?
Хардверски и софтверски захтеви ТенсорФлов могу се класификовати
Фаза развоја: Ово је када тренирате режим. Обука се обично изводи на радној површини или лаптопу.
Покрени фазу или фазу закључивања: Када се тренинг заврши, Тенсорфлов се може покретати на много различитих платформи. Можете га покренути
- Десктоп са оперативним системом Виндовс, мацОС или Линук
- Цлоуд као веб услуга
- Мобилни уређаји попут иОС-а и Андроид-а
Можете га тренирати на више машина, а затим га можете покретати на другој машини, након што добијете обучени модел.
Модел се може обучити и користити на ГПУ-има као и на ЦПУ-има. ГПУ-ови су у почетку били дизајнирани за видео игре. Крајем 2010. године истраживачи са Станфорда открили су да је ГПУ такође врло добар у раду са матрицама и алгебри, тако да их чини врло брзим за обављање ове врсте прорачуна. Дубоко учење се ослања на множење матрица. ТенсорФлов је врло брз у рачунању множења матрица, јер је написан на Ц ++. Иако је имплементиран у Ц ++, ТенсорФлов-у могу да приступе и контролишу углавном други језици, Питхон.
Коначно, значајна карактеристика ТенсорФлов-а је ТенсорБоард. ТенсорБоард омогућава графичко и визуелно надгледање онога што ТенсорФлов ради.
Увод у компоненте ТенсорФлов-а
Тензор
Име Тенсорфлов-а је директно изведено из његовог основног оквира: Тенсор . У Тенсорфлов-у сва израчунавања укључују тензоре. Тензор је вектор или матрица н-димензија која представља све врсте података. Све вредности у тензору садрже идентичан тип података са познатим (или делимично познатим) обликом . Облик података је димензионалност матрице или низа.
Тензор може настати из улазних података или резултата прорачуна. У ТенсорФлов-у све операције се изводе унутар графикона . Графикон је скуп израчунавања који се одвија сукцесивно. Свака операција назива се оп чвор и они су међусобно повезани.
Графикон даје преглед операција и веза између чворова. Међутим, не приказује вредности. Руб чворова је тензор, тј. Начин да се операција попуни подацима.
Графикони
ТенсорФлов користи оквир графикона. Графикон прикупља и описује све серијске прорачуне урађене током тренинга. Графикон има пуно предности:
- Урађено је за покретање на више ЦПУ-а или ГПУ-а, па чак и на мобилном оперативном систему
- Преносивост графикона омогућава очување прорачуна за непосредну или каснију употребу. Графикон се може сачувати за извршење у будућности.
- Сва израчунавања на графикону се изводе повезивањем тензора
- Тензор има чвор и ивицу. Чвор носи математичку операцију и производи излазе крајњих тачака. Ивице ивица објашњавају улазно / излазне односе између чворова.
Зашто је ТенсорФлов популаран?
ТенсорФлов је најбоља библиотека од свих јер је направљен тако да буде доступан свима. Библиотека Тенсорфлов укључује различите АПИ-је за изграђену архитектуру дубоког учења попут ЦНН или РНН. ТенсорФлов је заснован на израчунавању графова; омогућава програмеру да визуализује изградњу неуронске мреже помоћу Тенсорбоада. Овај алат је користан за отклањање грешака у програму. Коначно, Тенсорфлов је направљен да се примени у великом обиму. Ради на ЦПУ и ГПУ.
Тенсорфлов привлачи највећу популарност на ГитХуб-у у поређењу са другим оквирима дубоког учења.
Списак истакнутих алгоритама које подржава ТенсорФлов
Испод је листа подржаних ТенсорФлов алгоритама:
Тренутно ТенсорФлов 1.10 има уграђени АПИ за:
- Линеарна регресија: тф.естиматор.ЛинеарРегрессор
- Класификација: тф.естиматор.ЛинеарЦлассифиер
- Класификација дубоког учења: тф.естиматор.ДННЦлассифиер
- Дубинско учење и дубинско брисање: тф.естиматор.ДННЛинеарЦомбинедЦлассифиер
- Појачала регресија стабла: тф.естиматор.БоостедТреесРегрессор
- Класификација појачаног дрвета: тф.естиматор.БоостедТреесЦлассифиер
Пример једноставног ТенсорФлов-а
import numpy as npimport tensorflow as tf
У прва два реда кода увезли смо тенсорфлов као тф. Код Питхона је уобичајена пракса да се кратко име користи за библиотеку. Предност је у томе што избегавамо да укуцамо пуно име библиотеке када је потребно да је користимо. На пример, можемо увести тенсорфлов као тф и позвати тф када желимо да користимо функцију тенсорфлов
Увежбајмо елементарни ток рада Тенсорфлов-а са једноставним примерима ТенсорФлов-а. Направимо рачунски граф који множи два броја заједно.
Током примера помножићемо Кс_1 и Кс_2 заједно. Тенсорфлов ће створити чвор за повезивање операције. У нашем примеру то се назива множење. Када се утврди граф, рачунски мотори Тенсорфлов множе се заједно Кс_1 и Кс_2.
Пример ТенсорФлов
На крају ћемо покренути сесију ТенсорФлов која ће покренути рачунски граф са вредностима Кс_1 и Кс_2 и исписати резултат множења.
Дефинишимо улазне чворове Кс_1 и Кс_2. Када креирамо чвор у Тенсорфлов-у, морамо одабрати какав чвор ћемо створити. Чворови Кс1 и Кс2 биће чвор чувара места. Резервисано место додељује нову вредност сваки пут када направимо прорачун. Направићемо их као чвор чувара места ТФ тачке.
Корак 1: Дефинишите променљиву
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Када креирамо чвор резервираног места, морамо да унесемо да ће тип података овде додавати бројеве како бисмо могли да користимо тип података са помичном тачком, употребимо тф.флоат32. Такође морамо да дамо име овом чвору. Ово име ће се појавити када погледамо графичке визуализације нашег модела. Назовимо овај чвор Кс_1 додавањем параметра названог наме са вредношћу Кс_1, а сада дефинишемо Кс_2 на исти начин. Кс_2.
Корак 2: Дефинишите прорачун
multiply = tf.multiply(X_1, X_2, name = "multiply")
Сада можемо дефинисати чвор који врши операцију множења. У Тенсорфлов-у то можемо учинити стварањем тф.мултипли чвора.
Прећи ћемо у чворове Кс_1 и Кс_2 до чвора множења. Тенсорфлов-у говори да повеже те чворове у рачунском графу, па тражимо да повуче вредности из к и и и помножи резултат. Дајмо такође чвору за множење назив мултипли. То је целокупна дефиниција нашег једноставног рачунског графа.
Корак 3: Извршите операцију
Да бисмо извршили операције на графикону, морамо створити сесију. У Тенсорфлов-у то чини тф.Сессион (). Сада када имамо сесију, можемо затражити да сесија покрене операције на нашем рачунском графу позивањем сесије. Да бисмо извршили израчунавање, треба да користимо рун.
Када се операција сабирања покрене, видеће да треба да зграби вредности чворова Кс_1 и Кс_2, тако да такође морамо да унесемо вредности за Кс_1 и Кс_2. То можемо учинити давањем параметра који се зове феед_дицт. Пролазимо вредност 1,2,3 за Кс_1 и 4,5,6 за Кс_2.
Резултате исписујемо принт (резултат). Требали бисмо видети 4, 10 и 18 за 1к4, 2к5 и 3к6
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]
Опције за учитавање података у ТенсорФлов
Први корак пре обуке алгоритма машинског учења је учитавање података. Постоје два уобичајена начина за учитавање података:
1. Учитавање података у меморију: То је најједноставнија метода. Све податке учитавате у меморију као један низ. Можете написати Питхон код. Ови редови кода нису повезани са Тенсорфлов-ом.
2. Цевовод података за проток података. Тенсорфлов има уграђени АПИ који вам помаже да лако учитате податке, извршите операцију и напајате алгоритам машинског учења. Ова метода делује врло добро, посебно када имате велики скуп података. На пример, познато је да су записи слика огромни и не уклапају се у меморију. Цјевовод података сам управља меморијом
Које решење користити?
Учитајте податке у меморију
Ако ваш скуп података није превелик, односно мањи од 10 гигабајта, можете користити прву методу. Подаци се могу уклопити у меморију. За увоз ЦСВ датотека можете да користите познату библиотеку Пандас. О пандама ћете сазнати више у следећем водичу.
Учитајте податке помоћу Тенсорфлов цевовода
Друга метода најбоље функционише ако имате велики скуп података. На пример, ако имате скуп података од 50 гигабајта, а рачунар има само 16 гигабајта меморије, машина ће се срушити.
У овој ситуацији треба да изградите цевовод Тенсорфлов. Цјевовод ће учитати податке у пакету или у мањем дијелу. Свака серија ће бити гурнута у цевовод и биће спремна за обуку. Изградња цевовода је изврсно решење јер вам омогућава да користите паралелно рачунање. То значи да ће Тенсорфлов обучити модел на више процесора. Подстиче рачунање и дозволе за обуку моћне неуронске мреже.
Видећете у следећим водичима о томе како направити значајан цевовод за напајање ваше неуронске мреже.
Укратко, ако имате мали скуп података, можете податке учитати у меморију помоћу Пандас библиотеке.
Ако имате велики скуп података и желите да користите више процесора, биће вам угодније радити са Тенсорфлов цевоводом.
Направите Тенсорфлов цевовод
У претходном примеру ручно додајемо три вредности за Кс_1 и Кс_2. Сада ћемо видети како да учитамо податке у Тенсорфлов.
Корак 1) Направите податке
Пре свега, употребимо нумпи библиотеку за генерисање две случајне вредности.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0,8835775 0,23766977]]
Корак 2) Направите резервирано место
Као у претходном примеру, креирамо резервирано место са именом Кс. Морамо експлицитно одредити облик тензора. У случају да ћемо учитати низ са само две вредности. Облик можемо записати као схапе = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Корак 3) Дефинишите метод скупа података
затим треба да дефинишемо скуп података где можемо попунити вредност чувара места к. Морамо да користимо методу тф.дата.Датасет.фром_тенсор_слицес
dataset = tf.data.Dataset.from_tensor_slices(x)
Корак 4) Направите цевовод
У четвртом кораку морамо да иницијализујемо цевовод где ће подаци тећи. Морамо направити итератор са маке_инитиализабле_итератор. Назвали смо га итератор. Затим треба да позовемо овај итератор да унесе следећу серију података, гет_нект. Овај корак именујемо гет_нект. Имајте на уму да у нашем примеру постоји само једна група података са само две вредности.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Корак 5) Извршите операцију
Последњи корак је сличан претходном примеру. Покрећемо сесију и покрећемо итератор операције. Феед_дицт хранимо вредношћу коју генерише нумпи. Ове две вредности ће попунити резервирано место к. Затим покренемо гет_нект за испис резултата.
with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Резиме
Значење ТенсорФлов-а: ТенсорФлов је најпознатија библиотека за дубоко учење ових последњих година. Вежбач који користи ТенсорФлов може да изгради било коју структуру дубоког учења, попут ЦНН-а, РНН-а или једноставне вештачке неуронске мреже.
ТенсорФлов углавном користе академици, стартупи и велике компаније. Гоогле користи ТенсорФлов у готово свим свакодневним Гооглеовим производима, укључујући Гмаил, Пхото и Гоогле Сеарцх Енгине.
Гоогле Браин тим је развио ТенсорФлов како би попунио празнину између истраживача и програмера производа. 2015. године су објавили ТенсорФлов; брзо расте у популарности. Данас је ТенсорФлов библиотека дубоког учења са највише спремишта на ГитХуб-у.
Практичари користе Тенсорфлов јер га је лако применити у великом обиму. Направљен је за рад у облаку или на мобилним уређајима попут иО-а и Андроид-а.
Тенсорфлов ради у сесији. Свака сесија је дефинисана графом са различитим прорачунима. Једноставан пример може бити множење са бројем. У програму Тенсорфлов потребна су три корака:
- Дефинишите променљиву
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Дефинишите прорачун
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Извршите операцију
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Једна уобичајена пракса у Тенсорфлов-у је стварање цевовода за учитавање података. Ако следите ових пет корака, моћи ћете да учитате податке у ТенсорФЛов
- Направите податке
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Направите резервирано место
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Дефинишите метод скупа података
dataset = tf.data.Dataset.from_tensor_slices(x)
- Створите цевовод
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Извршите програм
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))