TensorFlow-opas - syvällinen oppiminen TensorFlow-sovelluksen avulla



TensorFlow-opetusohjelma on sarjan kolmas blogi. Se sisältää kaikki TensorFlow-ohjelman perusteet. Siinä puhutaan myös yksinkertaisen lineaarisen mallin luomisesta.

Olen suunnitellut tämän TensorFlow-opetusohjelman ammattilaisille ja harrastajille, jotka ovat kiinnostuneita soveltamaan Deep Learning Algorithm -ohjelmaa TensorFlow-tekniikan avulla erilaisten ongelmien ratkaisemiseksi. TensorFlow on avoimen lähdekoodin syväoppimiskirjasto, joka perustuu rakennemallien datavuokaavioihin. Sen avulla voit luoda laajamittaisia ​​hermoverkkoja, joissa on useita kerroksia.Tämän kirjaston käytön oppiminen on myös olennainen osa .Seuraavassa on aiheita, joista keskustellaan tässä TensorFlow-opetusblogissa:

  • Mikä on TensorFlow
  • TensorFlow-koodin perusteet
  • TensorFlow UseCase

Mitä ovat tensorit?

Tässä TensorFlow-opetusohjelmassa, ennen kuin puhumme TensorFlow'sta, ymmärrämme ensin mitkä ovat tensorit . Tensorit eivät ole muuta kuin tosiasiallisesti tietojen esittämistä syvässä oppimisessa.





Tensorit - TensorFlow-opas - EdurekaKuten yllä olevassa kuvassa on esitetty, tensorit ovat vain moniulotteisia matriiseja, joiden avulla voit edustaa dataa, jolla on suuremmat mitat. Yleisesti ottaen Deep Learning käsittelee suuria ulottuvuuksia sisältäviä tietojoukkoja, joissa mitat viittaavat tietojoukossa oleviin eri ominaisuuksiin. Itse asiassa nimi 'TensorFlow' on johdettu toiminnoista, joita hermoverkot suorittavat tensoreille. Se on kirjaimellisesti tensoreiden virta. Koska olet ymmärtänyt, mitkä ovat tensorit, siirtykäämme eteenpäin tässä TensorFlow-opetusohjelmassa ja ymmärrä - mikä on TensorFlow?

Mikä on TensorFlow?

TensorFlow on Python-pohjainen kirjasto, joka tarjoaa erityyppisiä toimintoja syvällisten oppimismallien toteuttamiseen. Kuten aiemmin keskusteltiin, termi TensorFlow koostuu kahdesta termistä - Tensor & Flow:



TensorFlow-sovelluksessa termi tensori viittaa datan esittämiseen moniulotteisena matriisina, kun taas termi virtaus viittaa sarjaan toimintoja, jotka suoritetaan tensoreille, kuten yllä olevassa kuvassa on esitetty.

Nyt olemme peittäneet tarpeeksi taustaa TensorFlowista.



Seuraavaksi tässä TensorFlow-opetusohjelmassa keskustellaan TensorFlow-koodin perusteista.

TensorFlow-opetusohjelma: Koodin perusteet

Pohjimmiltaan TensorFlow-ohjelman kirjoittamisen kokonaisprosessi sisältää kaksi vaihetta:

  1. Laskennallisen kaavion rakentaminen
  2. Laskennallisen kaavion suorittaminen

Haluan selittää teille edellä mainitut kaksi vaihetta yksitellen:

1. Laskennallisen kaavion rakentaminen

Niin, mikä on laskennallinen kaavio? No, laskennallinen kaavio on sarja TensorFlow-operaatioita, jotka on järjestetty solmuiksi kaaviossa. Kukin solmu ottaa 0 tai useampaa tensoria syötteenä ja tuottaa tensorin ulostulona. Annan teille esimerkin yksinkertaisesta laskentakaaviosta, joka koostuu kolmesta solmusta - että , b & c kuten alla:

