TensorFlow juhendaja - sügav õppimine TensorFlow abil

TensorFlow juhendaja on sarja kolmas ajaveeb. See sisaldab kõiki TensorFlow põhitõdesid. Samuti räägitakse sellest, kuidas luua lihtne lineaarne mudel.

Olen koostanud selle TensorFlow õpetuse spetsialistidele ja entusiastidele, kes on huvitatud rakendama Deep Learning Algorithmi TensorFlow abil erinevate probleemide lahendamiseks. TensorFlow on avatud lähtekoodiga süvaõppekogu, mis põhineb mudelite koostamisel andmevoo graafikute kontseptsioonil. See võimaldab teil luua suuremahulisi ja paljude kihtidega närvivõrke.Selle raamatukogu kasutamise õppimine on ka .Siin on teemad, mida selles TensorFlow õpetuse ajaveebis käsitletakse:



kuidas komplekti luua
  • Mis on TensorFlow
  • TensorFlow koodi põhitõed
  • TensorFlow UseCase

Mis on tenorid?

Enne selle TensorFlow juhendaja mõistmist mõelgem enne TensorFlow'st rääkimist mis on tenorid . Tensorid ei ole muud kui de facto andmete esindamine sügavas õppes.



Tensorid - TensorFlow õpetus - EdurekaNagu ülaltoodud pildil näidatud, on tenorid lihtsalt mitmemõõtmelised massiivid, mis võimaldab teil kujutada kõrgemate mõõtmetega andmeid. Üldiselt tegelete sügava õppimisega kõrgemõõtmeliste andmekogumitega, kus mõõtmed viitavad andmekogumis esinevatele erinevatele omadustele. Tegelikult on nimi “TensorFlow” tuletatud toimingutest, mida närvivõrgud tenoridele teevad. See on sõna otseses mõttes tensorite voog. Kuna olete aru saanud, mis on tenorid, siis liikuge selles TensorFlow õpetuses edasi ja mõistke - mis on TensorFlow?

Mis on TensorFlow?

TensorFlow on Pythoni põhine teek, mis pakub erinevat tüüpi funktsioone sügavate õppemudelite juurutamiseks. Nagu varem arutletud, koosneb termin TensorFlow kahest terminist - Tensor & Flow:



Rakenduses TensorFlow viitab mõiste tensor andmete esitamisele mitmemõõtmelise massiivina, samas kui termin voog viitab operatsioonide reale, mida tensoritega tehakse, nagu on näidatud ülaltoodud pildil.

Nüüd oleme TensorFlowi kohta piisavalt taustaga tutvunud.



Järgmisena arutame selles TensorFlow õpetuses TensorFlow koodi põhitõdesid.

TensorFlow'i õpetus: koodi põhitõed

Põhimõtteliselt hõlmab TensorFlow programmi kirjutamise üldine protsess kahte sammu:

  1. Arvutusgraafiku koostamine
  2. Arvutusgraafiku käitamine

Lubage mul selgitada teile ülaltoodud kahte sammu ükshaaval:

1. Arvutusgraafiku koostamine

Niisiis, mis on arvutusgraafik? Noh, arvutusgraafik on rida TensorFlow toiminguid, mis on paigutatud graafi sõlmedeks. Iga sõlme võtab sisendiks 0 või enam tensorit ja toodab väljundiks tensori. Lubage mul tuua teile näide lihtsast arvutusgraafikust, mis koosneb kolmest sõlmest - kuni , b & c nagu allpool näidatud:

Ülaltoodud arvutusgraafiku selgitus:

  • Pidevad sõlmedkasutatakse püsiväärtuste salvestamiseks, kuna see võtab nulli sisendi, kuid toodab salvestatud väärtused väljundina. Ülaltoodud näites on a ja b konstantsed sõlmed väärtustega 5 ja 6.

  • Sõlm c tähistab konstantse sõlme a korrutamist b-ga. Seetõttu põhjustab sõlme c käivitamine const-sõlme a & b korrutamise.

Põhimõtteliselt võib arvutusgraafikust mõelda kui alternatiivsest viisist matemaatiliste arvutuste kontseptualiseerimiseks, mis toimub TensorFlow programmis. Arvutusgraafiku erinevatele sõlmedele määratud toiminguid saab teha paralleelselt, pakkudes seega arvutustes paremat jõudlust.

Siin kirjeldame lihtsalt arvutust, see ei arvuta midagi, see ei sisalda väärtusi, vaid määratleb teie koodis määratud toimingud.

2. Arvutusgraafiku käitamine

Võtame arvutusgraafiku eelmise näite ja mõistame, kuidas seda täita. Järgmine on eelmise näite kood:

Näide 1:

impordi tensorivoog tf-na # Ehitage graafik a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Nüüd, et saada sõlme c väljund, peame arvutusgraafi käivitama a piires seanss . Session paigutab graafiku toimingud seadmetele, näiteks protsessoritele või GPU-dele, ja pakub nende täitmiseks meetodeid.

Seanss hõlmab TensorFlow käituse juhtimist ja olekut, see tähendab, et see salvestab teabe kõigi toimingute sooritamise järjekorra kohta ja edastab juba arvutatud operatsiooni tulemuse torujuhtme järgmisele operatsioonile. Las ma näitan teile, kuidas ülaltoodud arvutuslikku graafikut seansi jooksul käivitada (iga koodirea selgitus on lisatud kommentaarina):

# Looge seansiobjekt sess = tf.Session () # Käivitage seansi graafik ja salvestage väljund muutujasse output_c = sess.run (c) # Prindige sõlme c print väljund (output_c) #Sulgege seanss vabastage mõned ressursid sess.close ()
 Väljund: 30

Niisiis, see kõik puudutas seanssi ja arvutusliku graafiku käitamist selles. Räägime nüüd muutujatest ja kohahoidjatest, mida TensorFlow abil sügava õppemudeli loomisel laialdaselt kasutame.

Konstandid, kohatäide ja muutujad

Rakenduses TensorFlow kasutatakse sügava õppemudeli erinevate parameetrite tähistamiseks konstande, kohatäiteid ja muutujaid. Kuna ma olen juba varem konstantidest rääkinud, siis alustan kohahoidjatest.

Kohatäide:

Konstant TensorFlow võimaldab teil väärtust salvestada, kuid mis siis, kui soovite, et teie sõlmed võtaksid sisendeid jooksmisel? Sellise funktsionaalsuse jaoks kasutatakse kohatäiteid, mis võimaldavad teie graafikul võtta parameetritena väliseid sisendeid. Põhimõtteliselt on kohatäide lubadus anda väärtus hiljem või käitamise ajal. Lubage mul tuua teile näide asjade lihtsustamiseks:

impordi tensorflow kui tf # Kohahoidjate loomine a = tf. kohahoidja (tf.float32) b = tf. kohatäide (tf.float32) # Korrutamisoperatsiooni määramine w.r.t. a & ampamp b sõlmpunktini mul mul = a * b # Seansiobjekti loomine sess = tf.Session () # muli täitmine, edastades väärtused [1, 3] [2, 4] vastavalt a ja b väljund = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Ab korrutamine:', väljund)
 Väljund: [2. 12.]

Mäletatavad punktid kohatäited:

  • Kohahoidjaid ei lähtestata ja need ei sisalda andmeid.
  • Kohatäitjale tuleb sisestada sisendeid või kanaleid, mida käitamise ajal arvestatakse.
  • Kohatäite täitmine ilma sisendita tekitab tõrke.

Liigugem nüüd edasi ja mõistkem - mis on muutujad?

Muutujad

Sügavas õppes kasutatakse kohahoidjaid suvaliste sisestuste saamiseks teie mudelis või graafikus. Lisaks sisendi võtmisele peate ka graafikut muutma nii, et see tooks uusi väljundeid w.r.t. samad sisendid. Selleks kasutate muutujaid. Lühidalt, muutuja võimaldab teil lisada graafikule selliseid parameetreid või sõlme, mis on treenitavad, st väärtust saab teatud aja jooksul muuta. Muutujad määratletakse nende algväärtuse ja tüübi esitamisega, nagu allpool näidatud:

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

Märge:

  • Kui te pole andmetüüpi selgesõnaliselt esitanud, järeldab TensorFlow initsialiseeritud väärtusest konstandi / muutuja tüübi.
  • TensorFlow'l on palju oma andmetüüpe, näiteks tf.float32 , tf.int32 jne. Võite viidata neile kõigile siin .

Konstandid lähtestatakse, kui helistate tf.püsiv ja nende väärtus ei saa kunagi muutuda. Vastupidi, muutujaid ei lähtestata, kui helistate tf. Muutuv . Kõigi TensorFlow programmi muutujate lähtestamiseks peate peab helistage selgesõnaliselt eritoimingule, nagu allpool näidatud:

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

Pidage alati meeles, et enne graafiku esmakordset kasutamist tuleb muutuja lähtestada.

Märge: TensorFlow muutujad on mälus olevad puhvrid, mis sisaldavad tensioreid, kuid erinevalt tavalistest tenoritest, mis kuvatakse ainult graafiku käivitamisel ja kustutatakse kohe pärast seda, jäävad muutujad graafiku mitme teostuse korral ellu.

Nüüd, kui oleme TensorFlow piisavalt põhitõdesid käsitlenud, jätkame ja mõistame, kuidas rakendada lineaarse regressioonimudeli abil TensorFlow.

