Začněme tento tutoriál úvodem do TensorFlow:
Co je TensorFlow?
TensorFlow je open-source end-to-end platforma pro vytváření aplikací Machine Learning. Jedná se o symbolickou matematickou knihovnu, která využívá datový tok a diferencovatelné programování k provádění různých úkolů zaměřených na výcvik a odvozování hlubokých neuronových sítí. Umožňuje vývojářům vytvářet aplikace strojového učení pomocí různých nástrojů, knihoven a komunitních zdrojů.
V současné době je nejznámější knihovnou hlubokého učení na světě Google TensorFlow. Produkt Google používá ve všech svých produktech strojové učení ke zlepšení vyhledávače, překladu, titulků obrázků nebo doporučení.
Abychom uvedli konkrétní příklad, mohou uživatelé Google zažít rychlejší a propracovanější vyhledávání pomocí AI. Pokud uživatel zadá klíčové slovo do vyhledávacího pole, Google poskytne doporučení ohledně dalšího slova.
Google chce pomocí strojového učení využít své masivní datové sady a poskytnout uživatelům nejlepší zážitek. Tři různé skupiny používají strojové učení:
- Výzkumní pracovníci
- Datoví vědci
- Programátoři.
Všichni mohou používat stejnou sadu nástrojů ke vzájemné spolupráci a zlepšování své efektivity.
Google nemá jen žádná data; mají nejmohutnější počítač na světě, takže Tensor Flow byl vyroben v měřítku. TensorFlow je knihovna vyvinutá týmem Google Brain pro urychlení strojového učení a hlubokého výzkumu neuronových sítí.
Byl postaven tak, aby fungoval na více CPU nebo GPU a dokonce i na mobilních operačních systémech, a má několik obalů v několika jazycích, jako je Python, C ++ nebo Java.
V tomto výukovém programu TensorFlow se naučíte
- Co je TensorFlow?
- Historie TensorFlow
- Jak funguje TensorFlow
- Architektura TensorFlow
- Kde může Tensorflow běžet?
- Úvod do komponent TensorFlow
- Proč je TensorFlow populární?
- Seznam prominentních algoritmů podporovaných TensorFlow
- Jednoduchý příklad TensorFlow
- Možnosti načtení dat do TensorFlow
- Vytvořte potrubí Tensorflow
Historie TensorFlow
Před několika lety začalo hluboké učení překonávat všechny ostatní algoritmy strojového učení, když poskytovalo obrovské množství dat. Google viděl, že ke zlepšení svých služeb může použít tyto hluboké neuronové sítě:
- Gmail
- Fotografie
- Vyhledávač Google
Budují rámec s názvem Tensorflow, který umožňuje vědcům a vývojářům spolupracovat na modelu AI. Jakmile je vyvinut a změněn, umožňuje mnoha lidem jej používat.
Poprvé byl zveřejněn koncem roku 2015, zatímco první stabilní verze se objevila v roce 2017. Je to open source pod licencí Apache Open Source. Můžete jej použít, upravit a redistribuovat upravenou verzi za poplatek, aniž byste společnosti Google něco platili.
Dále v tomto výukovém kurzu TensorFlow Deep se dozvíme o architektuře TensorFlow a o tom, jak TensorFlow funguje.
Jak funguje TensorFlow
TensorFlow umožňuje vytvářet grafy a struktury datových toků, které definují, jak se data pohybují v grafu, přičemž vstupy berou jako vícerozměrné pole s názvem Tensor. Umožňuje vám vytvořit vývojový diagram operací, které lze na těchto vstupech provádět, který jde na jednom konci a na druhém konci jako výstup.
Architektura TensorFlow
Architektura Tensorflow funguje ve třech částech:
- Předběžné zpracování dat
- Sestavte model
- Trénujte a odhadněte model
Nazývá se Tensorflow, protože bere vstup jako vícerozměrné pole, známé také jako tenzory . Můžete vytvořit jakýsi vývojový diagram operací (nazývaný Graph), který chcete na tomto vstupu provést. Vstup vstupuje na jednom konci a poté prochází tímto systémem více operací a vystupuje na druhém konci jako výstup.
To je důvod, proč se nazývá TensorFlow, protože tenzor v něm prochází seznamem operací a poté vyjde na druhou stranu.
Kde může Tensorflow běžet?
Hardwarové a softwarové požadavky TensorFlow lze rozdělit na
Fáze vývoje: To je, když trénujete režim. Školení se obvykle provádí na počítači nebo notebooku.
Fáze běhu nebo fáze odvození: Jakmile je školení hotové, Tensorflow lze spustit na mnoha různých platformách. Můžete to spustit
- Desktop se systémem Windows, macOS nebo Linux
- Cloud jako webová služba
- Mobilní zařízení jako iOS a Android
Můžete ho trénovat na více strojích a poté ho můžete spustit na jiném stroji, jakmile budete mít trénovaný model.
Model lze trénovat a používat na GPU i CPU. GPU byly původně navrženy pro videohry. Na konci roku 2010 zjistili vědci ze Stanfordu, že GPU je také velmi dobrý v maticových operacích a algebře, takže je velmi rychlý pro provádění těchto druhů výpočtů. Hluboké učení se spoléhá na mnoho násobení matic. TensorFlow je velmi rychlý při výpočtu násobení matic, protože je napsán v C ++. I když je implementován v C ++, lze k TensorFlow přistupovat a ovládat jej hlavně jiné jazyky, Python.
A konečně významnou vlastností TensorFlow je TensorBoard. TensorBoard umožňuje graficky a vizuálně sledovat, co TensorFlow dělá.
Úvod do komponent TensorFlow
Tenzor
Název Tensorflow je přímo odvozen od jeho základního rámce: Tensor . V Tensorflow všechny výpočty zahrnují tenzory. Tenzor je vektor nebo matice n-dimenzí, která představuje všechny typy dat. Všechny hodnoty v tenzoru obsahují identický datový typ se známým (nebo částečně známým) tvarem . Tvar dat je rozměrnost matice nebo pole.
Tenzor může pocházet ze vstupních dat nebo z výsledku výpočtu. V TensorFlow jsou všechny operace prováděny uvnitř grafu . Graf je množina výpočtů, která probíhá postupně. Každá operace se nazývá operační uzel a jsou navzájem propojeny.
Graf nastiňuje operace a spojení mezi uzly. Nezobrazuje však hodnoty. Okraj uzlů je tenzor, tj. Způsob vyplnění operace daty.
Grafy
TensorFlow využívá rámec grafů. Graf shromažďuje a popisuje všechny výpočty sérií provedené během tréninku. Graf má spoustu výhod:
- Bylo to spuštěno na více CPU nebo GPU a dokonce i na mobilním operačním systému
- Přenositelnost grafu umožňuje uchovat výpočty pro okamžité nebo pozdější použití. Graf lze uložit a provést v budoucnu.
- Všechny výpočty v grafu se provádějí spojením tenzorů dohromady
- Tenzor má uzel a hranu. Uzel nese matematickou operaci a produkuje výstupy koncových bodů. Okraje hrany vysvětlují vztahy vstupu / výstupu mezi uzly.
Proč je TensorFlow populární?
TensorFlow je nejlepší knihovna ze všech, protože je postavena tak, aby byla přístupná pro všechny. Knihovna Tensorflow obsahuje různá rozhraní API, která jsou postavena na architektuře hlubokého učení, jako je CNN nebo RNN. TensorFlow je založen na výpočtu grafu; umožňuje vývojáři vizualizovat konstrukci neuronové sítě pomocí Tensorboad. Tento nástroj je užitečný k ladění programu. Nakonec je Tensorflow postaven tak, aby jej bylo možné nasadit ve velkém. Běží na CPU a GPU.
Tensorflow přitahuje největší popularitu na GitHubu ve srovnání s jiným rámcem hlubokého učení.
Seznam prominentních algoritmů podporovaných TensorFlow
Níže je seznam podporovaných algoritmů TensorFlow:
V současné době má TensorFlow 1.10 integrované API pro:
- Lineární regrese: tf.estimator.LinearRegressor
- Klasifikace: tf.estimator.LinearClassifier
- Klasifikace hlubokého učení: tf.estimator.DNNClassifier
- Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
- Regrese posilovacího stromu: tf.estimator.BoostedTreesRegressor
- Posílená klasifikace stromů: tf.estimator.BoostedTreesClassifier
Jednoduchý příklad TensorFlow
import numpy as npimport tensorflow as tf
V prvních dvou řádcích kódu jsme importovali tensorflow jako tf. U Pythonu je běžnou praxí používat zkrácený název pro knihovnu. Výhodou je vyhnout se zadávání celého názvu knihovny, když ji potřebujeme použít. Například můžeme importovat tensorflow jako tf a volat tf, když chceme použít funkci tensorflow
Procvičme si základní pracovní postup Tensorflow na jednoduchých příkladech TensorFlow. Vytvořme výpočetní graf, který vynásobí dvě čísla dohromady.
Během příkladu budeme násobit X_1 a X_2 společně. Tensorflow vytvoří uzel pro připojení operace. V našem příkladu se to nazývá násobení. Když je určen graf, výpočetní enginy Tensorflow násobí X_1 a X_2.
Příklad TensorFlow
Nakonec spustíme relaci TensorFlow, která spustí výpočetní graf s hodnotami X_1 a X_2 a vytiskne výsledek násobení.
Pojďme definovat vstupní uzly X_1 a X_2. Když vytváříme uzel v Tensorflow, musíme si vybrat, jaký druh uzlu vytvořit. Uzly X1 a X2 budou zástupným uzlem. Zástupný symbol přiřadí novou hodnotu pokaždé, když provedeme výpočet. Vytvoříme je jako zástupný uzel TF dot.
Krok 1: Definujte proměnnou
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Když vytvoříme zástupný uzel, musíme předat datový typ, který zde bude přidávat čísla, abychom mohli použít datový typ s plovoucí desetinnou čárkou, pojďme použít tf.float32. Tento uzel musíme také pojmenovat. Tento název se zobrazí, když se podíváme na grafické vizualizace našeho modelu. Pojďme pojmenovat tento uzel X_1 předáním parametru s názvem name s hodnotou X_1 a nyní pojďme definovat X_2 stejným způsobem. X_2.
Krok 2: Definujte výpočet
multiply = tf.multiply(X_1, X_2, name = "multiply")
Nyní můžeme definovat uzel, který provádí operaci násobení. V Tensorflow to dokážeme vytvořením uzlu tf.multiply.
Předáme uzly X_1 a X_2 do uzlu násobení. Říká tensorflow, aby spojil tyto uzly ve výpočetním grafu, takže ho žádáme, aby vytáhl hodnoty z xay a vynásobil výsledek. Pojďme také dát uzlu násobení název znásobit. Je to celá definice našeho jednoduchého výpočetního grafu.
Krok 3: Proveďte operaci
Abychom mohli provádět operace v grafu, musíme vytvořit relaci. V Tensorflow to provádí tf.Session (). Nyní, když máme relaci, můžeme ji požádat o spuštění operací na našem výpočetním grafu voláním relace. Chcete-li spustit výpočet, musíme použít run.
Když operace přidání proběhne, uvidí, že potřebuje zachytit hodnoty uzlů X_1 a X_2, takže musíme také zadat hodnoty pro X_1 a X_2. Můžeme to udělat zadáním parametru s názvem feed_dict. Předáme hodnotu 1,2,3 pro X_1 a 4,5,6 pro X_2.
Výsledky vytiskneme pomocí tisku (výsledek). Měli bychom vidět 4, 10 a 18 pro 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čtení dat do TensorFlow
Prvním krokem před trénováním algoritmu strojového učení je načtení dat. Data lze načíst dvěma způsoby:
1. Načtěte data do paměti: Je to nejjednodušší metoda. Načtete všechna svá data do paměti jako jediné pole. Můžete napsat kód v Pythonu. Tyto řádky kódu nesouvisejí s Tensorflow.
2. Datový kanál Tensorflow. Tensorflow má integrované API, které vám pomůže načíst data, provést operaci a snadno poslat algoritmus strojového učení. Tato metoda funguje velmi dobře, zvláště když máte velkou datovou sadu. Například je známo, že obrazové záznamy jsou obrovské a nezapadají do paměti. Datový kanál spravuje paměť sám
Jaké řešení použít?
Načíst data do paměti
Pokud vaše datová sada není příliš velká, tj. Menší než 10 gigabajtů, můžete použít první metodu. Data se vejdou do paměti. K importu souborů CSV můžete použít slavnou knihovnu zvanou Pandas. Více se o pandách dozvíte v dalším kurzu.
Načtěte data pomocí kanálu Tensorflow
Druhá metoda funguje nejlépe, pokud máte velkou datovou sadu. Například pokud máte datovou sadu 50 gigabajtů a váš počítač má pouze 16 gigabajtů paměti, počítač se zhroutí.
V této situaci musíte vybudovat potrubí Tensorflow. Potrubí načte data v dávce nebo v malém bloku. Každá dávka bude poslána do potrubí a bude připravena na školení. Budování kanálu je vynikajícím řešením, protože vám umožňuje používat paralelní výpočty. To znamená, že Tensorflow bude trénovat model napříč více CPU. Podporuje výpočet a povolení pro výcvik silné neuronové sítě.
V příštích cvičeních uvidíte, jak vytvořit významný kanál pro napájení vaší neuronové sítě.
Stručně řečeno, pokud máte malou datovou sadu, můžete načíst data do paměti pomocí knihovny Pandas.
Pokud máte velkou datovou sadu a chcete využít více procesorů, bude vám pohodlnější pracovat s potrubím Tensorflow.
Vytvořte potrubí Tensorflow
V předchozím příkladu ručně přidáme tři hodnoty pro X_1 a X_2. Nyní uvidíme, jak načíst data do Tensorflow.
Krok 1) Vytvořte data
Nejprve použijeme knihovnu numpy ke generování dvou náhodných hodnot.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0,8835775 0,23766977]]
Krok 2) Vytvořte zástupný symbol
Stejně jako v předchozím příkladu vytvoříme zástupný symbol s názvem X. Musíme explicitně určit tvar tenzoru. V případě, že načteme pole pouze se dvěma hodnotami. Tvar můžeme zapsat jako tvar = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Krok 3) Definujte metodu datové sady
dále musíme definovat datovou sadu, kde můžeme naplnit hodnotu zástupného symbolu x. Musíme použít metodu tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Krok 4) Vytvořte kanál
V kroku čtyři musíme inicializovat kanál, kam budou data proudit. Musíme vytvořit iterátor s make_initializable_iterator. Pojmenujeme to iterátor. Pak musíme zavolat tento iterátor, abychom nakrmili další dávku dat, get_next. Pojmenujeme tento krok get_next. Všimněte si, že v našem příkladu existuje pouze jedna dávka dat pouze se dvěma hodnotami.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Krok 5) Proveďte operaci
Poslední krok je podobný předchozímu příkladu. Zahájíme relaci a spustíme iterátor operací. Feed_dict krmíme hodnotou generovanou numpy. Tyto dvě hodnoty naplní zástupný symbol x. Potom spustíme get_next, abychom vytiskli výsledek.
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]
souhrn
Význam TensorFlow: TensorFlow je nejslavnější knihovna hlubokého učení posledních let. Odborník využívající TensorFlow dokáže vytvořit libovolnou strukturu hlubokého učení, jako je CNN, RNN nebo jednoduchá umělá neurální síť.
TensorFlow je většinou používán akademickými pracovníky, startupy a velkými společnostmi. Google používá TensorFlow téměř ve všech denních produktech Google, včetně Gmailu, Fotek a vyhledávače Google.
Tým Google Brain vyvinul TensorFlow, aby vyplnil mezeru mezi výzkumníky a vývojáři produktů. V roce 2015 zveřejnili TensorFlow; rychle roste v popularitě. V dnešní době je TensorFlow knihovna hlubokého učení s největším počtem úložišť na GitHubu.
Odborníci používají Tensorflow, protože je snadné jej nasadit ve velkém. Je postaven pro práci v cloudu nebo na mobilních zařízeních, jako jsou iOs a Android.
Tensorflow pracuje v relaci. Každá relace je definována grafem s různými výpočty. Jednoduchým příkladem může být násobení číslem. V Tensorflow jsou vyžadovány tři kroky:
- Definujte proměnnou
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")
- Proveďte operaci
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Běžnou praxí v Tensorflow je vytvoření kanálu pro načtení dat. Pokud budete postupovat podle těchto pěti kroků, budete moci načíst data do TensorFLow
- Vytvořte data
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Vytvořte zástupný symbol
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definujte metodu datové sady
dataset = tf.data.Dataset.from_tensor_slices(x)
- Vytvořte kanál
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Proveďte program
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))