Tutorial TensorFlow - Învățare profundă folosind TensorFlow



Tutorialul TensorFlow este al treilea blog din serie. Include toate elementele de bază ale TensorFlow. De asemenea, vorbește despre cum să creați un model liniar simplu.

Am proiectat acest tutorial TensorFlow pentru profesioniști și entuziaști care sunt interesați să aplice algoritmul Deep Learning folosind TensorFlow pentru a rezolva diferite probleme. TensorFlow este o bibliotecă open source de învățare profundă care se bazează pe conceptul de grafice ale fluxului de date pentru modele de construcție. Vă permite să creați rețele neuronale la scară largă cu multe straturi.Învățarea utilizării acestei biblioteci este, de asemenea, o parte fundamentală a .Următoarele sunt subiectele care vor fi discutate în acest blog tutorial TensorFlow:

  • Ce este TensorFlow
  • Elementele de bază ale codului TensorFlow
  • TensorFlow UseCase

Ce sunt tensorii?

În acest tutorial TensorFlow, înainte de a vorbi despre TensorFlow, să ne înțelegem mai întâi ce sunt tensorii . Tensorii nu sunt altceva decât un fapt pentru reprezentarea datelor în învățarea profundă.





Tensori - Tutorial TensorFlow - EdurekaAșa cum se arată în imaginea de mai sus, tensorii sunt doar tablouri multidimensionale, care vă permit să reprezentați date cu dimensiuni mai mari. În general, Deep Learning vă ocupați de seturi de date cu dimensiuni ridicate în care dimensiunile se referă la diferite caracteristici prezente în setul de date. De fapt, numele „TensorFlow” a fost derivat din operațiile pe care rețelele neuronale le efectuează pe tensori. Este literalmente un flux de tensori. Deoarece ați înțeles ce sunt tensorii, permiteți-ne să mergem mai departe în acest tutorial TensorFlow și să înțelegem - ce este TensorFlow?

Ce este TensorFlow?

TensorFlow este o bibliotecă bazată pe Python care oferă diferite tipuri de funcționalități pentru implementarea modelelor Deep Learning. După cum sa discutat anterior, termenul TensorFlow este alcătuit din doi termeni - Tensor & Flow:



În TensorFlow, termenul tensor se referă la reprezentarea datelor ca matrice multidimensională, în timp ce termenul flux se referă la seria de operații pe care o efectuăm pe tensori așa cum se arată în imaginea de mai sus.

Acum am acoperit suficient fundal despre TensorFlow.



În continuare, în acest tutorial TensorFlow vom discuta despre noțiunile de bază ale codului TensorFlow.

Tutorial TensorFlow: Coduri de bază

Practic, procesul general de scriere a unui program TensorFlow implică doi pași:

cum se schimbă calea java
  1. Construirea unui grafic computațional
  2. Rularea unui grafic de calcul

Permiteți-mi să vă explic cei doi pași de mai sus unul câte unul:

1. Construirea unui grafic computațional

Asa de, ce este un grafic de calcul? Ei bine, un grafic de calcul este o serie de operații TensorFlow dispuse ca noduri în grafic. Fiecare nod ia 0 sau mai mulți tensori ca intrare și produce un tensor ca ieșire. Permiteți-mi să vă dau un exemplu de grafic de calcul simplu care constă din trei noduri - la , b & c așa cum se arată mai jos:

Explicația graficului de calcul de mai sus:

  • Noduri constantesunt utilizate pentru a stoca valori constante deoarece necesită intrare zero, dar produce valorile stocate ca ieșire. În exemplul de mai sus, a și b sunt noduri constante cu valorile 5 și respectiv 6.

  • Nodul c reprezintă operația de multiplicare a nodului constant a cu b. Prin urmare, executarea nodului c va avea ca rezultat multiplicarea nodului const a & b.

Practic, se poate gândi la un grafic de calcul ca o modalitate alternativă de conceptualizare a calculelor matematice care are loc într-un program TensorFlow. Operațiile atribuite diferitelor noduri ale unui grafic de calcul pot fi efectuate în paralel, oferind astfel o performanță mai bună în ceea ce privește calculele.

Aici descriem doar calculul, nu calculează nimic, nu conține nicio valoare, ci doar definește operațiunile specificate în codul dvs.

2. Rularea unui grafic de calcul

Să luăm exemplul anterior de grafic de calcul și să înțelegem cum să-l executăm. Următorul este codul din exemplul anterior:

Exemplul 1:

import tensorflow ca tf # Construiți un grafic a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Acum, pentru a obține ieșirea nodului c, trebuie să rulăm graficul de calcul în a sesiune . Sesiunea plasează operațiunile grafice pe dispozitive, cum ar fi CPU-uri sau GPU-uri, și oferă metode pentru a le executa.

O sesiune încapsulează controlul și starea timpului de execuție TensorFlow, adică stochează informațiile despre ordinea în care vor fi efectuate toate operațiunile și transmite rezultatul operației deja calculate la următoarea operație din conductă. Permiteți-mi să vă arăt cum să rulați graficul de calcul de mai sus într-o sesiune (Explicația fiecărei linii de cod a fost adăugată ca un comentariu):

# Creați obiectul de sesiune sess = tf.Session () # Rulați graficul într-o sesiune și stocați ieșirea într-o variabilă output_c = sess.run (c) #Printați ieșirea nodului c print (output_c) # Închideți sesiunea în eliberați câteva resurse sess.close ()
 Ieșire: 30

Deci, totul a fost despre sesiune și rularea unui grafic de calcul în cadrul acestuia. Acum, să vorbim despre variabile și substituenți pe care îi vom folosi pe scară largă în timp ce construim un model de învățare profundă folosind TensorFlow.

Constantele, substituentul și variabilele

În TensorFlow, constantele, substituenții și variabilele sunt utilizate pentru a reprezenta diferiți parametri ai unui model de învățare profundă. Deoarece, am discutat deja constantele mai devreme, voi începe cu substituenți.

Substituent:

O constantă TensorFlow vă permite să stocați o valoare, dar, dacă, doriți ca nodurile dvs. să ia intrări pe fuga? Pentru acest tip de funcționalitate, se folosesc substituenți care permit graficului dvs. să ia intrări externe ca parametri. Practic, un substituent este o promisiune de a oferi o valoare mai târziu sau în timpul rulării. Permiteți-mi să vă dau un exemplu pentru a simplifica lucrurile:

import tensorflow ca tf # Crearea de substituenți a = tf. substituent (tf.float32) b = tf. substituent (tf.float32) # Atribuirea operației de multiplicare w.r.t. a & ampamp b to node mul mul = a * b # Create session session sess = tf.Session () # Executarea mul prin trecerea valorilor [1, 3] [2, 4] pentru a și b respectiv output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Multiplicarea ab:', ieșire)
 Ieșire: [2. 12.]

Puncte de reținut substituenți:

  • Substituenții nu sunt inițializați și nu conțin date.
  • Trebuie să furnizați intrări sau feed-uri pentru substituent, care sunt luate în considerare în timpul rulării.
  • Executarea unui substituent fără intrare generează o eroare.

Acum, să mergem mai departe și să înțelegem - ce sunt variabilele?

Variabile

În învățarea profundă, substituenții sunt folosiți pentru a lua intrări arbitrare în modelul sau graficul dvs. În afară de a lua intrări, trebuie să modificați graficul astfel încât să poată produce noi ieșiri w.r.t. aceleași intrări. Pentru aceasta, veți folosi variabile. Pe scurt, o variabilă vă permite să adăugați astfel de parametri sau nod la grafic care sunt antrenabili, adică valoarea poate fi modificată pe parcursul unui timp. Variabilele sunt definite prin furnizarea valorii și tipului inițial, după cum se arată mai jos:

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

Notă:

  • În cazul în care nu ați furnizat în mod explicit tipul de date, TensorFlow va deduce tipul constantei / variabilei din valoarea inițializată.
  • TensorFlow are multe tipuri de date proprii, cum ar fi tf.float32 , tf.int32 etc. Vă puteți referi la toate Aici .

Constantele sunt inițializate atunci când apelați tf.constant , iar valoarea lor nu se poate schimba niciodată. Dimpotrivă, variabilele nu sunt inițializate atunci când apelați tf.Variabil . Pentru a inițializa toate variabilele dintr-un program TensorFlow, tu trebuie sa apelați în mod explicit o operațiune specială așa cum se arată mai jos:

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

Amintiți-vă întotdeauna că o variabilă trebuie inițializată înainte ca graficul să fie utilizat pentru prima dată.

Notă: Variabilele TensorFlow sunt tampoane în memorie care conțin tensori, dar, spre deosebire de tensorii normali, care sunt instanțați doar atunci când se execută un grafic și sunt șterse imediat după aceea, variabilele supraviețuiesc pe mai multe execuții ale unui grafic.

