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