Yllä olevan laskentakaavion selitys:

  • Jatkuvat solmutkäytetään vakioarvojen tallentamiseen, koska se tarvitsee nollatulon, mutta tuottaa tallennetut arvot tulostuksena. Edellä olevassa esimerkissä a ja b ovat vakiosolmuja, joiden arvot ovat vastaavasti 5 ja 6.

  • Solmu c edustaa toimintaa, jossa vakiosolmu a kerrotaan b: llä. Siksi solmun c suorittaminen johtaa vakiosolmun a & b kertomiseen.

Pohjimmiltaan voidaan ajatella, että laskennallinen kaavio on vaihtoehtoinen tapa käsitteellistää matemaattisia laskelmia, joka tapahtuu TensorFlow-ohjelmassa. Laskennallisen kaavion eri solmuille osoitetut toiminnot voidaan suorittaa rinnakkain, mikä tarjoaa paremman suorituskyvyn laskelmien suhteen.

Tässä kuvataan vain laskenta, se ei laske mitään, se ei sisällä arvoja, vaan vain määrittelee koodissasi määritetyt toiminnot.

2. Suoritetaan laskennallinen kaavio

Otetaan edellinen laskennallisen kaavion esimerkki ja ymmärretään, kuinka se suoritetaan. Seuraava on edellisen esimerkin koodi:

Esimerkki 1:

tuo tensorflow tf: ksi # Rakenna kaavio a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Nyt solmun c ulostulon saamiseksi meidän on suoritettava laskentakaavio a: n sisällä istunto . Istunto sijoittaa kaaviotoiminnot laitteille, kuten suorittimille tai grafiikkasuoritimille, ja tarjoaa menetelmät niiden suorittamiseksi.

miksi minun pitäisi oppia sql

Istunto kapseloi TensorFlow-ajonaikaisen ohjauksen ja tilan, ts. Se tallentaa tiedot järjestyksestä, jossa kaikki toiminnot suoritetaan, ja siirtää jo lasketun toiminnan tuloksen putkilinjan seuraavaan operaatioon. Haluan näyttää, kuinka yllä oleva laskentakaavio suoritetaan istunnon aikana (jokaisen koodirivin selitys on lisätty kommentteina):

# Luo istuntoobjekti sess = tf.Session () # Suorita kaavio istunnon sisällä ja tallenna lähtö muuttujaan output_c = sess.run (c) #Tulosta solmun c tuloste (output_c) #Sulje istunto vapauttaa resursseja sess.close ()
 Tuotos: 30

Joten tässä oli kyse istunnosta ja laskennallisen kaavion suorittamisesta siinä. Puhutaanpa nyt muuttujista ja paikkamerkkeistä, joita käytämme laajasti rakentaessamme syvällistä oppimismallia TensorFlow-sovelluksen avulla.

Vakiot, paikkamerkki ja muuttujat

TensorFlow-sovelluksessa vakioita, paikkamerkkejä ja muuttujia käytetään edustamaan syvällisen oppimismallin eri parametreja. Koska olen jo keskustellut vakioista aiemmin, aloitan paikkamerkkeillä.

Paikanpitäjä:

TensorFlow-vakion avulla voit tallentaa arvon, mutta entä jos haluat, että solmut ottavat syötteitä ajon aikana? Tällaisessa toiminnassa käytetään paikkamerkkejä, joiden avulla kaavio voi ottaa ulkoiset syötteet parametreiksi. Pohjimmiltaan paikkamerkki on lupaus antaa arvo myöhemmin tai ajon aikana. Annan sinulle esimerkin asioiden yksinkertaistamiseksi:

