TensorFlow bemutató - Mély tanulás a TensorFlow használatával



A TensorFlow bemutató a sorozat harmadik blogja. Ez magában foglalja a TensorFlow összes alapját. Beszél arról is, hogyan lehet egyszerű lineáris modellt létrehozni.

Ezt a TensorFlow oktatóanyagot olyan szakemberek és rajongók számára készítettem, akik érdekeltek a Deep Learning Algorithm alkalmazásában a TensorFlow segítségével különböző problémák megoldására. A TensorFlow egy nyílt forráskódú mély tanulási könyvtár, amely az építési modellek adatfolyam-grafikonjain alapszik. Ez lehetővé teszi nagy rétegű, sok rétegű neurális hálózatok létrehozását.A könyvtár használatának elsajátítása szintén alapvető része a .Az alábbiakban bemutatjuk azokat a témákat, amelyekről ebben a TensorFlow oktatóblogban lesz szó:

  • Mi a TensorFlow
  • A TensorFlow kód alapjai
  • TensorFlow UseCase

Mik azok a tenzorok?

Ebben a TensorFlow oktatóanyagban, mielőtt a TensorFlow-ról beszélnénk, hadd értsük meg először mik a tenzorok . A tenzorok nem más, mint de facto az adatok reprezentálása a mély tanulásban.





Tenzorok - TensorFlow bemutató - EdurekaAmint a fenti képen látható, a tenzorok csak többdimenziós tömbök, amelyek lehetővé teszik a nagyobb dimenziójú adatok ábrázolását. Általánosságban elmondható, hogy a Deep Learning nagy dimenziójú adathalmazokkal foglalkozik, ahol a dimenziók az adathalmaz különböző jellemzőire utalnak. Valójában a „TensorFlow” elnevezés abból a műveletből származik, amelyet a neurális hálózatok végeznek a tenzorokon. Szó szerint a feszítők áramlása. Mivel megértette a tenzorokat, lépjünk előre ebben a TensorFlow oktatóanyagban, és értsük meg - mi a TensorFlow?

Mi az a TensorFlow?

A TensorFlow egy Python-alapú könyvtár, amely különböző típusú funkciókat biztosít a mély tanulási modellek megvalósításához. Mint korábban tárgyaltuk, a TensorFlow kifejezés két kifejezésből áll - Tensor & Flow:



A TensorFlow-ban a tenzor kifejezés az adatok sokdimenziós tömbként való ábrázolására utal, míg az áramlás kifejezés a műveletek sorozatára utal, amelyeket az ember a tenzorokon végez, amint azt a fenti kép mutatja.

Most elegendő háttérrel rendelkezünk a TensorFlow-ról.



Ezután ebben a TensorFlow oktatóanyagban a TensorFlow kód-alapjairól fogunk beszélni.

TensorFlow oktatóanyag: A kód alapjai

Alapvetően a TensorFlow program írásának teljes folyamata két lépést foglal magában:

  1. Számítási grafikon felépítése
  2. Számítógépes grafikon futtatása

Hadd magyarázzam el a fenti két lépést egyesével:

1. Számítási grafikon felépítése

Így, mi a számítási gráf? Nos, a számítási gráf a TensorFlow műveletek sora, amelyek csomópontokként vannak elrendezve a grafikonon. Minden csomópont 0 vagy több tenzort vesz bemenetként, és tenzort hoz létre kimenetként. Hadd mondjak egy egyszerű számítási gráfot, amely három csomópontból áll - nak nek , b & c az alábbiak szerint:

A fenti számítási grafikon magyarázata:

  • Állandó csomópontokkonstans értékek tárolására szolgálnak, mivel nulla bemenetet igényel, de a tárolt értékeket kimenetként állítja elő. A fenti példában a és b állandó csomópontok, amelyeknek értéke 5, illetve 6.

  • A c csomópont az a konstans csomópont és b szorzatának működését jelenti. Ezért a c csomópont végrehajtása az a & b konstans csomópont szorzását eredményezi.

Alapvetően egy számítógépes gráfra gondolhatunk, mint a matematikai számítások konceptualizálásának alternatív módjára, amely egy TensorFlow programban zajlik. A Számítási grafikon különböző csomópontjaihoz rendelt műveletek párhuzamosan hajthatók végre, így jobb teljesítményt nyújtanak a számítások szempontjából.

Itt csak a számítást írjuk le, nem számít semmit, nem tartalmaz értékeket, csak meghatározza a kódodban megadott műveleteket.

két szám hozzáadása java-ban

2. Számítógépes grafikon futtatása

Vegyük a számítási gráf előző példáját, és értsük meg, hogyan kell végrehajtani. A következő az előző példa kódja:

1. példa:

tensorflow importálása tf-ként # Grafikon készítése a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Most, hogy megkapjuk a c csomópont kimenetét, futtatnunk kell a számítási grafikont az a-n belül ülés . A munkamenet a grafikonműveleteket az Eszközökre helyezi, például CPU-kat vagy GPU-kat, és módszereket biztosít azok végrehajtására.

A munkamenet összefoglalja a TensorFlow futásidejének vezérlését és állapotát, azaz tárolja az összes művelet végrehajtásának sorrendjére vonatkozó információkat, és a már kiszámított műveletek eredményét átadja a folyamat következő folyamatának. Hadd mutassam meg, hogyan futtassa a fenti számítási grafikont egy munkameneten belül (Az egyes kódsorok magyarázata megjegyzésként került hozzáadásra):

# Készítse el a munkamenet objektumot sess = tf.Session () # Futtassa a grafikont egy munkameneten belül, és tárolja a kimenetet az output_c = sess.run (c) változóban # Nyomtassa ki a c csomópont kimenetét (output_c) # Zárja be a munkamenetet szabadítson fel néhány erőforrást sess.close ()
 Kimenet: 30

Szóval, ez az egész a munkamenetről és egy számítási grafikon futtatásáról szólt. Most beszéljünk azokról a változókról és helyőrzőkről, amelyeket széles körben fogunk használni, miközben mély tanulási modellt építünk a TensorFlow segítségével.

Állandók, helyőrző és változók

A TensorFlow-ban konstansokat, helyőrzőket és változókat használnak a mély tanulási modell különböző paramétereinek képviseletére. Mivel korábban már tárgyaltam az állandókat, kezdem a helyőrzőkkel.

Helykitöltő:

A TensorFlow konstans lehetővé teszi az értékek tárolását, de mi van, ha azt szeretné, hogy a csomópontjai futás közben vegyék be a bemeneteket? Az ilyen jellegű funkcionalitáshoz helyőrzőket használnak, amelyek lehetővé teszik, hogy a grafikon külső bemeneteket vegyen paraméterként. Alapvetően a helyőrző ígéret arra, hogy később vagy futás közben ad értéket. Hadd mondjak egy példát a dolgok egyszerűbbé tételére:

tensorflow importálása tf-ként # Helyőrzők létrehozása a = tf. helyőrző (tf.float32) b = tf. helyőrző (tf.float32) # Szorzási művelet hozzárendelése w.r.t. a & ampamp b-től csomópontig mul mul = a * b # Munkamenet-objektum létrehozása sess = tf.Session () # Mul végrehajtása az [1, 3] [2, 4] értékek átadásával az a és b, illetve output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Ab szorzása:', kimenet)
 Kimenet: [2. 12.]

Emlékezetes pontok helyőrzők:

  • A helyőrzők nincsenek inicializálva, és nem tartalmaznak adatokat.
  • Meg kell adni a helyőrzőnek olyan bemeneteket vagy hírcsatornákat, amelyeket a futás során figyelembe vesznek.
  • Helyőrző végrehajtása bemenet nélkül hibát generál.

Most lépjünk előre és értsük meg - mik a változók?

Változók

A mély tanulás során a helyőrzőket tetszőleges inputok bevitelére használják a modelljében vagy grafikonjában. A bemenet felvételén kívül módosítania kell a grafikont úgy, hogy az új kimeneteket generáljon w.r.t. ugyanazok a bemenetek. Ehhez változókat fog használni. Dióhéjban egy változó lehetővé teszi, hogy olyan paramétereket vagy csomópontokat adjon a grafikonhoz, amelyek képezhetők, vagyis az érték egy idő alatt módosítható. A változókat úgy definiáljuk, hogy megadjuk kezdeti értéküket és típusukat az alábbiak szerint:

var = tf. Változó ([0,4], dtype = tf.float32)

Jegyzet:

  • Abban az esetben, ha nem adta meg kifejezetten az adattípust, a TensorFlow az inicializált értékből következteti az állandó / változó típusát.
  • A TensorFlow-nak számos saját adattípusa van, például tf.float32 , tf.int32 stb. Mindegyikre hivatkozhat itt .

Az állandók inicializálódnak, amikor felhívja tf.állandó , és értékük soha nem változhat. Éppen ellenkezőleg, a változók nem inicializálódnak, amikor hívsz tf.Változó . A TensorFlow program összes változójának inicializálásához kell kifejezetten hívjon speciális műveletet az alábbiak szerint:

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

Mindig ne feledje, hogy egy változót inicializálni kell, mielőtt egy grafikont először használnának.

Jegyzet: A TensorFlow változók memóriában lévő pufferek, amelyek tenzorokat tartalmaznak, de a normál tenzoroktól eltérően, amelyek csak egy grafikon futtatásakor vannak példányosak és utána azonnal törlődnek, a változók túlélnek egy grafikon több végrehajtása során.

