Mi az a TensorFlow? Hogyan működik? Bevezetés és Architectúra

Kezdjük ezt az oktatóanyagot a TensorFlow bevezetésével:

Mi az a TensorFlow?

TensorFlow egy nyílt forráskódú, teljes körű platform gépi tanulási alkalmazások létrehozására. Ez egy szimbolikus matematikai könyvtár, amely adatfolyamot és differenciálható programozást használ a mély neurális hálózatok betanítására és következtetéseire összpontosító különféle feladatok végrehajtására. Lehetővé teszi a fejlesztők számára, hogy gépi tanulási alkalmazásokat hozzanak létre különféle eszközök, könyvtárak és közösségi erőforrások segítségével.

Jelenleg a világ leghíresebb mélytanulási könyvtára a Google TensorFlow. A Google terméke minden termékében gépi tanulást használ a keresőmotor, a fordítás, a képaláírások vagy az ajánlások javítására.

TensorFlow példa

Konkrét példaként a Google-felhasználók gyorsabb és kifinomultabb keresési élményt tapasztalhatnak meg az AI segítségével. Ha a felhasználó beír egy kulcsszót a keresősávba, a Google javaslatot tesz arra vonatkozóan, hogy mi lehet a következő szó.

TensorFlow példa
TensorFlow példa

A Google a gépi tanulást szeretné használni, hogy kihasználja hatalmas adatkészleteit, hogy a felhasználók számára a legjobb élményt nyújthassa. Három különböző csoport használja a gépi tanulást:

  • Kutatók
  • Adattudósok
  • programozók

Mindannyian ugyanazt az eszközkészletet használhatják az együttműködéshez és hatékonyságuk javításához.

A Google nem csak bármilyen adattal rendelkezik; náluk van a világ legmasszívabb számítógépe, így a Tensor Flow méretarányosan készült. A TensorFlow egy könyvtár, amelyet a Google Brain Team fejlesztett ki a gépi tanulás és a mély neurális hálózatok kutatásának felgyorsítására.

Úgy tervezték, hogy több CPU-n vagy GPU-n, sőt mobil operációs rendszeren is futhasson, és számos burkolója van több nyelven, mint pl. Python, C++ or Java.

A TensorFlow története

Néhány évvel ezelőtt a mély tanulás kezdett felülmúlni az összes többi gépi tanulási algoritmust, amikor hatalmas mennyiségű adatot adnak át. A Google látta, hogy ezeket a mély neurális hálózatokat használhatja szolgáltatásai fejlesztésére:

  • Gmail
  • Fénykép
  • Google keresőmotor

Felépítenek egy keretrendszert, az úgynevezett tenzor áramlás hogy a kutatók és a fejlesztők együtt dolgozhassanak egy mesterséges intelligencia modellen. Miután kifejlesztették és méretezték, sok ember számára lehetővé teszi a használatát.

Először 2015 végén hozták nyilvánosságra, míg az első stabil verzió 2017-ben jelent meg. Nyílt forráskódú, Apache nyílt forráskódú licenc alatt. Használhatja, módosíthatja és újraterjesztheti a módosított verziót díj ellenében anélkül, hogy bármit is fizetne a Google-nak.

A következő TensorFlow Deep tanulási útmutatóban a TensorFlow architektúráról és a TensorFlow működéséről fogunk tanulni.

Hogyan működik a TensorFlow

A TensorFlow lehetővé teszi adatfolyam-gráfok és struktúrák felépítését az adatok grafikonon való áthaladásának meghatározásához, a bemeneteket Tensor nevű többdimenziós tömbként veszi fel. Lehetővé teszi az ezeken a bemeneteken végrehajtható műveletek folyamatábrájának felépítését, amely az egyik végén, a másik végén pedig kimenetként érkezik.

TensorFlow Architectúra

A Tensorflow architektúra három részből áll:

  • Az adatok előfeldolgozása
  • Építsd meg a modellt
  • Tanítsa meg és becsülje meg a modellt

