TensorFlow Vadnica - Poglobljeno učenje z uporabo TensorFlow



TensorFlow tutorial je tretji blog v seriji. Vključuje vse osnove TensorFlowa. Govori tudi o tem, kako ustvariti preprost linearni model.

To vadnico TensorFlow sem zasnoval za profesionalce in navdušence, ki jih zanima uporaba algoritma globokega učenja z uporabo TensorFlow za reševanje različnih težav. TensorFlow je odprtokodna knjižnica globokega učenja, ki temelji na konceptu grafov pretoka podatkov za izdelavo modelov. Omogoča vam ustvarjanje obsežnih nevronskih mrež s številnimi sloji.Učenje uporabe te knjižnice je tudi temeljni del programa .Sledijo teme, o katerih bomo razpravljali v tem blogu z vajami TensorFlow:

  • Kaj je TensorFlow
  • Osnove kode TensorFlow
  • TensorFlow UseCase

Kaj so tenzorji?

V tej vadnici za TensorFlow, preden se pogovorimo o TensorFlowu, najprej razumemo kaj so tenzorji . Tenzorji niso nič drugega kot dejansko predstavljanje podatkov v globokem učenju.





Tensorji - TensorFlow Vadnica - EdurekaKot je prikazano na zgornji sliki, so tenzorji le večdimenzionalni nizi, kar vam omogoča predstavitev podatkov z večjimi dimenzijami. Na splošno se pri globokem učenju ukvarjate z visokorazsežnimi nabori podatkov, kjer se dimenzije nanašajo na različne funkcije, ki so prisotne v naboru podatkov. Pravzaprav je ime 'TensorFlow' izhajalo iz operacij, ki jih nevronske mreže izvajajo na tenzorjih. To je dobesedno tok tenzorjev. Ker ste razumeli, kaj so tenzorji, pojdimo naprej v tej vadnici TensorFlow in razumemo - kaj je TensorFlow?

Kaj je TensorFlow?

TensorFlow je knjižnica, ki temelji na Pythonu in ponuja različne vrste funkcionalnosti za izvajanje modelov globokega učenja. Kot smo že omenili, je izraz TensorFlow sestavljen iz dveh izrazov - Tensor & Flow:



V TensorFlow se izraz tenzor nanaša na predstavitev podatkov kot večdimenzionalno matriko, medtem ko se izraz tok nanaša na vrsto operacij, ki jih izvajamo s tenzorji, kot je prikazano na zgornji sliki.

Zdaj smo zajeli dovolj ozadja o TensorFlowu.



Nato bomo v tej vadnici za TensorFlow razpravljali o osnovah kode TensorFlow.

Vadnica za TensorFlow: Osnove kode

V bistvu celotni postopek pisanja programa TensorFlow vključuje dva koraka:

  1. Izdelava računskega grafa
  2. Izvajanje računskega grafa

Naj vam razložim zgornja dva koraka enega za drugim:

1. Izdelava računskega grafa

Torej, kaj je računski graf? No, računski graf je vrsta operacij TensorFlow, razporejenih kot vozlišča v grafu. Vsako vozlišče ima za vhod 0 ali več tenzorjev in kot izhod ustvari tenzor. Naj vam dam primer preprostega računskega grafa, ki je sestavljen iz treh vozlišč - do , b & c kot je prikazano spodaj:

Pojasnilo zgornjega računskega grafa:

  • Stalna vozliščase uporabljajo za shranjevanje konstantnih vrednosti, saj potrebujejo nič vnosa, vendar shranijo vrednosti kot izhod. V zgornjem primeru sta a in b konstantni vozlišči z vrednostmi 5 oziroma 6.

  • Vozlišče c predstavlja operacijo množenja konstantnega vozlišča a z b. Zato bo izvedba vozlišča c povzročila množenje const vozlišča a & b.

V bistvu si lahko računski graf predstavlja alternativni način konceptualizacije matematičnih izračunov, ki poteka v programu TensorFlow. Operacije, dodeljene različnim vozliščem računskega grafa, se lahko izvajajo vzporedno, kar zagotavlja boljšo zmogljivost pri izračunih.

Tu opisujemo samo izračun, ne izračuna ničesar, ne vsebuje nobenih vrednosti, ampak samo definira operacije, določene v vaši kodi.

2. Zagon računalniškega grafa

Vzemimo prejšnji primer računskega grafa in razumemo, kako ga izvajati. Sledi koda iz prejšnjega primera:

Primer 1:

