TensorFlow Tutorial - Hlboké učenie pomocou TensorFlow



Výukový program TensorFlow je tretím blogom v rade. Zahŕňa všetky základné informácie o TensorFlow. Hovorí tiež o tom, ako vytvoriť jednoduchý lineárny model.

Tento tutoriál TensorFlow som navrhol pre profesionálov a nadšencov, ktorí majú záujem o použitie algoritmu hlbokého učenia pomocou TensorFlow na riešenie rôznych problémov. TensorFlow je open source knižnica pre hlboké vzdelávanie, ktorá je založená na koncepcii grafov toku údajov pre vytváranie modelov. Umožňuje vám vytvárať rozsiahle neurónové siete s mnohými vrstvami.Osvojenie si používania tejto knižnice je tiež základnou súčasťou .Nasledujú témy, o ktorých sa bude diskutovať v tomto výučbovom blogu TensorFlow:

  • Čo je TensorFlow
  • Základy kódu TensorFlow
  • TensorFlow UseCase

Čo sú to tenzory?

V tomto výučbe TensorFlow, predtým, ako hovoríme o TensorFlow, najskôr pochopíme čo sú tenzory . Tenzory nie sú ničím iným ako de facto reprezentáciou údajov v rámci hlbokého učenia.





Tenzory - Výukový program TensorFlow - EdurekaAko je znázornené na obrázku vyššie, tenzory sú iba viacrozmerné polia, ktoré vám umožňujú reprezentovať údaje s vyššími rozmermi. Deep Learning sa vo všeobecnosti zaoberáte vysoko dimenzionálnymi sadami údajov, kde dimenzie odkazujú na rôzne funkcie prítomné v sade údajov. Názov „TensorFlow“ bol v skutočnosti odvodený od operácií, ktoré neurónové siete vykonávajú na tenzoroch. Je to doslova tok tenzorov. Pretože ste pochopili, čo sú tenzory, poďme v tomto tutoriále TensorFlow pokročiť ďalej a pochopiť - čo je TensorFlow?

Čo je TensorFlow?

TensorFlow je knižnica založená na Pythone, ktorá poskytuje rôzne typy funkcií na implementáciu modelov Deep Learning. Ako už bolo spomenuté, termín TensorFlow sa skladá z dvoch výrazov - Tensor & Flow:



V TensorFlow termín tensor označuje reprezentáciu údajov ako viacrozmerné pole, zatiaľ čo termín flow označuje sériu operácií, ktoré človek vykonáva na tenzoroch, ako je to znázornené na obrázku vyššie.

Teraz sme pokryli dostatok pozadia o TensorFlow.



Ďalej v tomto výučbe TensorFlow budeme diskutovať o základných kódoch TensorFlow.

Výukový program TensorFlow: Základné informácie o kóde

Celkový proces písania programu TensorFlow v zásade zahŕňa dva kroky:

  1. Zostavenie výpočtového grafu
  2. Spustenie výpočtového grafu

Vysvetlím vám vyššie uvedené dva kroky jeden po druhom:

1. Zostavenie výpočtového grafu

Takže čo je výpočtový graf? Výpočtový graf je séria operácií TensorFlow usporiadaných ako uzly v grafe. Každý uzol berie ako vstup 0 alebo viac tenzorov a produkuje tenzor ako výstup. Uvediem príklad jednoduchého výpočtového grafu, ktorý sa skladá z troch uzlov - do , b & c ako je ukázané nižšie:

Vysvetlenie vyššie uvedeného výpočtového grafu:

  • Konštantné uzlysa používajú na ukladanie konštantných hodnôt, pretože vyžaduje nulový vstup, ale uložené hodnoty vytvára ako výstup. Vo vyššie uvedenom príklade sú a a b konštantné uzly s hodnotami 5, respektíve 6.

  • Uzol c predstavuje operáciu násobenia konštantného uzla a s b. Preto vykonanie uzla c povedie k znásobeniu konštantného uzla a & b.

V zásade je možné uvažovať o výpočtovom grafe ako o alternatívnom spôsobe konceptualizácie matematických výpočtov, ktorý sa uskutočňuje v programe TensorFlow. Operácie priradené rôznym uzlom výpočtového grafu je možné vykonávať paralelne, čím sa zabezpečí lepší výkon z hľadiska výpočtov.

Tu iba popisujeme výpočet, nič nevypočítava, neobsahuje žiadne hodnoty, iba definuje operácie uvedené vo vašom kóde.

2. Spustenie výpočtového grafu

Zoberme si predchádzajúci príklad výpočtového grafu a pochopme, ako ho vykonať. Nasleduje kód z predchádzajúceho príkladu:

výukový program pre Android pre začiatočníkov

Príklad 1:

importujte tensorflow ako tf # Vytvorte graf a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Teraz, aby sme získali výstup z uzla c, musíme spustiť výpočtový graf v rámci a zasadanie . Relácia umiestňuje operácie grafu na zariadenia, ako sú CPU alebo GPU, a poskytuje metódy na ich vykonávanie.

Relácia zapuzdruje riadenie a stav modulu runtime TensorFlow, t. J. Ukladá informácie o poradí, v akom sa budú vykonávať všetky operácie, a odovzdá výsledok už vypočítanej operácie ďalšej operácii v potrubí. Ukážem vám, ako spustiť vyššie uvedený výpočtový graf v rámci relácie (vysvetlenie každého riadku kódu bolo pridané ako komentár):

# Vytvorte objekt relácie sess = tf.Session () # Spustite graf v rámci relácie a uložte výstup do premennej output_c = sess.run (c) # Vytlačte výstup uzla c print (output_c) # Uzavrite reláciu uvoľniť nejaké zdroje sess.close ()
 Výkon: 30

Takže toto bolo všetko o relácii a spustení výpočtového grafu v nej. Teraz si povieme niečo o premenných a zástupných znakoch, ktoré budeme intenzívne používať pri vytváraní modelu hlbokého učenia pomocou TensorFlow.

Konštanty, zástupné symboly a premenné

V TensorFlow sa konštanty, zástupné symboly a premenné používajú na reprezentáciu rôznych parametrov modelu hlbokého učenia. Pretože som už o konštantách hovoril skôr, začnem zástupnými symbolmi.

Zástupný symbol:

Konštanta TensorFlow vám umožňuje uložiť hodnotu, ale čo ak chcete, aby vaše uzly prijímali vstupy za behu? Pre tento druh funkcií sa používajú zástupné symboly, ktoré umožňujú vášmu grafu brať ako parametre externé vstupy. Zástupný symbol je v zásade prísľub poskytnutia hodnoty neskôr alebo počas behu programu. Poviem vám príklad, ako to zjednodušiť:

import tensorflow ako tf # Vytváranie zástupných symbolov a = tf. zástupný symbol (tf.float32) b = tf. placeholder (tf.float32) # Priradenie operácie násobenia w.r.t. a & ampamp b na uzol mul mul = a * b # Vytvorenie objektu relácie sess = tf.Session () # Vykonanie mul odovzdaním hodnôt [1, 3] [2, 4] pre a a b výstup = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Multiplying ab:', output)
 Výkon: [2. 12.]

Body, na ktoré treba pamätať zástupné symboly:

  • Zástupné symboly nie sú inicializované a neobsahujú žiadne údaje.
  • Jeden musí poskytnúť vstupy alebo informačné kanály zástupcovi, ktoré sa berú do úvahy počas behu programu.
  • Vykonanie zástupného symbolu bez vstupu generuje chybu.

Poďme teraz ďalej a pochopme - čo sú to premenné?

Premenné

Pri hlbokom učení sa zástupné symboly používajú na vykonávanie ľubovoľných vstupov do vášho modelu alebo grafu. Okrem prijímania vstupov musíte tiež upraviť graf tak, aby produkoval nové výstupy w.r.t. rovnaké vstupy. Na to budete používať premenné. Stručne povedané, premenná umožňuje pridať do grafu také parametre alebo uzol, ktoré sú trénovateľné, t. J. Hodnotu je možné v priebehu času upravovať. Premenné sú definované poskytnutím ich počiatočnej hodnoty a typu, ako je uvedené nižšie:

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

Poznámka:

  • Ak ste dátový typ neposkytli výslovne, TensorFlow odvodí typ konštanty / premennej z inicializovanej hodnoty.
  • TensorFlow má veľa svojich vlastných dátových typov, ako je tf.float32 , tf.int32 atď. Na všetky sa môžete odvolať tu .

Konštanty sa inicializujú, keď zavoláte tf. konštantný a ich hodnota sa nikdy nemôže zmeniť. Naopak, premenné sa pri volaní neinicializujú tf. Premenná . Ak chcete inicializovať všetky premenné v programe TensorFlow, musíte musieť výslovne zavolajte špeciálnu operáciu, ako je uvedené nižšie:

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

Pamätajte vždy na to, že premenná musí byť inicializovaná pred prvým použitím grafu.

Poznámka: Premenné TensorFlow sú medzipamäťové medzipamäte, ktoré obsahujú tenzory, ale na rozdiel od bežných tenzorov, ktoré sa inštancujú iba pri spustení grafu a potom sa okamžite odstránia, premenné prežijú pri viacerých vykonaní grafu.