Tensorflow-nak hívják, mert többdimenziós tömbként veszi fel a bemenetet, más néven tenzorok. Építhetsz egy fajta folyamatábra műveletek (úgynevezett gráf), amelyeket az adott bemeneten szeretne végrehajtani. A bemenet az egyik végén bemegy, majd átfolyik ezen a több műveletből álló rendszeren, a másik végén pedig kimenetként jön ki.

Ezért hívják TensorFlow-nak, mert a benne lévő tenzor egy műveletlistán keresztül folyik, majd a másik oldalon jön ki.

Hol futhat a Tensorflow?

TensorFlow hardver, és szoftverkövetelmények osztályba sorolhatók

Fejlesztési fázis: Ez az, amikor betanítja a módot. A képzés általában az asztali számítógépen vagy laptopon történik.

Futtatási fázis vagy következtetési fázis: Az edzés befejezése után a Tensorflow számos különböző platformon futtatható. Futtathatod

  • Asztali futás Windows, macOS vagy Linux
  • A felhő, mint webszolgáltatás
  • Mobileszközök, mint az iOS és Android

Megtaníthatja több gépen, majd futtathatja egy másik gépen, ha megvan a betanított modell.

A modell GPU-kon és CPU-kon is betanítható és használható. A GPU-kat eredetileg videojátékokhoz tervezték. 2010 végén a Stanford kutatói azt találták, hogy a GPU nagyon jó a mátrixműveletekben és az algebrában is, így nagyon felgyorsítja az ilyen típusú számításokat. A mély tanulás sok mátrixszorzáson alapul. A TensorFlow nagyon gyorsan kiszámolja a mátrixszorzást, mert be van írva C++. Bár ben van megvalósítva C++, A TensorFlow főként más nyelveken érhető el és vezérelhető, Python.

Végül a TensorFlow egyik jelentős tulajdonsága a TensorBoard. A TensorBoard lehetővé teszi a TensorFlow tevékenységének grafikus és vizuális nyomon követését.

TensorFlow komponensek

tenzor

A Tensorflow neve közvetlenül a központi keretrendszeréből származik: tenzor. A Tensorflow-ban minden számítás tenzorokat tartalmaz. A tenzor a vektor or mátrix n-dimenziós, amely minden adattípust reprezentál. A tenzorban lévő összes érték azonos adattípust tartalmaz egy ismert (vagy részben ismert) adattípussal formálják. Az adatok alakja a mátrix vagy tömb dimenziója.

A tenzor származhat a bemeneti adatokból vagy egy számítás eredményéből. A TensorFlow-ban az összes műveletet a grafikon. A grafikon a számítások sorozata, amely egymás után megy végbe. Minden műveletet an op csomópont és kapcsolódnak egymáshoz.

A grafikon felvázolja a műveleteket és a csomópontok közötti kapcsolatokat. Az értékeket azonban nem jeleníti meg. A csomópontok éle a tenzor, azaz a művelet adatokkal való feltöltésének módja.

grafikonok

A TensorFlow egy gráf keretrendszert használ. A grafikon összegyűjti és leírja a képzés során elvégzett összes sorozatszámítást. A grafikonnak számos előnye van:

  • Több CPU-n vagy GPU-n, sőt mobil operációs rendszeren való futtatáshoz készült
  • A grafikon hordozhatósága lehetővé teszi a számítások megőrzését azonnali vagy későbbi használatra. A grafikon elmenthető a jövőbeni végrehajtáshoz.
  • A grafikonon szereplő összes számítás a tenzorok összekapcsolásával történik
    • A tenzornak van egy csomópontja és egy éle. A csomópont hordozza a matematikai műveletet, és végpontokat állít elő. Az élek az élek magyarázzák a csomópontok közötti bemeneti/kimeneti kapcsolatokat.

Miért népszerű a TensorFlow?

A TensorFlow a legjobb könyvtár az összes közül, mert úgy készült, hogy mindenki számára elérhető legyen. A Tensorflow könyvtár különböző API-kat tartalmaz a nagyszabású mélytanulási architektúrához, mint például a CNN vagy az RNN. A TensorFlow gráfszámításon alapul; lehetővé teszi a fejlesztő számára a neurális hálózat felépítését a Tensorboad segítségével. Ez az eszköz segít a program hibakeresésében. Végül a Tensorflow méretarányos üzembe helyezésre készült. CPU-n és GPU-n fut.

