Výukový program TensorFlow - hluboké učení pomocí TensorFlow



Výukový program TensorFlow je třetí blog v řadě. Zahrnuje všechny základy TensorFlow. Mluví také o tom, jak vytvořit jednoduchý lineární model.

Tento tutoriál TensorFlow jsem navrhl pro profesionály a nadšence, kteří se zajímají o použití algoritmu Deep Learning Algorithm pomocí TensorFlow k řešení různých problémů. TensorFlow je open source knihovna pro hluboké učení, která je založena na konceptu grafů toku dat pro vytváření modelů. Umožňuje vám vytvářet rozsáhlé neuronové sítě s mnoha vrstvami.Učení se používání této knihovny je také základní součástí .Následuje témata, která budou popsána v tomto výukovém blogu TensorFlow:

  • Co je TensorFlow
  • Základy kódu TensorFlow
  • Pouzdro TensorFlow UseCase

Co jsou tenzory?

V tomto tutoriálu TensorFlow, než budeme hovořit o TensorFlow, nejprve pochopíme co jsou tenzory . Tenzory nejsou nic jiného než de facto pro reprezentaci dat v hlubokém učení.





Tensors - TensorFlow Tutorial - EdurekaJak je znázorněno na obrázku výše, tenzory jsou pouze vícerozměrná pole, která umožňují reprezentovat data s vyššími rozměry. Obecně se Deep Learning zabýváte vysoce dimenzionálními datovými sadami, kde dimenze odkazují na různé funkce přítomné v datové sadě. Název „TensorFlow“ byl ve skutečnosti odvozen od operací, které neuronové sítě provádějí na tenzorech. Je to doslova tok tenzorů. Protože jste pochopili, co jsou tenzory, pojďme v tomto tutoriálu TensorFlow pokročit a pochopit - co je TensorFlow?

Co je TensorFlow?

TensorFlow je knihovna založená na Pythonu, která poskytuje různé typy funkcí pro implementaci modelů Deep Learning. Jak již bylo zmíněno dříve, termín TensorFlow se skládá ze dvou termínů - Tensor & Flow:



V TensorFlow termín tenzor označuje reprezentaci dat jako vícerozměrné pole, zatímco termín tok označuje sérii operací, které člověk provádí na tenzorech, jak je znázorněno na obrázku výše.

Nyní jsme pokryli dostatek pozadí o TensorFlow.



Dále v tomto tutoriálu TensorFlow budeme diskutovat o základech kódu TensorFlow.

Výukový program TensorFlow: Základy kódu

Celkový proces psaní programu TensorFlow v zásadě zahrnuje dva kroky:

  1. Sestavení výpočetního grafu
  2. Spuštění výpočetního grafu

Vysvětlím vám výše uvedené dva kroky jeden po druhém:

1. Sestavení výpočetního grafu

Tak, co je to výpočetní graf? Výpočtový graf je řada operací TensorFlow uspořádaných jako uzly v grafu. Každý uzel vezme 0 nebo více tenzorů jako vstup a produkuje tenzor jako výstup. Dovolte mi uvést příklad jednoduchého výpočetního grafu, který se skládá ze tří uzlů - na , b & C Jak je ukázáno níže:

Vysvětlení výše uvedeného výpočetního grafu:

  • Konstantní uzlyslouží k ukládání konstantních hodnot, protože vyžaduje nulový vstup, ale produkuje uložené hodnoty jako výstup. Ve výše uvedeném příkladu jsou a a b konstantní uzly s hodnotami 5 a 6.

  • Uzel c představuje operaci násobení konstantního uzlu a s b. Proto provedení uzlu c povede k znásobení konstantní uzel a & b.

V zásadě lze výpočetní graf považovat za alternativní způsob konceptualizace matematických výpočtů, který probíhá v programu TensorFlow. Operace přiřazené různým uzlům výpočetního grafu lze provádět paralelně, což poskytuje lepší výkon, pokud jde o výpočty.

Zde pouze popisujeme výpočet, nic nevypočítává, neobsahuje žádné hodnoty, pouze definuje operace uvedené ve vašem kódu.

2. Spuštění výpočtového grafu

Vezměme si předchozí příklad výpočetního grafu a pochopíme, jak jej provést. Následuje kód z předchozího příkladu:

co znamená dodatek v Javě

Příklad 1:

