Začnime tento návod úvodom do programu TensorFlow:
Čo je TensorFlow?
TensorFlow je open-source end-to-end platforma na vytváranie aplikácií strojového učenia. Je to symbolická matematická knižnica, ktorá využíva dátový tok a diferencovateľné programovanie na vykonávanie rôznych úloh zameraných na výcvik a odvodenie hlbokých neurónových sietí. Umožňuje vývojárom vytvárať aplikácie strojového učenia pomocou rôznych nástrojov, knižníc a komunitných zdrojov.
Najznámejšou knižnicou pre hlboké vzdelávanie na svete je v súčasnosti Google TensorFlow. Produkt Google používa vo všetkých svojich produktoch strojové učenie na vylepšenie vyhľadávacieho nástroja, prekladu, titulkov obrázkov alebo odporúčaní.
Ako konkrétny príklad môžeme uviesť, že používatelia služieb Google môžu vyhľadávať pomocou AI rýchlejšie a podrobnejšie. Ak používateľ zadá kľúčové slovo do vyhľadávacieho panela, Google poskytne odporúčanie, čo by mohlo byť ďalšie slovo.
Google chce pomocou strojového učenia využiť svoje masívne súbory údajov a poskytnúť používateľom čo najlepší zážitok. Strojové učenie využívajú tri rôzne skupiny:
- Vedci
- Vedci údajov
- Programátori.
Všetci môžu používať rovnakú sadu nástrojov na vzájomnú spoluprácu a zvyšovanie svojej efektívnosti.
Google nemá iba žiadne údaje; majú najmohutnejší počítač na svete, takže Tensor Flow bol vyrobený v mierke. TensorFlow je knižnica vyvinutá tímom Google Brain Team s cieľom urýchliť strojové učenie a hlboký výskum neurónových sietí.
Bol skonštruovaný tak, aby fungoval na viacerých procesoroch alebo GPU a dokonca aj na mobilných operačných systémoch, a má niekoľko obalov v niekoľkých jazykoch, ako sú Python, C ++ alebo Java.
V tomto výučbe TensorFlow sa naučíte
- Čo je TensorFlow?
- História TensorFlow
- Ako funguje TensorFlow
- Architektúra TensorFlow
- Kde môže Tensorflow bežať?
- Úvod do súčastí TensorFlow
- Prečo je TensorFlow populárny?
- Zoznam prominentných algoritmov podporovaných TensorFlow
- Jednoduchý príklad TensorFlow
- Možnosti načítania údajov do TensorFlow
- Vytvorte plynovod Tensorflow
História TensorFlow
Pred niekoľkými rokmi začalo hlboké učenie prekonávať všetky ostatné algoritmy strojového učenia, keď poskytovalo obrovské množstvo údajov. Google videl, že na zlepšenie svojich služieb môže použiť tieto hlboké neurónové siete:
- Gmail
- Foto
- Vyhľadávač Google
Budujú rámec s názvom Tensorflow, ktorý umožňuje výskumníkom a vývojárom spolupracovať na modeli AI. Po vývoji a rozšírení umožňuje veľa ľudí používať ho.
Prvýkrát bol zverejnený koncom roku 2015, zatiaľ čo prvá stabilná verzia sa objavila v roku 2017. Je to open source pod licenciou Apache Open Source. Môžete ho použiť, upraviť a za poplatok redistribuovať upravenú verziu bez toho, aby ste spoločnosti Google niečo platili.
Ďalej v tomto výučbovom programe TensorFlow Deep sa dozvieme o architektúre TensorFlow a o tom, ako TensorFlow funguje.
Ako funguje TensorFlow
TensorFlow vám umožňuje vytvárať grafy a štruktúry toku údajov, aby ste definovali, ako sa údaje pohybujú v grafe, a to tak, že vstupy beriete ako viacrozmerné pole s názvom Tensor. Umožňuje vám zostaviť vývojový diagram operácií, ktoré je možné na týchto vstupoch vykonať, ktorý ide na jednom konci a na druhom konci ako výstup.
Architektúra TensorFlow
Architektúra Tensorflow funguje v troch častiach:
- Predbežné spracovanie údajov
- Postavte model
- Trénujte a odhadnite model
Volá sa Tensorflow, pretože vstup berie ako multidimenzionálne pole, známe tiež ako tenzory . Môžete vytvoriť akýsi vývojový diagram operácií (tzv. Graf), ktoré chcete na danom vstupe vykonať. Vstup vstupuje na jednom konci a potom preteká týmto systémom viacerých operácií a vystupuje na druhom konci ako výstup.
Preto sa nazýva TensorFlow, pretože tenzor, ktorý do neho vstupuje, preteká zoznamom operácií a potom vychádza z druhej strany.
Kde môže Tensorflow bežať?
Hardvérové a softvérové požiadavky na TensorFlow možno rozdeliť na
Fáza vývoja: To je, keď trénujete režim. Školenie sa zvyčajne vykonáva na počítači alebo notebooku.
Spustiť fázu alebo fázu odvodenia: Po dokončení tréningu môže byť Tensorflow spustený na mnohých rôznych platformách. Môžete to spustiť
- Desktop so systémom Windows, macOS alebo Linux
- Cloud ako webová služba
- Mobilné zariadenia ako iOS a Android
Môžete ho trénovať na viacerých strojoch a potom ho môžete spustiť na inom stroji, keď budete mať trénovaný model.
Model je možné trénovať a používať na GPU aj CPU. GPU boli pôvodne určené pre videohry. Koncom roku 2010 Stanfordskí vedci zistili, že GPU je tiež veľmi dobrý v maticových operáciách a algebre, vďaka čomu je pre tieto druhy výpočtov veľmi rýchly. Hlboké učenie sa spolieha na veľa násobení matíc. TensorFlow je veľmi rýchly pri výpočte maticového násobenia, pretože je napísaný v C ++. Aj keď je implementovaný v C ++, k TensorFlow je možné pristupovať a ovládať ho hlavne v iných jazykoch, Python.
Nakoniec, významnou vlastnosťou TensorFlow je TensorBoard. TensorBoard umožňuje graficky a vizuálne sledovať, čo TensorFlow robí.
Úvod do súčastí TensorFlow
Tenzor
Názov Tensorflow je priamo odvodený z jeho základného rámca: Tensor . V Tensorflowe všetky výpočty zahŕňajú tenzory. Tenzor je vektor alebo matica n-dimenzií, ktorá predstavuje všetky typy údajov. Všetky hodnoty v tenzore obsahujú identický dátový typ so známym (alebo čiastočne známym) tvarom . Tvar údajov je rozmernosť matice alebo poľa.
Tenzor môže pochádzať zo vstupných údajov alebo z výsledku výpočtu. V TensorFlow sú všetky operácie vykonávané vo vnútri grafu . Graf je množina výpočtov, ktorá sa uskutočňuje postupne. Každá operácia sa nazýva operačný uzol a sú navzájom spojené.
Graf načrtáva operácie a spojenia medzi uzlami. Nezobrazuje však hodnoty. Okraj uzlov je tenzor, tj spôsob vyplnenia operácie dátami.
Grafy
TensorFlow využíva rámec grafov. Graf zhromažďuje a popisuje všetky výpočty sérií vykonané počas tréningu. Graf má veľa výhod:
- Robilo sa to na viacerých procesoroch alebo GPU a dokonca aj na mobilnom operačnom systéme
- Prenosnosť grafu umožňuje uchovať výpočty pre okamžité alebo neskoršie použitie. Graf je možné uložiť a vykonať v budúcnosti.
- Všetky výpočty v grafe sa vykonávajú spojením tenzorov
- Tenzor má uzol a hranu. Uzol nesie matematickú operáciu a produkuje výstupy koncových bodov. Okraje hrany vysvetľujú vzťahy vstupu / výstupu medzi uzlami.
Prečo je TensorFlow populárny?
TensorFlow je najlepšia knižnica zo všetkých, pretože je postavená tak, aby bola prístupná pre všetkých. Knižnica Tensorflow obsahuje rôzne API pre architektúru hlbokého učenia ako CNN alebo RNN. TensorFlow je založený na výpočte grafu; umožňuje vývojárovi vizualizovať stavbu neurónovej siete pomocou programu Tensorboad. Tento nástroj je užitočný na ladenie programu. Nakoniec je Tensorflow postavený tak, aby sa dal nasadiť vo veľkom. Beží na CPU a GPU.
Tensorflow priťahuje najväčšiu popularitu na GitHub v porovnaní s iným rámcom hlbokého učenia.
Zoznam prominentných algoritmov podporovaných TensorFlow
Nižšie uvádzame zoznam podporovaných algoritmov TensorFlow:
V súčasnosti má TensorFlow 1.10 zabudované API pre:
- Lineárna regresia: tf.estimator.LinearRegressor
- Klasifikácia: tf.estimator.LinearClassifier
- Klasifikácia hlbokého učenia: tf.estimator.DNNClassifier
- Vymazanie a hlboké učenie: tf.estimator.DNNLinearCombinedClassifier
- Regresia zosilňovacieho stromu: tf.estimator.BoostedTreesRegressor
- Posilnená klasifikácia stromu: tf.estimator.BoostedTreesClassifier
Jednoduchý príklad TensorFlow
import numpy as npimport tensorflow as tf
V prvých dvoch riadkoch kódu sme importovali tensorflow ako tf. V prípade Pythonu je bežnou praxou používať pre knižnicu krátky názov. Výhodou je vyhnúť sa zadávaniu celého názvu knižnice, keď ju potrebujeme používať. Napríklad môžeme importovať tensorflow ako tf a zavolať tf, keď chceme použiť funkciu tensorflow
Precvičme si elementárny pracovný tok Tensorflow na jednoduchých príkladoch TensorFlow. Vytvorme výpočtový graf, ktorý znásobí dve čísla.
V príklade budeme násobiť X_1 a X_2. Tensorflow vytvorí uzol na pripojenie operácie. V našom príklade sa to nazýva násobenie. Po určení grafu sa výpočtové motory Tensorflow vynásobia X_1 a X_2.
Príklad TensorFlow
Na záver spustíme reláciu TensorFlow, ktorá spustí výpočtový graf s hodnotami X_1 a X_2 a vytlačí výsledok násobenia.
Definujme vstupné uzly X_1 a X_2. Keď vytvárame uzol v Tensorflowe, musíme si zvoliť, aký druh uzla vytvoriť. Uzly X1 a X2 budú zástupným uzlom. Zástupný symbol priradí novej hodnote zakaždým, keď urobíme výpočet. Vytvoríme ich ako zástupný uzol bodky TF.
Krok 1: Definujte premennú
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Keď vytvoríme zástupný uzol, musíme odovzdať údajový typ, ktorý tu bude pridávať čísla, aby sme mohli použiť údajový typ s pohyblivou rádovou čiarkou, použijeme tf.float32. Tento uzol musíme tiež pomenovať. Tento názov sa zobrazí, keď sa pozrieme na grafické vizualizácie nášho modelu. Poďme pomenovať tento uzol X_1 tak, že zadáme parameter s názvom name s hodnotou X_1 a teraz rovnako definujeme X_2. X_2.
Krok 2: Definujte výpočet
multiply = tf.multiply(X_1, X_2, name = "multiply")
Teraz môžeme definovať uzol, ktorý vykonáva operáciu násobenia. V Tensorflow to dokážeme vytvorením uzla tf.multiply.
Prejdeme v uzloch X_1 a X_2 do uzla násobenia. Povie tensorflow, aby spojil tieto uzly vo výpočtovom grafe, takže ho žiadame, aby vytiahol hodnoty z xay a vynásobil výsledok. Dajme uzlu násobenia aj názov znásobiť. Je to celá definícia nášho jednoduchého výpočtového grafu.
Krok 3: Vykonajte operáciu
Aby sme mohli vykonať operácie v grafe, musíme vytvoriť reláciu. V Tensorflow to robí tf.Session (). Teraz, keď máme reláciu, môžeme ju požiadať o spustenie operácií na našom výpočtovom grafe volaním relácie. Na spustenie výpočtu musíme použiť run.
Po spustení operácie pridania sa uvidí, že je potrebné uchytiť hodnoty uzlov X_1 a X_2, takže musíme tiež vložiť hodnoty pre X_1 a X_2. Môžeme to urobiť zadaním parametra s názvom feed_dict. Pre X_1 odovzdáme hodnotu 1,2,3 a pre X_2 4,5,6.
Výsledky vytlačíme tlačou (výsledok). Mali by sme vidieť 4, 10 a 18 pre 1x4, 2x5 a 3x6
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.]
Možnosti načítania údajov do TensorFlow
Prvým krokom pred trénovaním algoritmu strojového učenia je načítanie údajov. Existujú dva bežné spôsoby načítania údajov:
1. Načítajte údaje do pamäte: Je to najjednoduchšia metóda. Načítate všetky svoje dáta do pamäte ako jedno pole. Môžete napísať kód Pythonu. Tieto riadky kódu nesúvisia s Tensorflow.
2. Dátový plynovod Tensorflow. Tensorflow má zabudované API, ktoré vám pomáha načítať dáta, vykonávať operáciu a ľahko napájať algoritmus strojového učenia. Táto metóda funguje veľmi dobre, najmä ak máte veľkú množinu údajov. Napríklad je známe, že obrazové záznamy sú obrovské a nezmestia sa do pamäte. Dátový kanál spravuje pamäť sám
Aké riešenie použiť?
Načítajte údaje do pamäte
Ak vaša množina údajov nie je príliš veľká, tj. Má menej ako 10 gigabajtov, môžete použiť prvú metódu. Dáta sa zmestia do pamäte. Na import súborov CSV môžete použiť slávnu knižnicu s názvom Pandas. Viac o pandách sa dozviete v ďalšom tutoriále.
Načítajte údaje potrubím Tensorflow
Druhá metóda funguje najlepšie, ak máte veľkú množinu údajov. Napríklad ak máte súbor údajov 50 gigabajtov a váš počítač má iba 16 gigabajtov pamäte, zariadenie sa zrúti.
V tejto situácii musíte postaviť plynovod Tensorflow. Potrubie načíta údaje hromadne alebo v malom bloku. Každá dávka sa natlačí na potrubie a bude pripravená na školenie. Budovanie potrubia je vynikajúcim riešením, pretože vám umožňuje používať paralelné výpočty. To znamená, že Tensorflow trénuje model na viacerých procesoroch. Podporuje výpočty a povolenia na výcvik výkonnej neurónovej siete.
Uvidíte v ďalších tutoriáloch, ako vybudovať významný plynovod na napájanie vašej neurónovej siete.
Stručne povedané, ak máte malú množinu údajov, môžete načítať údaje do pamäte pomocou knižnice Pandas.
Ak máte veľký súbor údajov a chcete využívať viac CPU, bude vám pohodlnejšie pracovať s potrubím Tensorflow.
Vytvorte plynovod Tensorflow
V predchádzajúcom príklade ručne pridáme tri hodnoty pre X_1 a X_2. Teraz uvidíme, ako načítať údaje do Tensorflow.
Krok 1) Vytvorte údaje
Najskôr použijeme numpy library na vygenerovanie dvoch náhodných hodnôt.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0,8835775 0,23766977]]
Krok 2) Vytvorte zástupný symbol
Rovnako ako v predchádzajúcom príklade, aj tu vytvoríme zástupný symbol s menom X. Tvar tenzora musíme explicitne určiť. V prípade, že načítame pole iba s dvoma hodnotami. Tvar môžeme napísať ako tvar = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Krok 3) Definujte metódu množiny údajov
ďalej musíme definovať množinu údajov, kde môžeme vyplniť hodnotu zástupného symbolu x. Musíme použiť metódu tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Krok 4) Vytvorte kanál
V štvrtom kroku musíme inicializovať kanál, kam budú údaje prúdiť. Musíme vytvoriť iterátor s make_initializable_iterator. Pomenujeme to iterátor. Potom musíme zavolať tento iterátor, aby nakŕmil ďalšiu dávku dát, get_next. Tento krok pomenujeme get_next. Upozorňujeme, že v našom príklade existuje iba jedna dávka údajov s iba dvoma hodnotami.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Krok 5) Vykonajte operáciu
Posledný krok je podobný predchádzajúcemu príkladu. Iniciujeme reláciu a spustíme iterátor operácie. Feed_dict napájame hodnotou vygenerovanou parametrom numpy. Tieto dve hodnoty vyplnia zástupný symbol x. Potom spustíme get_next, aby sme vytlačili výsledok.
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]
Zhrnutie
Význam: TensorFlow: TensorFlow je najslávnejšia knižnica hlbokého učenia posledných rokov. Odborník využívajúci TensorFlow dokáže zostaviť ľubovoľnú štruktúru hlbokého učenia, napríklad CNN, RNN alebo jednoduchú umelú neurónovú sieť.
TensorFlow používajú väčšinou akademici, startupy a veľké spoločnosti. Google používa TensorFlow takmer vo všetkých denných produktoch Google vrátane služieb Gmail, Photo a Google Search Engine.
TensorFlow vyvinutý tímom Google Brain, aby vyplnil medzeru medzi výskumníkmi a vývojármi produktov. V roku 2015 zverejnili TensorFlow; rýchlo rastie v popularite. V súčasnosti je TensorFlow knižnica hlbokého učenia s najväčším počtom úložísk na GitHub.
Odborníci používajú Tensorflow, pretože je ľahké ich nasadiť vo veľkom rozsahu. Je postavený na prácu v cloude alebo na mobilných zariadeniach, ako sú iOs a Android.
Tensorflow pracuje na relácii. Každá relácia je definovaná grafom s rôznymi výpočtami. Jednoduchým príkladom môže byť násobenie na číslo. V Tensorflow sú potrebné tri kroky:
- Definujte premennú
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definujte výpočet
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Vykonajte operáciu
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Bežnou praxou v Tensorflow je vytvorenie potrubia na načítanie údajov. Ak budete postupovať podľa týchto piatich krokov, budete môcť načítať údaje do TensorFLow
- Vytvorte údaje
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Vytvorte zástupný symbol
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definujte metódu množiny údajov
dataset = tf.data.Dataset.from_tensor_slices(x)
- Vytvorte kanál
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Vykonajte program
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))