A másik mély tanulási keretrendszerhez képest a Tensorflow vonzza a legnagyobb népszerűséget a GitHubon.

TensorFlow Algorithms

Az alábbiakban felsoroljuk a TensorFlow által támogatott algoritmusokat:

Jelenleg a TensorFlow 1.10 beépített API-val rendelkezik a következőkhöz:

  • Lineáris regresszió: tf.estimator.LinearRegressor
  • Osztályozás:tf.estimator.LinearClassifier
  • Mélytanulási osztályozás: tf.estimator.DNNClassifier
  • Mély tanulási törlés és mély: tf.estimator.DNNLinearCombinedClassifier
  • Booster fa regresszió: tf.estimator.BoostedTreesRegressor
  • Boosted fa osztályozás: tf.estimator.BoostedTreesClassifier

Hogyan működnek a számítások a TensorFlow-ban

import numpy as np
import tensorflow as tf

A kód első két sorában a tensorflow-t tf-ként importáltuk. Val vel Python, általános gyakorlat a könyvtár rövid elnevezése. Ennek az az előnye, hogy ne írjuk be a könyvtár teljes nevét, amikor használnunk kell. Például importálhatjuk a tensorflow-t tf-ként, és meghívhatjuk a tf-et, ha tensorflow függvényt akarunk használni.

Gyakoroljuk a Tensorflow elemi munkafolyamatát egyszerű TensorFlow példákkal. Készítsünk egy számítási gráfot, amely két számot összeszoroz.

A példa során X_1 és X_2 együtt szorozzuk meg. A Tensorflow létrehoz egy csomópontot a művelet összekapcsolásához. Példánkban ezt szorzásnak nevezzük. A grafikon meghatározásakor a Tensorflow számítási motorok összeszorozzák az X_1-et és az X_2-t.

A számítások a TensorFlow-ban működnek
TensorFlow példa

Végül lefuttatunk egy TensorFlow munkamenetet, amely lefuttatja a számítási gráfot az X_1 és X_2 értékekkel, és kinyomtatja a szorzás eredményét.

Határozzuk meg az X_1 és X_2 bemeneti csomópontokat. Amikor létrehozunk egy csomópontot a Tensorflow-ban, ki kell választanunk, hogy milyen csomópontot hozunk létre. Az X1 és X2 csomópontok helyőrző csomópontok lesznek. A helyőrző minden számításkor új értéket rendel. Ezeket TF pont helyőrző csomópontként hozzuk létre.

1. lépés: Határozza meg a változót

X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")

Amikor létrehozunk egy helyőrző csomópontot, át kell adnunk a számokat hozzáadandó adattípust, hogy lebegőpontos adattípust tudjunk használni, használjuk a tf.float32-t. Ennek a csomópontnak is nevet kell adnunk. Ez a név akkor jelenik meg, ha megnézzük modellünk grafikus megjelenítését. Nevezzük el ezt a csomópontot X_1-nek egy name nevű paraméter átadásával X_1 értékkel, és most definiáljuk az X_2-t ugyanúgy. X_2.

2. lépés: Határozza meg a számítást

multiply = tf.multiply(X_1, X_2, name = "multiply")

Most már meghatározhatjuk azt a csomópontot, amelyik elvégzi a szorzási műveletet. A Tensorflow-ban ezt egy tf.multiply csomópont létrehozásával tehetjük meg.

Az X_1 és X_2 csomópontokat átadjuk a szorzócsomópontnak. Azt mondja a tensorflow-nak, hogy kapcsolja össze ezeket a csomópontokat a számítási gráfban, ezért megkérjük, hogy vegye ki az értékeket x-ből és y-ből, és szorozza meg az eredményt. Adjuk meg a szorzó csomópontnak a szorzás nevet is. Ez az egyszerű számítási gráfunk teljes definíciója.