import tensorflow jako tf # Sestavte graf a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Nyní, abychom získali výstup z uzlu c, musíme spustit výpočetní graf v rámci a zasedání . Relace umisťuje operace grafu na Zařízení, jako jsou CPU nebo GPU, a poskytuje metody k jejich provedení.

Relace zapouzdřuje řízení a stav běhového modulu TensorFlow, tj. Ukládá informace o pořadí, ve kterém budou prováděny všechny operace, a předává výsledek již vypočítané operace další operaci v kanálu. Ukážu vám, jak spustit výše uvedený výpočetní graf v rámci relace (vysvětlení každého řádku kódu bylo přidáno jako komentář):

# Vytvořte objekt relace sess = tf.Session () # Spusťte graf v relaci a uložte výstup do proměnné output_c = sess.run (c) # Tiskněte výstup uzlu c print (output_c) # Uzavřete relaci uvolnit některé zdroje sess.close ()
 Výstup: 30

Takže to bylo všechno o relaci a spuštění výpočetního grafu v ní. Nyní si promluvme o proměnných a zástupných symbolech, které budeme intenzivně používat při vytváření modelu hlubokého učení pomocí TensorFlow.

Konstanty, zástupný symbol a proměnné

V TensorFlow se konstanty, zástupné symboly a proměnné používají k reprezentaci různých parametrů modelu hlubokého učení. Protože jsem již o konstantách hovořil dříve, začnu zástupnými symboly.

Zástupný symbol:

Konstanta TensorFlow vám umožňuje uložit hodnotu, ale co když chcete, aby vaše uzly přijímaly vstupy za běhu? Pro tento druh funkcí se používají zástupné symboly, které umožňují vašemu grafu brát jako parametry externí vstupy. Zástupný symbol je v zásadě příslib poskytnout hodnotu později nebo za běhu. Dovolte mi uvést příklad, jak věci zjednodušit:

import tensorflow jako tf # Vytváření zástupných symbolů a = tf. zástupný symbol (tf.float32) b = tf. placeholder (tf.float32) # Přiřazení operace násobení w.r.t. a & ampamp b to node mul mul = a * b # Vytvořit objekt relace sess = tf.Session () # Provedení mul předáním hodnot [1, 3] [2, 4] pro a a b výstup = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Multiplying ab:', output)
 Výstup: [2. 12.]

Body k zapamatování zástupné symboly:

  • Zástupné symboly nejsou inicializovány a neobsahují žádná data.
  • Jeden musí poskytnout zástupné symboly vstupy nebo kanály, které se berou v úvahu za běhu.
  • Provedení zástupného symbolu bez vstupu generuje chybu.

Nyní pojďme kupředu a pochopme - co jsou proměnné?

Proměnné

V hlubokém učení se zástupné symboly používají k přijímání libovolných vstupů do vašeho modelu nebo grafu. Kromě převzetí vstupu musíte také upravit graf tak, aby mohl produkovat nové výstupy w.r.t. stejné vstupy. K tomu budete používat proměnné. Stručně řečeno, proměnná vám umožňuje přidat do grafu takové parametry nebo uzly, které jsou trénovatelné, tj. Hodnotu lze po určitou dobu upravit. Proměnné jsou definovány poskytnutím jejich počáteční hodnoty a typu, jak je uvedeno níže:

var = tf.Variable ([0,4], dtype = tf.float32)

Poznámka:

  • V případě, že jste neposkytli datový typ explicitně, TensorFlow odvodí typ konstanty / proměnné z inicializované hodnoty.
  • TensorFlow má mnoho svých vlastních datových typů, jako je tf.float32 , tf.int32 atd. Na všechny se můžete odvolat tady .

Konstanty se inicializují, když zavoláte konstantní a jejich hodnota se nikdy nemůže změnit. Naopak, proměnné se při volání neinicializují tf. Proměnná . Chcete-li inicializovat všechny proměnné v programu TensorFlow, musíte musí výslovně zavolejte speciální operaci, jak je znázorněno níže:

init = tf.global_variables_initializer () sess.run (init)

Před prvním použitím grafu je nutné vždy inicializovat proměnnou.

Poznámka: Proměnné TensorFlow jsou vyrovnávací paměti v paměti, které obsahují tenzory, ale na rozdíl od běžných tenzorů, které jsou vytvořeny pouze v okamžiku, kdy je spuštěn graf, a jsou následně okamžitě odstraněny, proměnné přežijí více spuštění grafu.