Lineaarne regressioonimudel TensorFlow abil

Lineaarse regressiooni mudelit kasutatakse muutuja (sõltuv muutuja) tundmatu väärtuse ennustamiseks teiste muutujate (sõltumatu muutuja) teadaolevast väärtusest, kasutades lineaarset regressiooni võrrandit, nagu allpool näidatud:

Seetõttu peate lineaarse mudeli loomiseks:

  1. Sõltuv või väljundmuutuja (Y)
  2. Kaldemuutuja (w)
  3. Y - pealtkuulamine või kallutatus (b)
  4. Sõltumatu või sisendmuutuja (X)

Alustagem siis lineaarset mudelit TensorFlow abil:

Kopeerige kood, klõpsates allpool toodud nuppu:

# Muutuja loomine parameetri kalle (W) jaoks, mille algväärtus on 0,4 W = tf. Muutuv ([. 4], tf.float32) # Muutuja loomine parameetri eelarvega (b) algväärtusega -0,4 b = tf. Muutuv ( [-0.4], tf.float32) # Kohahoidjate loomine sisendi või sõltumatu muutuja pakkumiseks, tähistatud xx = tf.placeholder (tf.float32) # Lineaarse regressiooni võrrand linear_model = W * x + b # Kõigi muutujate lähtestamine sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Regressioonimudeli käitamine väljundi wrt arvutamiseks antud x väärtuste printimiseks (sess.run (linear_model {x: [1, 2, 3, 4]}))

Väljund:

[0. 0.40000001 0.80000007 1.20000005]

Eespool nimetatud kood esindab lihtsalt regressioonimudeli rakendamise põhiideed, st kuidas järgida regressioonijoone võrrandit, et saada väljund w.r.t. sisendväärtuste komplekt. Kuid selle mudeli täielikuks regressioonimudeliks saamiseks tuleb lisada veel kaks asja:

  • Esiteks peame pakkuma mehhanismi, mille abil meie mudel saab end automaatselt sisendada, lähtudes sisendite ja vastavate väljundite komplektist.
  • Teine asi, mida vajame, on meie koolitatud mudeli kinnitamine, võrreldes selle väljundit soovitud või sihtväljundiga, lähtudes antud x väärtuste komplektist.

Nüüd andke meile mõista, kuidas ma saaksin ülaltoodud funktsionaalsusi oma regressioonimudeli koodi lisada.

Kaotuse funktsioon - mudeli valideerimine

Kaotusfunktsioon mõõdab, kui kaugel on mudeli praegune väljund soovitud või sihtväljundi väljundist. Kasutan oma lineaarse regressioonimudeli puhul kõige sagedamini kasutatavat kadumisfunktsiooni, mida nimetatakse ruutvea summaks või SSE-ks. SSE arvutatud w.r.t. mudeli väljund (esindab lineaarne_mudel) ja soovitud või sihtväljund (y) järgmiselt:

y = tf.placeholder (tf.float32) tõrge = lineaarne_mudel - y ruudulised vead = tf.ruut (viga) kaotus = tf.reduce_sum (ruudulised vead) print (sess.run (kadu, {x: [1,2,3,4 y, [2, 4, 6, 8]})
 Väljund: 90.24

Nagu näete, saame suure kahjumi. Seetõttu peame oma raskusi (W) ja eelarvamusi (b) kohandama, et vähendada vastuvõetavat viga.

tf.train API - mudeli koolitus

TensorFlow pakub optimeerijad mis muudavad aeglaselt iga muutujat, et minimeerida kadumisfunktsiooni või -viga. Lihtsaim optimeerija on gradientne laskumine . See muudab iga muutujat vastavalt kahjumi tuletise suurusele selle muutuja suhtes.

# Gradiendi laskumise optimeerija optimeerija loomine = tf.train.GradientDescentOptimizer (0,01) rong = optimeerija. Minimeeri (kadu) i vahemikus (1000): sess.run (rong, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sess.run ([W, b]))
 Väljund: [massiiv ([1.99999964], dtype = float32), massiiv ([9.86305167e-07], dtype = float32)]

Nii saate nii luua TensorFlow abil lineaarse mudeli ja treenida seda soovitud väljundi saamiseks.

Nüüd, kui olete sügava õppimise kohta teadlik, vaadake järgmist autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma. Kursus Edureka Deep Learning with TensorFlow sertifitseerimiskoolitus aitab õppijatel saada ekspertideks põhi- ja konvolutsiooniliste närvivõrkude koolitamisel ning optimeerimisel, kasutades reaalajas toimuvaid projekte ja ülesandeid koos selliste mõistetega nagu SoftMax-funktsioon, Auto-encoder Neural Networks, Restricted Boltzmann Machine (RBM).

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.