3. lépés: Hajtsa végre a műveletet

A gráfban történő műveletek végrehajtásához létre kell hoznunk egy munkamenetet. A Tensorflow-ban ezt a tf.Session() végzi. Most, hogy van egy munkamenetünk, megkérhetjük a munkamenetet, hogy futtasson műveleteket a számítási gráfunkon a session meghívásával. A számítás futtatásához a run parancsot kell használnunk.

Amikor az összeadási művelet lefut, látni fogja, hogy meg kell ragadnia az X_1 és X_2 csomópontok értékeit, így az X_1 és X_2 értékeket is be kell töltenünk. Ezt megtehetjük a feed_dict nevű paraméter megadásával. X_1,2,3 esetén 1, X_4,5,6 esetén 2 értéket adunk át.

Az eredményeket a print(result) funkcióval nyomtatjuk ki. 4, 10 és 18-at kell látnunk az 1×4, 2×5 és 3×6 esetén

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.]

Lehetőségek az adatok TensorFlow-ba való betöltésére

Az edzés előtti első lépés a gépi tanulási algoritmus az adatok betöltése. Az adatok betöltésének két általános módja van:

1. Adatok betöltése a memóriába: Ez a legegyszerűbb módszer. Az összes adatot egyetlen tömbként tölti be a memóriába. Írhatsz a Python kód. Ezek a kódsorok nem kapcsolódnak a Tensorflow-hoz.

2. Tensorflow adatfolyam: A Tensorflow beépített API-val rendelkezik, amely segít az adatok betöltésében, a művelet végrehajtásában és a gépi tanulási algoritmus egyszerű betáplálásában. Ez a módszer nagyon jól működik, különösen akkor, ha nagy adatkészlettel rendelkezik. Például köztudott, hogy a képrekordok hatalmasak, és nem férnek el a memóriába. Az adatfolyam önmagában kezeli a memóriát

Milyen megoldást érdemes használni?

Adatok betöltése a memóriába

Ha az adatkészlet nem túl nagy, azaz kevesebb, mint 10 gigabájt, akkor az első módszert használhatja. Az adatok elférnek a memóriában. CSV-fájlok importálásához használhatja a Pandas nevű híres könyvtárat. A következő oktatóanyagból többet megtudhat a pandákról.

Adatok betöltése Tensorflow csővezetékkel

A második módszer akkor működik a legjobban, ha nagy adatkészlettel rendelkezik. Például, ha egy 50 gigabájtnyi adatkészlettel rendelkezik, és a számítógépének csak 16 gigabájt memóriája van, akkor a gép összeomlik.

Ebben a helyzetben Tensorflow csővezetéket kell építenie. A folyamat kötegben vagy kis darabokban tölti be az adatokat. Minden tétel a csővezetékre kerül, és készen áll a képzésre. A csővezeték építése kiváló megoldás, mert lehetővé teszi a párhuzamos számítástechnika használatát. Ez azt jelenti, hogy a Tensorflow több CPU-n keresztül tanítja a modellt. Elősegíti a számítást és lehetővé teszi az erős neurális hálózat betanítását.

A következő oktatóanyagokban látni fogja, hogyan építhet fel jelentős csővezetéket a neurális hálózat táplálására.

Dióhéjban, ha van egy kis adatkészlete, akkor a Pandas könyvtárral betöltheti az adatokat a memóriába.

Ha nagy adatkészlettel rendelkezik, és több CPU-t szeretne használni, akkor kényelmesebb lesz a Tensorflow-folyamattal dolgozni.

Hogyan készítsünk TensorFlow csővezetéket

Íme a TensorFlow-folyamat létrehozásának lépései:

Az előző példában manuálisan adtunk hozzá három értéket X_1 és X_2 értékekhez. Most meglátjuk, hogyan tölthetünk be adatokat a Tensorflow-ba:

1. lépés) Hozza létre az adatokat

Először is használjuk a numpy könyvtárat két véletlenszerű érték generálására.

import numpy as np
x_input = np.random.sample((1,2))
print(x_input)