uvoz tensorflow kot tf # Ustvari graf a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Da bi dobili izhod vozlišča c, moramo zagnati računski graf znotraj a sejo . Session postavlja operacije grafa na naprave, kot so CPU ali GPU, in ponuja metode za njihovo izvajanje.

Seja zajema nadzor in stanje izvajalnega okolja TensorFlow, tj.hrani informacije o vrstnem redu, v katerem bodo izvedene vse operacije, in rezultat že izračunane operacije posreduje naslednji operaciji v cevovodu. Naj vam pokažem, kako v seji zagnati zgornji računski graf (kot komentar je bila dodana razlaga vsake vrstice kode):

# Ustvari objekt seje sess = tf.Session () # Zaženi graf znotraj seje in izhod shrani v spremenljivko output_c = sess.run (c) # Natisni izhod vozlišča c print (output_c) # Zapri sejo sprostite nekaj virov sess.close ()
 Izhod: 30.

Torej, vse je bilo v zvezi s sejo in izvajanjem računskega grafa v njej. Zdaj pa se pogovorimo o spremenljivkah in ogradah, ki jih bomo v veliki meri uporabljali pri gradnji modela globokega učenja s pomočjo TensorFlowa.

Konstante, nadomestni znak in spremenljivke

V programu TensorFlow se konstante, ograde in spremenljivke uporabljajo za predstavitev različnih parametrov modela globokega učenja. Ker sem že govoril o konstantah, bom začel z ogradami.

Rezervirano mesto:

Konstanta TensorFlow vam omogoča, da shranite vrednost, a kaj, če želite, da vaša vozlišča med izvajanjem sprejemajo vhode? Za tovrstno funkcionalnost se uporabljajo ogradice, ki omogočajo, da vaš graf za parametre vzame zunanje vhode. V osnovi je nadomestni znak obljuba, da bo vrednost zagotovila kasneje ali med izvajanjem. Naj vam dam primer za poenostavitev stvari:

uvoz tensorflow kot tf # Ustvarjanje ograd a = tf. rezervirano mesto (tf.float32) b = tf. placeholder (tf.float32) # Dodelitev operacije množenja w.r.t. a & ampamp b na vozlišče mul mul = a * b # Ustvari objekt seje sess = tf.Session () # Izvedba mul s posredovanjem vrednosti [1, 3] [2, 4] za a oziroma b output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Množenje ab:', izhod)
 Izhod: [2. 12.]

Točke, ki si jih je treba zapomniti ograde:

  • Ograde niso inicializirane in ne vsebujejo podatkov.
  • Osebi je treba zagotoviti vhodne podatke ali vire, ki se upoštevajo med izvajanjem.
  • Izvedba ograde brez vnosa ustvari napako.

Zdaj pa pojdimo naprej in razumemo - kaj so spremenljivke?

razlika med končno in končno

Spremenljivke

Pri globokem učenju se ograde uporabljajo za poljubne vnose v vaš model ali graf. Poleg vnosa morate graf spremeniti tudi tako, da lahko ustvari nove izhode w.r.t. isti vhodi. Za to boste uporabili spremenljivke. Na kratko vam spremenljivka omogoča, da na graf dodate takšne parametre ali vozlišče, ki jih je mogoče trenirati, tj. Vrednost je mogoče spreminjati v določenem časovnem obdobju. Spremenljivke definiramo tako, da navedemo njihovo začetno vrednost in vrsto, kot je prikazano spodaj:

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

Opomba:

  • Če podatkovnega tipa niste izrecno navedli, bo TensorFlow iz inicializirane vrednosti izpeljal vrsto konstante / spremenljivke.
  • TensorFlow ima veliko svojih tipov podatkov, kot so tf.float32 , tf.int32 itd. Lahko se sklicujete na vse tukaj .

Konstante se inicializirajo, ko pokličete tf.konstantno , in njihova vrednost se ne more nikoli spremeniti. Nasprotno, spremenljivke se med klicem ne inicializirajo tf.Variable . Če želite inicializirati vse spremenljivke v programu TensorFlow, morate mora izrecno pokličite posebno operacijo, kot je prikazano spodaj:

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

Vedno si zapomnite, da je treba spremenljivko inicializirati, preden je graf prvič uporabljen.

Opomba: Spremenljivke TensorFlow so vmesni pomnilniki, ki vsebujejo tenzorje, toda za razliko od običajnih tenzorjev, ki se ustvarijo le, ko se zažene graf, in se nato takoj izbrišejo, spremenljivke preživijo v več izvedbah grafa.

Zdaj, ko smo zajeli dovolj osnov TensorFlowa, pojdimo naprej in razumemo, kako uporabiti model linearne regresije z uporabo TensorFlowa.