Acum, că am acoperit suficiente elemente de bază ale TensorFlow, să mergem mai departe și să înțelegem cum să implementăm un model de regresie liniar folosind TensorFlow.

cum să faci o serie de obiecte în java

Model de regresie liniară folosind TensorFlow

Modelul de regresie liniară este utilizat pentru prezicerea valorii necunoscute a unei variabile (variabilă dependentă) din valoarea cunoscută a altei variabile (variabilă independentă) utilizând ecuația de regresie liniară, așa cum se arată mai jos:

Prin urmare, pentru crearea unui model liniar, aveți nevoie de:

  1. Variabilă dependentă sau de ieșire (Y)
  2. Variabila pantei (w)
  3. Y - Interceptare sau Bias (b)
  4. Variabilă de intrare sau independentă (X)

Deci, să începem să construim un model liniar folosind TensorFlow:

Copiați codul făcând clic pe butonul de mai jos:

# Crearea variabilei pentru panta parametrului (W) cu valoarea inițială 0,4 W = tf.Variable ([. 4], tf.float32) # Crearea variabilei pentru polarizarea parametrilor (b) cu valoarea inițială ca -0,4 b = tf.Variable ( [-0.4], tf.float32) # Crearea substituenților pentru furnizarea intrării sau variabilei independente, notate cu xx = tf.placeholder (tf.float32) # Ecuația regresiei liniare model_lineal = W * x + b # Inițializarea tuturor variabilelor tf.Session () init = tf.global_variables_initializer () sess.run (init) # Rularea modelului de regresie pentru a calcula valoarea de ieșire la tipărirea valorilor x furnizate (sess.run (linear_model {x: [1, 2, 3, 4]}))

Ieșire:

[0. 0.40000001 0.80000007 1.20000005]

Codul menționat mai sus reprezintă doar ideea de bază din spatele implementării modelului de regresie, adică modul în care urmezi ecuația liniei de regresie, astfel încât să obții rezultatul w.r.t. un set de valori de intrare. Dar, mai sunt încă două lucruri de adăugat în acest model pentru a-l face un model de regresie complet:

  • În primul rând, trebuie să oferim un mecanism prin care modelul nostru se poate antrena automat în funcție de setul dat de intrări și ieșiri respective.
  • Al doilea lucru de care avem nevoie este să ne validăm modelul instruit comparând rezultatul cu ieșirea dorită sau țintă pe baza setului dat de valori x.

Acum să ne înțelegem cum pot încorpora funcționalitățile menționate mai sus în codul meu pentru modelul de regresie.

Funcția de pierdere - validarea modelului

O funcție de pierdere măsoară cât de departe este ieșirea curentă a modelului de cea a ieșirii dorite sau țintă. Voi folosi o funcție de pierdere cea mai frecvent utilizată pentru modelul meu de regresie liniară numită Sumă de eroare pătrată sau SSE. SSE calculat w.r.t. ieșire model (reprezentată prin model_liniar) și ieșire dorită sau țintă (y) ca:

y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Ieșire: 90,24

După cum puteți vedea, obținem o pierdere mare. Prin urmare, trebuie să ne ajustăm greutățile (W) și părtinirea (b) astfel încât să reducem eroarea pe care o primim.

tf.train API - Instruirea modelului

TensorFlow oferă optimizatori care schimbă încet fiecare variabilă pentru a minimiza funcția de pierdere sau eroarea. Cel mai simplu optimizator este coborâre în gradient . Modifică fiecare variabilă în funcție de magnitudinea derivatului pierderii față de acea variabilă.

ce este cuplarea în java
#Crearea unei instanțe de gradient descendent optimizer optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss) for i in range (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sess.run ([W, b]))
 Ieșire: [matrice ([1.99999964], dtype = float32), matrice ([9.86305167e-07], dtype = float32)]

Deci, așa creați un model liniar folosind TensorFlow și îl antrenați pentru a obține ieșirea dorită.

Acum, că știți despre Deep Learning, consultați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul de învățare profundă Edureka cu certificare TensorFlow îi ajută pe cursanți să devină experți în formarea și optimizarea rețelelor neuronale de bază și convoluționale utilizând proiecte și atribuiri în timp real, împreună cu concepte precum funcția SoftMax, rețelele neuronale de auto-codificare, mașina restricționată Boltzmann (RBM).

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii și vă vom răspunde.