Most, hogy a TensorFlow kellő alapjait áttekintettük, menjünk előre, és értsük meg, hogyan lehet egy lineáris regressziós modellt megvalósítani a TensorFlow segítségével.

Lineáris regressziós modell a TensorFlow használatával

A lineáris regressziós modellt egy változó (függő változó) ismeretlen értékének előrejelzésére használják egy másik változó (független változó) ismert értékéből lineáris regressziós egyenlet alkalmazásával, az alábbiak szerint:

Ezért egy lineáris modell létrehozásához a következőkre van szükség:

  1. Függő vagy kimeneti változó (Y)
  2. Lejtésváltozó (w)
  3. Y - Elfogás vagy elfogultság (b)
  4. Független vagy bemeneti változó (X)

Kezdjük tehát felépíteni a lineáris modellt a TensorFlow segítségével:

saltstack vs báb vs chef

Másolja a kódot az alábbi gombra kattintva:

# Változó létrehozása a lejtés meredekségéhez (W), amelynek kezdeti értéke 0,4 W = tf.Variable ([. 4], tf.float32) #Változó létrehozása a (b) paraméter elfogultságához kezdeti értékkel -0,4 b = tf.Variable ( [-0.4], tf.float32) # Helyőrzők létrehozása bemenet vagy független változó biztosításához, xx = tf.placeholder (tf.float32) jelöléssel # Lineáris regresszió egyenlete linear_model = W * x + b # Az összes változó inicializálása sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Regressziós modell futása a wrt kimenet kiszámításához a megadott x értékekhez print (sess.run (linear_model {x: [1, 2, 3, 4]}))

Kimenet:

[0. 0.40000001 0.80000007 1.20000005]

A fenti kód csak a regressziós modell megvalósításának alapgondolatát képviseli, vagyis azt, hogy miként követi a regressziós egyenlet egyenletét a w.r.t. bemeneti értékek halmaza. De még két dolgot kell hozzáadni ehhez a modellhez, hogy teljes regressziós modell legyen:

  • Először is meg kell adnunk egy mechanizmust, amellyel modellünk automatikusan képezheti magát a megadott bemenetek és kimenetek alapján.
  • A második dolog, amire szükségünk van, az a képzett modellünk validálása, hogy összehasonlítjuk annak kimenetét a kívánt vagy cél kimenettel az adott x értékkészlet alapján.

Most hadd értsük meg, hogyan építhetem be a fenti funkciókat a regressziós modell kódomba.

Veszteség funkció - modell érvényesítése

A veszteségfüggvény azt méri, hogy a modell jelenlegi kimenete milyen távolságra van a kívánt vagy a cél kimenetétől. A leggyakrabban használt veszteségfüggvényt fogom használni a lineáris regressziós modellemhez, amelyet Squared Error Summa vagy SSE néven hívnak. Az SSE számított wr.t. a modell kimenete (képviseli a lineáris_modell segítségével) és a kívánt vagy a cél kimenet (y):

y = tf.placeholder (tf.float32) hiba = lineáris_modell - y squared_errors = tf.square (hiba) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 y, [2, 4, 6, 8]})
 Kimenet: 90.24

Mint láthatja, magas veszteségértéket kapunk. Ezért módosítanunk kell a súlyainkat (W) és az elfogultságot (b), hogy csökkentsük a kapott hibát.

tf.train API - A modell oktatása

A TensorFlow biztosítja optimalizálók amelyek lassan változtatják az egyes változókat a veszteségfüggvény vagy hiba minimalizálása érdekében. A legegyszerűbb optimalizáló gradiens ereszkedés . Minden változót a veszteség deriváltjának nagysága szerint módosít az adott változóhoz képest.

# Gradiens süllyedés optimalizáló példány létrehozása = tf.train.GradientDescentOptimizer (0,01) vonat = optimalizáló. Minimalizálja (veszteség) az i tartományban (1000): sess.run (vonat, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) nyomtatás (sess.run ([W, b]))
 Kimenet: [tömb ([1.99999964], dtype = float32), tömb ([9.86305167e-07], dtype = float32)]

Tehát így hozhat létre egy lineáris modellt a TensorFlow segítségével és képezheti a kívánt kimenet megszerzéséhez.

Most, hogy tud a mély tanulásról, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka mély tanulás a TensorFlow tanúsítással tanfolyam segít a tanulóknak abban, hogy szakértőkké váljanak az alap- és konvolúciós neurális hálózatok képzésében és optimalizálásában valós idejű projektek és feladatok felhasználásával, olyan koncepciókkal együtt, mint a SoftMax funkció, az Auto-encoder Neural Networks, a Restricted Boltzmann Machine (RBM).

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és mi kapcsolatba lépünk Önnel.