[[0.8835775 0.23766977]]

2. lépés) Hozza létre a helyőrzőt

Az előző példához hasonlóan létrehozunk egy helyőrzőt X néven. Explicit módon meg kell adnunk a tenzor alakját. Abban az esetben, ha egy tömböt csak két értékkel töltünk be. Az alakzatot a következőképpen írhatjuk fel: shape=[1,2]

# using a placeholder
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

3. lépés) Határozza meg az adatkészlet módszerét

Ezután meg kell határoznunk az adatkészletet, ahol feltölthetjük az x helyőrző értékét. A tf.data.Dataset.from_tensor_slices metódust kell használnunk

dataset = tf.data.Dataset.from_tensor_slices(x)

4. lépés) Hozza létre a csővezetéket

A negyedik lépésben inicializálnunk kell a folyamatot, ahol az adatok folyni fognak. Létre kell hoznunk egy iterátort a make_initializable_iterator paraméterrel. Nevezzük iterátornak. Ezután meg kell hívnunk ezt az iterátort, hogy betápláljuk a következő adatköteget, a get_next. Ennek a lépésnek a get_next nevet adjuk. Vegye figyelembe, hogy példánkban csak egy adatköteg van, csak két értékkel.

iterator = dataset.make_initializable_iterator() 
get_next = iterator.get_next()

5. lépés) Hajtsa végre a műveletet

Az utolsó lépés hasonló az előző példához. Elindítunk egy munkamenetet, és futtatjuk a műveletiterátort. A feed_dict-et a generált értékkel tápláljuk számtalan. Ez a két érték tölti fel az x helyőrzőt. Ezután a get_next futtatásával kinyomtatjuk az eredményt.

with tf.Session() as sess:
    # feed the placeholder with data
    sess.run(iterator.initializer, feed_dict={ x: x_input }) 
    print(sess.run(get_next)) # output [ 0.52374458  0.71968478]
[0.8835775  0.23766978]

Összegzésként

  • TensorFlow jelentése: TensorFlow az utóbbi évek leghíresebb mélytanulási könyvtára. A TensorFlow-t használó gyakorló bármilyen mély tanulási struktúrát fel tud építeni, például CNN-t, RNN-t vagy egyszerű mesterséges neurális hálózatot.
  • A TensorFlow-t leginkább akadémikusok, startupok és nagyvállalatok használják. A Google a TensorFlow-t szinte minden napi Google-termékben használja, beleértve a Gmailt, a Fotót és a Google Keresőmotort.
  • A Google Brain csapata a TensorFlow-t azért fejlesztette ki, hogy kitöltse a kutatók és a termékfejlesztők közötti űrt. 2015-ben nyilvánossá tették a TensorFlow-t; gyorsan növekszik a népszerűsége. Manapság a TensorFlow a GitHubon a legtöbb adattárral rendelkező mély tanulási könyvtár.
  • A gyakorlók a Tensorflow-t használják, mert könnyen telepíthető nagy méretekben. Úgy készült, hogy felhőben vagy olyan mobileszközökön működjön, mint az iOS és Android.

A Tensorflow egy munkamenetben működik. Minden munkamenetet egy grafikon határoz meg különböző számításokkal. Egy egyszerű példa lehet a számmal való szorzás. A Tensorflow-ban három lépésre van szükség:

  1. Határozza meg a változót
X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Határozza meg a számítást
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Hajtsa végre a műveletet
with tf.Session() as session:
result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
print(result)

A Tensorflow egyik általános gyakorlata egy folyamat létrehozása az adatok betöltéséhez. Ha követi az alábbi öt lépést, akkor képes lesz adatok betöltésére a TensorFLow-ba:

  1. Hozza létre az adatokat
import numpy as np
x_input = np.random.sample((1,2))
print(x_input)
  1. Hozza létre a helyőrzőt
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Határozza meg az adatkészlet módszerét
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Hozza létre a csővezetéket
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Végezze el a programot
with tf.Session() as sess:  
sess.run(iterator.initializer, feed_dict={ x: x_input })  
print(sess.run(get_next))