Teraz, keď sme už pokryli dostatok základov TensorFlow, poďme ďalej a pochopme, ako implementovať model lineárnej regresie pomocou TensorFlow.

Model lineárnej regresie pomocou TensorFlow

Model lineárnej regresie sa používa na predpovedanie neznámej hodnoty premennej (závislá premenná) zo známej hodnoty iných premenných (nezávislá premenná) pomocou lineárnej regresnej rovnice, ako je uvedené nižšie:

Preto pre vytvorenie lineárneho modelu potrebujete:

  1. Závislá alebo výstupná premenná (Y)
  2. Variabilita sklonu (w)
  3. Y - Intercept alebo Bias (b)
  4. Nezávislá alebo vstupná premenná (X)

Začnime teda s tvorbou lineárneho modelu pomocou TensorFlow:

Skopírujte kód kliknutím na tlačidlo uvedené nižšie:

# Vytvorenie premennej pre sklon parametra (W) s počiatočnou hodnotou 0,4 W = tf.Variable ([. 4], tf.float32) # Vytvorenie premennej pre predpätie parametra (b) s počiatočnou hodnotou ako -0,4 b = tf.Variable ( [-0.4], tf.float32) # Vytváranie zástupných symbolov pre poskytnutie vstupu alebo nezávislej premennej, označené xx = tf.placeholder (tf.float32) # Rovnica lineárnej regresie linear_model = W * x + b # Inicializácia všetkých premenných sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Spustenie regresného modelu na výpočet výstupu wrt na poskytnutie x hodnôt print (sess.run (linear_model {x: [1, 2, 3, 4]}))

Výkon:

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

Vyššie uvedený kód predstavuje iba základnú myšlienku implementácie regresného modelu, t. J. Ako postupujete podľa rovnice regresnej priamky tak, aby ste získali výstup w.r.t. súbor vstupných hodnôt. V tomto modeli však ešte treba pridať dve ďalšie veci, aby sa stal úplným regresným modelom:

  • Najprv musíme poskytnúť mechanizmus, pomocou ktorého sa náš model dokáže automaticky trénovať na základe danej množiny vstupov a príslušných výstupov.
  • Druhá vec, ktorú potrebujeme, je overiť náš trénovaný model porovnaním jeho výstupu s požadovaným alebo cieľovým výstupom na základe danej množiny hodnôt x.

Teraz pochopme, ako môžem začleniť vyššie uvedené funkcionality do svojho kódu pre regresný model.

MVC architektúra v Jave so schémou

Funkcia straty - validácia modelu

Stratová funkcia meria, ako ďaleko je súčasný výstup modelu od výstupného výkonu požadovaného alebo cieľového výstupu. Pre svoj lineárny regresný model, ktorý sa volá Sum of Squared Error alebo SSE, použijem najčastejšie používanú stratovú funkciu. SSE vypočítané w.r.t. výstup modelu (reprezentovaný parametrom linear_model) a požadovaný alebo cieľový výstup (y) ako:

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ýkon: 90,24

Ako vidíte, dostávame vysokú stratovú hodnotu. Preto musíme upraviť svoje váhy (W) a predpätie (b) tak, aby sme znížili chybu, ktorú dostávame.

tf.train API - Školenie modelu

TensorFlow poskytuje optimalizátory ktoré pomaly menia každú premennú, aby sa minimalizovala stratová funkcia alebo chyba. Najjednoduchší optimalizátor je gradientný zostup . Modifikuje každú premennú podľa rozsahu derivácie straty vzhľadom na túto premennú.

#Vytvorenie inštancie gradientového zostupu optimalizátor optimizer = tf.train.GradientDescentOptimizer (0.01) vlak = optimizer.minimize (strata) pre i v rozsahu (1000): sess.run (vlak, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) tlač (sess.run ([W, b]))
 Výkon: [pole ([1.99999964], dtype = float32), pole ([9.86305167e-07], dtype = float32)]

Takto teda pomocou TensorFlow vytvoríte lineárny model a trénujete ho, aby ste dosiahli požadovaný výstup.

Teraz, keď viete o Deep Learning, pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Kurz Edureka Deep Learning with TensorFlow Certification Training pomáha učiacim sa stať sa odborníkmi na výcvik a optimalizáciu základných a konvolučných neurónových sietí pomocou projektov a úloh v reálnom čase spolu s konceptmi ako SoftMax, Auto-encoder Neural Networks, Restricted Boltzmann Machine (RBM).

Máte na nás otázku? Uveďte to prosím v sekcii komentárov a my sa vám ozveme.