Ce este TensorFlow? Cum functioneaza? introducere & Architectură
Să începem acest tutorial cu introducerea TensorFlow:
Ce este TensorFlow?
TensorFlow este o platformă open-source end-to-end pentru crearea de aplicații de învățare automată. Este o bibliotecă matematică simbolică care utilizează fluxul de date și programarea diferențiabilă pentru a efectua diverse sarcini axate pe antrenament și deducere a rețelelor neuronale profunde. Permite dezvoltatorilor să creeze aplicații de învățare automată folosind diverse instrumente, biblioteci și resurse comunitare.
În prezent, cea mai cunoscută bibliotecă de deep learning din lume este TensorFlow de la Google. Produsul Google folosește învățarea automată în toate produsele sale pentru a îmbunătăți motorul de căutare, traducerea, subtitrărea imaginilor sau recomandările.
Exemplu TensorFlow
Pentru a da un exemplu concret, utilizatorii Google pot experimenta o experiență de căutare mai rapidă și mai rafinată cu AI. Dacă utilizatorul introduce un cuvânt cheie în bara de căutare, Google oferă o recomandare despre care ar putea fi următorul cuvânt.
Google dorește să folosească învățarea automată pentru a profita de seturile lor masive de date pentru a oferi utilizatorilor cea mai bună experiență. Trei grupuri diferite folosesc învățarea automată:
- Cercetatorii
- Oamenii de știință de date
- Programatorii
Toți pot folosi același set de instrumente pentru a colabora între ei și pentru a-și îmbunătăți eficiența.
Google nu are doar orice date; au cel mai masiv computer din lume, așa că Tensor Flow a fost construit la scară. TensorFlow este o bibliotecă dezvoltată de echipa Google Brain pentru a accelera învățarea automată și cercetarea profundă a rețelelor neuronale.
A fost construit pentru a rula pe mai multe procesoare sau GPU-uri și chiar pe sisteme de operare mobile și are mai multe wrapper-uri în mai multe limbi, cum ar fi Python, C++ or Java.
Istoria TensorFlow
În urmă cu câțiva ani, învățarea profundă a început să depășească toți ceilalți algoritmi de învățare automată atunci când oferă o cantitate masivă de date. Google a văzut că ar putea folosi aceste rețele neuronale profunde pentru a-și îmbunătăți serviciile:
- Gmail
- Fotografie
- Motor de căutare Google
Ei construiesc un cadru numit flux tensor pentru a permite cercetătorilor și dezvoltatorilor să lucreze împreună la un model AI. Odată dezvoltat și scalat, permite multor persoane să-l folosească.
A fost făcut public pentru prima dată la sfârșitul anului 2015, în timp ce prima versiune stabilă a apărut în 2017. Este open source sub licență Apache Open Source. Puteți să-l utilizați, să îl modificați și să redistribuiți versiunea modificată contra unei taxe fără a plăti nimic către Google.
În continuare, în acest tutorial TensorFlow Deep learning, vom afla despre arhitectura TensorFlow și cum funcționează TensorFlow.
Cum funcționează TensorFlow
TensorFlow vă permite să construiți grafice și structuri de flux de date pentru a defini modul în care datele se mișcă printr-un grafic, luând intrările ca o matrice multidimensională numită Tensor. Vă permite să construiți o diagramă de operații care pot fi efectuate pe aceste intrări, care merge la un capăt și vine la celălalt capăt ca ieșire.
TensorFlow Architectură
Arhitectura Tensorflow funcționează în trei părți:
- Preprocesarea datelor
- Construiți modelul
- Antrenați și estimați modelul
Se numește Tensorflow deoarece preia intrarea ca o matrice multidimensională, cunoscută și ca tensori. Puteți construi un fel de organigrame de operațiuni (numite Grafic) pe care doriți să le efectuați cu acea intrare. Intrarea intră la un capăt și apoi trece prin acest sistem de operații multiple și iese la celălalt capăt ca ieșire.
Acesta este motivul pentru care se numește TensorFlow, deoarece tensorul intră, curge printr-o listă de operații, iar apoi iese pe cealaltă parte.
Unde poate rula Tensorflow?
Hardware TensorFlow și cerințele software poate fi clasificat în
Faza de dezvoltare: Aceasta este atunci când antrenați modul. Instruirea se face de obicei pe desktop sau laptop.
Faza de rulare sau faza de inferență: odată ce antrenamentul este încheiat, Tensorflow poate fi rulat pe multe platforme diferite. Îl poți rula
- Desktop rulează Windows, macOS sau Linux
- Cloud ca serviciu web
- Dispozitive mobile precum iOS și Android
Îl puteți antrena pe mai multe mașini, apoi îl puteți rula pe o altă mașină, odată ce aveți modelul antrenat.
Modelul poate fi antrenat și utilizat pe GPU-uri, precum și pe procesoare. GPU-urile au fost inițial concepute pentru jocuri video. La sfârșitul anului 2010, cercetătorii de la Stanford au descoperit că GPU-ul era, de asemenea, foarte bun la operațiuni cu matrice și algebră, astfel încât le face foarte rapide pentru a face astfel de calcule. Învățarea profundă se bazează pe o mulțime de înmulțiri matrice. TensorFlow este foarte rapid la calculul înmulțirii matricei, deoarece este scris în C++. Deși este implementat în C++, TensorFlow poate fi accesat și controlat în principal prin alte limbi, Python.
În cele din urmă, o caracteristică semnificativă a TensorFlow este TensorBoard. The TensorBoard permite monitorizarea grafică și vizuală a ceea ce face TensorFlow.
Componentele TensorFlow
tensor
Numele Tensorflow este derivat direct din cadrul său de bază: tensor. În Tensorflow, toate calculele implică tensori. Un tensor este a vector or matrice de n-dimensiuni care reprezintă toate tipurile de date. Toate valorile dintr-un tensor dețin un tip de date identic cu un cunoscut (sau parțial cunoscut) forma. Forma datelor este dimensionalitatea matricei sau a tabloului.
Un tensor poate fi originat din datele de intrare sau din rezultatul unui calcul. În TensorFlow, toate operațiunile sunt efectuate în interiorul unui grafic. Graficul este un set de calcule care au loc succesiv. Fiecare operație se numește an nodul op și sunt conectate între ele.
Graficul conturează operațiunile și conexiunile dintre noduri. Cu toate acestea, nu afișează valorile. Marginea nodurilor este tensorul, adică o modalitate de a popula operația cu date.
graficele
TensorFlow folosește un cadru grafic. Graficul adună și descrie toate calculele serie efectuate în timpul antrenamentului. Graficul are multe avantaje:
- A fost făcut pentru a rula pe mai multe procesoare sau GPU-uri și chiar pe un sistem de operare mobil
- Portabilitatea graficului permite păstrarea calculelor pentru utilizare imediată sau ulterioară. Graficul poate fi salvat pentru a fi executat în viitor.
- Toate calculele din grafic sunt realizate prin conectarea tensoarelor
- Un tensor are un nod și o muchie. Nodul efectuează operația matematică și produce ieșiri ale punctelor finale. Muchiile marginile explică relațiile de intrare/ieșire dintre noduri.
De ce este TensorFlow popular?
TensorFlow este cea mai bună bibliotecă dintre toate, deoarece este construită pentru a fi accesibilă pentru toată lumea. Biblioteca Tensorflow încorporează diferite API pentru a construi la scară arhitectură de învățare profundă, cum ar fi CNN sau RNN. TensorFlow se bazează pe calculul grafic; permite dezvoltatorului să vizualizeze construcția rețelei neuronale cu Tensorboad. Acest instrument este util pentru depanarea programului. În cele din urmă, Tensorflow este construit pentru a fi implementat la scară. Funcționează pe CPU și GPU.
Tensorflow atrage cea mai mare popularitate pe GitHub în comparație cu celălalt cadru de învățare profundă.
TensorFlow Algorithms
Mai jos sunt algoritmii acceptați de TensorFlow:
În prezent, TensorFlow 1.10 are un API încorporat pentru:
- Regresie liniară: tf.estimator.LinearRegressor
- Clasificare:tf.estimator.LinearClassifier
- Clasificare de deep learning: tf.estimator.DNNClassifier
- Învățare profundă ștergere și deep: tf.estimator.DNNLinearCombinedClassifier
- Regresia arborelui de amplificare: tf.estimator.BoostedTreesRegressor
- Clasificare arborescentă îmbunătățită: tf.estimator.BoostedTreesClassifier
Cum funcționează calculele în TensorFlow
import numpy as np import tensorflow as tf
În primele două rânduri de cod, am importat tensorflow ca tf. Cu Python, este o practică obișnuită să folosiți un nume scurt pentru o bibliotecă. Avantajul este să evităm să introducem numele complet al bibliotecii atunci când trebuie să o folosim. De exemplu, putem importa tensorflow ca tf și apelăm tf atunci când dorim să folosim o funcție tensorflow
Să exersăm fluxul de lucru elementar al Tensorflow cu exemple simple TensorFlow. Să creăm un grafic de calcul care înmulțește două numere împreună.
În timpul exemplului, vom înmulți X_1 și X_2 împreună. Tensorflow va crea un nod pentru a conecta operația. În exemplul nostru, se numește înmulțire. Când graficul este determinat, motoarele de calcul Tensorflow se vor înmulți împreună X_1 și X_2.
În cele din urmă, vom rula o sesiune TensorFlow care va rula graficul de calcul cu valorile lui X_1 și X_2 și va imprima rezultatul înmulțirii.
Să definim nodurile de intrare X_1 și X_2. Când creăm un nod în Tensorflow, trebuie să alegem ce fel de nod să creăm. Nodurile X1 și X2 vor fi un nod substituent. Substituentul atribuie o nouă valoare de fiecare dată când facem un calcul. Le vom crea ca un nod substituent punct TF.
Pasul 1: Definiți variabila
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
Când creăm un nod substituent, trebuie să introducem tipul de date care va adăuga numere aici, astfel încât să putem folosi un tip de date în virgulă mobilă, să folosim tf.float32. De asemenea, trebuie să dăm un nume acestui nod. Acest nume va apărea când ne uităm la vizualizările grafice ale modelului nostru. Să numim acest nod X_1 prin trecerea unui parametru numit nume cu o valoare X_1 și acum să definim X_2 în același mod. X_2.
Pasul 2: Definiți calculul
multiply = tf.multiply(X_1, X_2, name = "multiply")
Acum putem defini nodul care face operația de înmulțire. În Tensorflow putem face asta prin crearea unui nod tf.multiply.
Vom trece în nodurile X_1 și X_2 la nodul de multiplicare. Îi spune tensorflow să conecteze acele noduri în graficul de calcul, așa că îi cerem să extragă valorile din x și y și să înmulțească rezultatul. Să dăm și nodului de înmulțire numele multiplicare. Este întreaga definiție pentru graficul nostru simplu de calcul.
Pasul 3: Executați operația
Pentru a executa operații în grafic, trebuie să creăm o sesiune. În Tensorflow, se realizează prin tf.Session(). Acum că avem o sesiune, putem cere sesiunii să execute operațiuni pe graficul nostru de calcul apelând sesiune. Pentru a rula calculul, trebuie să folosim run.
Când se execută operația de adăugare, va vedea că trebuie să preia valorile nodurilor X_1 și X_2, așa că trebuie să introducem și valori pentru X_1 și X_2. Putem face asta furnizând un parametru numit feed_dict. Transmitem valoarea 1,2,3 pentru X_1 și 4,5,6 pentru X_2.
Imprimăm rezultatele cu print(rezultat). Ar trebui să vedem 4, 10 și 18 pentru 1×4, 2×5 și 3×6
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2") multiply = tf.multiply(X_1, X_2, name = "multiply") with tf.Session() as session: result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]}) print(result)
[ 4. 10. 18.]
Opțiuni de încărcare a datelor în TensorFlow
Primul pas înainte de antrenament a algoritmul de învățare automată este să încărcați datele. Există două moduri comune de a încărca date:
1. Încărcați datele în memorie: Este cea mai simplă metodă. Încărcați toate datele în memorie ca o singură matrice. Puteți scrie a Python cod. Aceste linii de cod nu au legătură cu Tensorflow.
2. Conducta de date Tensorflow: Tensorflow are încorporat API care vă ajută să încărcați datele, să efectuați operația și să alimentați cu ușurință algoritmul de învățare automată. Această metodă funcționează foarte bine mai ales atunci când aveți un set de date mare. De exemplu, se știe că înregistrările de imagini sunt enorme și nu se potrivesc în memorie. Conducta de date gestionează singur memoria
Ce solutie sa folosesti?
Încărcați datele în memorie
Dacă setul de date nu este prea mare, adică mai puțin de 10 gigaocteți, puteți utiliza prima metodă. Datele se pot încadra în memorie. Puteți folosi o bibliotecă faimoasă numită Pandas pentru a importa fișiere CSV. Veți afla mai multe despre panda în următorul tutorial.
Încărcați date cu conducta Tensorflow
A doua metodă funcționează cel mai bine dacă aveți un set de date mare. De exemplu, dacă aveți un set de date de 50 de gigaocteți și computerul are doar 16 gigaocteți de memorie, atunci mașina se va bloca.
În această situație, trebuie să construiți o conductă Tensorflow. Conducta va încărca datele în lot sau în bucăți mici. Fiecare lot va fi împins în conductă și va fi pregătit pentru antrenament. Construirea unei conducte este o soluție excelentă, deoarece vă permite să utilizați calculul paralel. Înseamnă că Tensorflow va antrena modelul pe mai multe procesoare. Încurajează calculul și permite antrenamentul unei rețele neuronale puternice.
Veți vedea în tutorialele următoare cum să construiți o conductă semnificativă pentru a vă alimenta rețeaua neuronală.
Pe scurt, dacă aveți un set de date mic, puteți încărca datele în memorie cu biblioteca Pandas.
Dacă aveți un set de date mare și doriți să utilizați mai multe procesoare, atunci veți fi mai confortabil să lucrați cu pipeline Tensorflow.
Cum se creează o conductă TensorFlow
Iată pașii pentru a crea o conductă TensorFlow:
În exemplul de mai sus, am adăugat manual trei valori pentru X_1 și X_2. Acum, vom vedea cum să încărcăm datele în Tensorflow:
Pasul 1) Creați datele
În primul rând, să folosim biblioteca numpy pentru a genera două valori aleatorii.
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
[[0.8835775 0.23766977]]
Pasul 2) Creați substituent
Ca și în exemplul anterior, creăm un substituent cu numele X. Trebuie să specificăm în mod explicit forma tensorului. În cazul în care, vom încărca o matrice cu doar două valori. Putem scrie forma ca form=[1,2]
# using a placeholder x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Pasul 3) Definiți metoda setului de date
În continuare, trebuie să definim setul de date unde putem popula valoarea substituentului x. Trebuie să folosim metoda tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Pasul 4) Creați conducta
La pasul patru, trebuie să inițializam conducta în care vor curge datele. Trebuie să creăm un iterator cu make_initializable_iterator. Îl numim iterator. Apoi trebuie să apelăm acest iterator pentru a alimenta următorul lot de date, get_next. Numim acest pas get_next. Rețineți că în exemplul nostru, există un singur lot de date cu doar două valori.
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
Pasul 5) Executați operația
Ultimul pas este similar cu exemplul anterior. Initiem o sesiune si rulam iteratorul de operatie. Alimentam feed_dict cu valoarea generată de NumPy. Aceste două valori vor popula substituentul x. Apoi rulăm get_next pentru a imprima rezultatul.
with tf.Session() as sess: # feed the placeholder with data sess.run(iterator.initializer, feed_dict={ x: x_input }) print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Rezumat
- Sensul TensorFlow: TensorFlow este cea mai faimoasă bibliotecă de deep learning din ultimii ani. Un practicant care utilizează TensorFlow poate construi orice structură de învățare profundă, cum ar fi CNN, RNN sau o simplă rețea neuronală artificială.
- TensorFlow este folosit în cea mai mare parte de academicieni, startup-uri și companii mari. Google folosește TensorFlow în aproape toate produsele Google zilnice, inclusiv Gmail, Foto și Motorul de căutare Google.
- Echipa Google Brain a dezvoltat TensorFlow pentru a umple golul dintre cercetători și dezvoltatorii de produse. În 2015, au făcut public TensorFlow; este în creștere rapidă în popularitate. În prezent, TensorFlow este biblioteca de deep learning cu cele mai multe depozite de pe GitHub.
- Practicanții folosesc Tensorflow deoarece este ușor de implementat la scară. Este construit pentru a funcționa în cloud sau pe dispozitive mobile precum iOS și Android.
Tensorflow funcționează într-o sesiune. Fiecare sesiune este definită de un grafic cu calcule diferite. Un exemplu simplu poate fi înmulțirea la număr. În Tensorflow, sunt necesari trei pași:
- Definiți variabila
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definiți calculul
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Executați operația
with tf.Session() as session: result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]}) print(result)
O practică obișnuită în Tensorflow este crearea unei conducte pentru a încărca datele. Dacă urmați acești cinci pași, veți putea încărca date în TensorFLow:
- Creați datele
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
- Creați substituentul
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definiți metoda setului de date
dataset = tf.data.Dataset.from_tensor_slices(x)
- Creați conducta
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Executați programul
with tf.Session() as sess: sess.run(iterator.initializer, feed_dict={ x: x_input }) print(sess.run(get_next))