Nyní, když jsme pokryli dostatek základů TensorFlow, pojďme pokračovat a pochopit, jak implementovat model lineární regrese pomocí TensorFlow.

Model lineární regrese pomocí TensorFlow

Model lineární regrese se používá k predikci neznámé hodnoty proměnné (závislá proměnná) ze známé hodnoty jiných proměnných (nezávislá proměnná) pomocí lineární regresní rovnice, jak je znázorněno níže:

Proto pro vytvoření lineárního modelu potřebujete:

  1. Závislá nebo výstupní proměnná (Y)
  2. Variabilita sklonu (w)
  3. Y - Intercept nebo Bias (b)
  4. Nezávislá nebo vstupní proměnná (X)

Začněme tedy s tvorbou lineárního modelu pomocí TensorFlow:

Zkopírujte kód kliknutím na tlačítko uvedené níže:

# Vytvoření proměnné pro sklon parametru (W) s počáteční hodnotou 0,4 W = tf.Variable ([. 4], tf.float32) # Vytvoření proměnné pro zkreslení parametru (b) s počáteční hodnotou jako -0,4 b = tf.Variable ( [-0.4], tf.float32) # Vytvoření zástupných symbolů pro poskytnutí vstupu nebo nezávislé proměnné, označené xx = tf.placeholder (tf.float32) # Rovnice lineární regrese linear_model = W * x + b # Inicializace všech proměnných sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Spuštění regresního modelu pro výpočet výstupu wrt k zadání x hodnot tisku (sess.run (linear_model {x: [1, 2, 3, 4]}))

Výstup:

[0. 0,40000001 0,80000007 1,20000005]

Výše uvedený kód představuje pouze základní myšlenku implementace regresního modelu, tj. Jak postupujete podle rovnice regresní linie tak, abyste získali výstup w.r.t. sada vstupních hodnot. V tomto modelu však zbývají dvě další věci, které z něj mají udělat úplný regresní model:

  • Nejprve musíme poskytnout mechanismus, pomocí kterého se náš model může automaticky cvičit na základě dané sady vstupů a příslušných výstupů.
  • Druhá věc, kterou potřebujeme, je ověřit náš trénovaný model porovnáním jeho výstupu s požadovaným nebo cílovým výstupem na základě dané sady hodnot x.

Nyní pochopme, jak mohu začlenit výše uvedené funkce do svého kódu pro regresní model.

MVC architektura v Javě s diagramem

Funkce ztráty - ověření modelu

Funkce ztráty měří, jak daleko je aktuální výstup modelu od výstupu požadovaného nebo cílového výstupu. Pro svůj lineární regresní model, který se nazývá Sum of Squared Error nebo SSE, použiji nejčastěji používanou funkci ztráty. SSE vypočteno w.r.t. modelový výstup (reprezentovaný lineárním_modelem) a požadovaný nebo cílový výstup (y) jako:

y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4) ], y: [2, 4, 6, 8]})
 Výstup: 90,24

Jak vidíte, získáváme vysokou ztrátu. Proto musíme upravit naše váhy (W) a zkreslení (b) tak, aby se snížila chyba, kterou dostáváme.

tf.train API - Školení modelu

TensorFlow poskytuje optimalizátory které pomalu mění každou proměnnou, aby se minimalizovala ztrátová funkce nebo chyba. Nejjednodušší optimalizátor je klesání . Upravuje každou proměnnou podle velikosti derivátu ztráty vzhledem k této proměnné.

#Creating an instance of gradient descent optimizer optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss) for i in range (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) tisk (sess.run ([W, b]))
 Výstup: [pole ([1.99999964], dtype = float32), pole ([9.86305167e-07], dtype = float32)]

Takto vytvoříte lineární model pomocí TensorFlow a trénujete ho, abyste získali požadovaný výstup.

Nyní, když víte o Deep Learning, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě. Kurz Edureka Deep Learning with TensorFlow Certification Training pomáhá studentům stát se odborníky v oblasti školení a optimalizace základních a konvolučních neuronových sítí pomocí projektů a úkolů v reálném čase spolu s koncepty, jako je funkce SoftMax, automatické kódování neuronových sítí, omezený Boltzmann Machine (RBM).

Máte na nás dotaz? Uveďte to prosím v sekci komentáře a my se vám ozveme.