tuo tensorflow nimellä tf # Paikkamerkkien luominen a = tf. paikkamerkki (tf.float32) b = tf. paikkamerkki (tf.float32) # Kertotoiminnon määrittäminen w.r.t. a & ampamp b solmulle mul mul = a * b # Luo istuntoobjekti sess = tf.Session () # Mulin suorittaminen välittämällä arvot [1, 3] [2, 4] a: lle ja b vastaavasti output = sess.run ( mul, {a: [1,3], b: [2, 4]}) tulosta ('Kerrotaan ab:', tulos)
 Tuotos: [2. 12.]

Muistettavia kohtia paikkamerkit:

  • Paikkamerkkejä ei alusteta, eikä niissä ole tietoja.
  • Paikkamerkkiin on syötettävä syötteitä tai syötteitä, jotka otetaan huomioon ajon aikana.
  • Paikkamerkin suorittaminen ilman syötettä tuottaa virheen.

Siirrytään nyt eteenpäin ja ymmärretään - mitkä ovat muuttujat?

Muuttujat

Syvässä oppimisessa paikkamerkkejä käytetään mielivaltaisten syötteiden ottamiseen malliin tai kaavioon. Syötteen ottamisen lisäksi sinun on myös muokattava kaaviota siten, että se tuottaa uusia ulostuloja w.r.t. samat tulot. Tätä varten käytät muuttujia. Lyhyesti sanottuna muuttujan avulla voit lisätä kaavioon sellaisia ​​parametreja tai solmun, jotka ovat kouluttavia, eli arvoa voidaan muuttaa ajanjakson aikana. Muuttujat määritellään antamalla niiden alkuarvo ja tyyppi seuraavasti:

var = tf Muuttuja ([0.4], dtype = tf. float32)

Huomautus:

  • Jos et ole antanut tietotyyppiä nimenomaisesti, TensorFlow päättelee vakion / muuttujan tyypin alustetusta arvosta.
  • TensorFlowlla on monia omia tietotyyppejä, kuten tf. float32 , tf.int32 jne. Voit viitata niihin kaikkiin tässä .

Vakiot alustetaan, kun soitat tf. vakio ja niiden arvo ei voi koskaan muuttua. Päinvastoin, muuttujia ei alusteta, kun soitat tf Muuttuja . Voit alustaa kaikki muuttujat TensorFlow-ohjelmassa on pakko soita nimenomaisesti erityistoiminto alla olevan kuvan mukaisesti:

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

Muista aina, että muuttuja on alustettava ennen kaavion ensimmäistä käyttöä.

Huomautus: TensorFlow-muuttujat ovat muistin sisäisiä puskureita, jotka sisältävät tensoreita, mutta toisin kuin normaalit tensorit, jotka saadaan heti aikaan, kun kaavio suoritetaan ja poistetaan välittömästi sen jälkeen, muuttujat selviävät kaavion useista suorituksista.

Nyt kun olemme käsittäneet tarpeeksi TensorFlow-perustietoja, mene eteenpäin ja ymmärrämme, kuinka lineaarinen regressiomalli voidaan toteuttaa TensorFlow-sovelluksella.

Lineaarinen regressiomalli TensorFlow-sovelluksen avulla

Lineaarisen regressiomallin avulla ennustetaan muuttujan tuntematon arvo (riippuva muuttuja) toisen muuttujan (itsenäinen muuttuja) tiedetystä arvosta käyttäen lineaarista regressioyhtälöä, kuten alla on esitetty:

Siksi lineaarisen mallin luomiseen tarvitaan:

  1. Riippuva tai lähtömuuttuja (Y)
  2. Kaltevuusmuuttuja (w)
  3. Y - kuuntelu tai ennakkoluulo (b)
  4. Itsenäinen tai tulomuuttuja (X)

Aloitetaan siis lineaarisen mallin rakentaminen TensorFlow: n avulla:

Kopioi koodi napsauttamalla alla olevaa painiketta:

# Muuttujan luominen parametrin kaltevuudelle (W), jonka alkuarvo on 0,4 W = tf.Variable ([. 4], tf.float32) # Muuttujan luominen parametrin esijännitykselle (b), jonka alkuarvo on -0,4 b = tf.Variable ( [-0.4], tf.float32) # Paikkamerkkien luominen syötteen tai riippumattoman muuttujan tuottamiseksi, merkitty xx = tf.placeholder (tf.float32) # Lineaarisen regressioyhtälön linear_model = W * x + b # Kaikkien muuttujien alustaminen sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Käynnissä oleva regressiomalli laskea lähtö wrt annettuihin x arvoihin tulosta (sess.run (linear_model {x: [1, 2, 3, 4]}))

Tuotos:

[0. 0.40000001 0.80000007 1.20000005]

Yllä mainittu koodi edustaa vain perusajatusta regressiomallin toteutuksessa, ts. Kuinka seuraat regressiolinjan yhtälöä saadaksesi tuloksen w.r.t. joukko tuloarvoja. Mutta tähän malliin on vielä lisättävä vielä kaksi asiaa, jotta siitä tulisi täydellinen regressiomalli:

  • Ensinnäkin meidän on tarjottava mekanismi, jolla mallimme voi kouluttaa itseään automaattisesti annettujen tulojen ja vastaavien lähtöjen perusteella.
  • Toinen asia, jota tarvitsemme, on validoida koulutettu mallimme vertaamalla sen lähtöä haluttuun tai kohdelähtöön annetun x-arvojoukon perusteella.

Anna nyt ymmärtää, kuinka voin sisällyttää yllä mainitut toiminnot regressiomallin koodiin.

Menetystoiminto - mallin vahvistus

Häviöfunktio mittaa kuinka kaukana mallin nykyinen lähtö on halutun tai tavoitellun lähdön välillä. Käytän lineaarisen regressiomallini, jota kutsutaan nimellä Squared Error tai SSE, yleisimmin käytetty menetystoiminto. SSE laskettu w.r.t. mallilähtö (edustaa linear_model) ja haluttu tai kohdelähtö (y) muodossa:

y = tf.placeholder (tf.float32) -virhe = lineaarinen_malli - y neliön_virheet = tf.square (virhe) menetys = tf.reduce_sum (neliön_virheet) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Tuotos: 90,24

Kuten näette, menetysarvo on suuri. Siksi meidän on säädettävä painojamme (W) ja esijännitystä (b) vastaanotettavan virheen vähentämiseksi.

tf.train API - mallin kouluttaminen

TensorFlow tarjoaa optimoijat jotka muuttavat hitaasti kutakin muuttujaa häviöfunktion tai virheen minimoimiseksi. Yksinkertaisin optimoija on kaltevuuslasku . Se modifioi kutakin muuttujaa tappion johdannaisen suuruuden mukaan muuttujan suhteen.

menetelmän ylikuormitus ja menetelmän ohittaminen Java-sovelluksessa

# Gradientin laskeutumisen optimoijan optimoijan luominen = tf.train.GradientDescentOptimizer (0.01) juna = optimizer.minimize (tappio) i: lle alueella (1000): sess.run (juna, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) tulosta (sess.run ([W, b]))
 Tuotos: [matriisi ([1.99999964], dtype = float32), matriisi ([9.86305167e-07], dtype = float32)]

Joten näin luot lineaarisen mallin käyttämällä TensorFlow-ohjelmaa ja harjoitat sitä saadaksesi halutun tuloksen.

Nyt kun tiedät syvällisestä oppimisesta, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edureka Deep Learning with TensorFlow -sertifiointikoulutuskurssi auttaa oppijoita tulemaan asiantuntijoiksi koulutuksessa ja perus- ja konvoluutio-hermoverkkojen optimoinnissa käyttämällä reaaliaikaisia ​​projekteja ja tehtäviä sekä käsitteitä, kuten SoftMax-toiminto, automaattisen kooderin hermoverkot, rajoitettu Boltzmann Machine (RBM).

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.