Linearni regresijski model z uporabo TensorFlow

Model linearne regresije se uporablja za napovedovanje neznane vrednosti spremenljivke (odvisne spremenljivke) iz znane vrednosti drugih spremenljivk (neodvisne spremenljivke) z uporabo enačbe linearne regresije, kot je prikazano spodaj:

Zato za ustvarjanje linearnega modela potrebujete:

  1. Odvisna ali izhodna spremenljivka (Y)
  2. Spremenljivka naklona (w)
  3. Y - prestrezanje ali pristranskost (b)
  4. Neodvisna ali vhodna spremenljivka (X)

Začnimo torej z gradnjo linearnega modela z uporabo TensorFlow:

Kodo kopirajte s klikom na spodnji gumb:

# Ustvarjanje spremenljivke za naklon parametra (W) z začetno vrednostjo 0,4 W = tf.Variable ([. 4], tf.float32) #Ustvarjanje spremenljivke za pristranskost parametra (b) z začetno vrednostjo -0,4 b = tf.Variable ( [-0,4], tf.float32) # Ustvarjanje ograd za zagotavljanje vhodne ali neodvisne spremenljivke, označeno z xx = tf.placeholder (tf.float32) # Enačba linearne regresije linear_model = W * x + b # Inicializacija vseh spremenljivk sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Izvajanje regresijskega modela za izračun izhodne vrednosti wrt na izpisane vrednosti x (natisni sess.run (linearni_model {x: [1, 2, 3, 4]}))

Izhod:

[0. 0,40000001 0,80000007 1,20000005]

Zgoraj navedena koda samo predstavlja osnovno idejo za izvedbo regresijskega modela, tj. Kako sledite enačbi regresijske črte, da dobite izhod w.r.t. niz vhodnih vrednosti. Toda v tem modelu je treba dodati še dve stvari, da bo popoln regresijski model:

  • Najprej moramo zagotoviti mehanizem, s katerim se lahko naš model samodejno usposobi na podlagi danega nabora vhodov in ustreznih izhodov.
  • Druga stvar, ki jo potrebujemo, je potrditi naš izurjeni model s primerjavo njegovega izhoda z želenim ali ciljnim izhodom na podlagi danega nabora vrednosti x.

Zdaj pa razumimo, kako lahko zgoraj navedene funkcionalnosti vključim v svojo kodo za regresijski model.

Funkcija izgube - validacija modela

Funkcija izgube meri, kako daleč je trenutni izhod modela oddaljen od želenega ali ciljnega izhoda. Za svoj model linearne regresije, ki se imenuje vsota kvadratnih napak ali SSE, bom uporabil najpogosteje uporabljeno funkcijo izgube. SSE izračunana w.r.t. izhod modela (predstavlja linearni model) in želeni ali ciljni izhod (y) kot:

y = tf.placeholder (tf.float32) napaka = linearni_model - y kvadratne_greške = tf.square (napaka) izguba = tf.reduce_sum (kvadratne_napake) print (sess.run (izguba, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Izhod: 90,24

Kot lahko vidite, dobimo visoko vrednost izgube. Zato moramo prilagoditi uteži (W) in pristranskost (b), da zmanjšamo napako, ki jo prejemamo.

tf.train API - Izobraževanje modela

TensorFlow zagotavlja optimizatorji ki počasi spreminjajo vsako spremenljivko, da zmanjšajo funkcijo izgube ali napako. Najenostavnejši optimizator je gradientni spust . Vsako spremenljivko spremeni glede na velikost izpeljanke izgube glede na to spremenljivko.

# Ustvarjanje primerka optimizatorja gradientnega spusta = tf.train.GradientDescentOptimizer (0,01) train = optimizer.minimize (izguba) za i in range (1000): sess.run (vlak, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sess.run ([W, b]))
 Izhod: [matrika ([1.99999964], dtype = float32), matrika ([9.86305167e-07], dtype = float32)]

Torej, tako ustvarite linearni model s pomočjo TensorFlow-a in ga usposobite, da dobite želeni izhod.

Zdaj, ko veste o globokem učenju, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tečaj Edureka za poglobljeno učenje s certifikatom TensorFlow pomaga učencem, da postanejo strokovnjaki pri usposabljanju in optimizaciji osnovnih in konvolucijskih nevronskih mrež z uporabo projektov in nalog v realnem času, skupaj s koncepti, kot so funkcija SoftMax, samodejno kodiranje nevronskih omrežij, omejeni stroj Boltzmann (RBM).

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje in se vam bomo javili.