Să începem acest tutorial cu introducerea TensorFlow:
Ce este TensorFlow?
TensorFlow este o platformă open-end end-to-end pentru crearea de aplicații Machine Learning. Este o bibliotecă de matematică simbolică care folosește fluxul de date și programarea diferențiată pentru a efectua diverse sarcini axate pe instruire și deducerea rețelelor neuronale profunde. Permite dezvoltatorilor să creeze aplicații de învățare automată folosind diverse instrumente, biblioteci și resurse ale comunității.
În prezent, cea mai renumită bibliotecă de învățare profundă 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, subtitrarea imaginilor sau recomandările.
Pentru a da un exemplu concret, utilizatorii Google pot experimenta o 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ă:
- Cercetători
- Oamenii de știință ai datelor
- Programatori.
Toți pot utiliza același set de instrumente pentru a colabora între ei și a-și îmbunătăți eficiența.
Google nu are doar date; au cel mai masiv computer din lume, așa că Tensor Flow a fost construit la scară. TensorFlow este o bibliotecă dezvoltată de Google Brain Team pentru a accelera învățarea automată și cercetarea profundă a rețelei neuronale.
A fost construit pentru a rula pe mai multe procesoare sau GPU-uri și chiar sisteme de operare mobile și are mai multe pachete în mai multe limbi precum Python, C ++ sau Java.
În acest tutorial TensorFlow, veți învăța
- Ce este TensorFlow?
- Istoria TensorFlow
- Cum funcționează TensorFlow
- Arhitectura TensorFlow
- Unde poate rula Tensorflow?
- Introducere în componentele TensorFlow
- De ce este popular TensorFlow?
- Lista algoritmilor proeminenți susținuți de TensorFlow
- Exemplu TensorFlow simplu
- Opțiuni pentru încărcarea datelor în TensorFlow
- Creați conducta Tensorflow
Istoria TensorFlow
Acum câțiva ani, învățarea profundă a început să depășească toate celelalte algoritmi de învățare automată atunci când a oferit 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 Tensorflow pentru a permite cercetătorilor și dezvoltatorilor să lucreze împreună pe un model de AI. Odată dezvoltat și scalat, permite multor oameni 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ța Apache Open Source. Îl puteți utiliza, modifica și redistribui versiunea modificată contra cost, 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ă creați grafice și structuri de flux de date pentru a defini modul în care datele se mișcă printr-un grafic luând intrări ca o matrice multidimensională numită Tensor. Vă permite să construiți o diagramă a operațiunilor care poate fi efectuată pe aceste intrări, care merge la un capăt și vine la celălalt capăt ca ieșire.
Arhitectura TensorFlow
Arhitectura Tensorflow funcționează în trei părți:
- Preprocesarea datelor
- Construiește modelul
- Antrenează și estimează modelul
Se numește Tensorflow, deoarece ia intrare ca o matrice multidimensională, cunoscută și sub numele de tensori . Puteți construi un fel de diagramă a operațiunilor (numită grafic) pe care doriți să o efectuați pe acea intrare. Intrarea intră într-un capăt și apoi trece prin acest sistem de operații multiple și iese celălalt capăt ca ieșire.
Acesta este motivul pentru care se numește TensorFlow, deoarece tensorul intră în el, trece printr-o listă de operații și apoi iese din cealaltă parte.
Unde poate rula Tensorflow?
Cerințele hardware și software TensorFlow pot fi clasificate în
Faza de dezvoltare: Acesta este momentul în care antrenezi modul. Instruirea se face de obicei pe desktop sau laptop.
Faza de alergare sau faza de inferență: Odată ce antrenamentul este finalizat, Tensorflow poate fi rulat pe mai multe platforme diferite. O puteți rula pe
- Desktop care rulează Windows, MacOS sau Linux
- Cloud ca serviciu web
- Dispozitive mobile precum iOS și Android
Puteți să-l antrenați pe mai multe mașini, apoi îl puteți rula pe o mașină diferită, odată ce aveți modelul instruit.
Modelul poate fi instruit ș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 era, de asemenea, foarte bun la operații matriciale și algebră, astfel încât le face foarte rapide pentru efectuarea acestor tipuri de calcule. Învățarea profundă se bazează pe o mulțime de multiplicare a matricei. TensorFlow este foarte rapid la calcularea multiplicării matricei, deoarece este scris în C ++. Deși este implementat în C ++, TensorFlow poate fi accesat și controlat în principal de alte limbi, Python.
În cele din urmă, o caracteristică semnificativă a TensorFlow este TensorBoard. TensorBoard permite monitorizarea grafică și vizuală a ceea ce face TensorFlow.
Introducere în componentele TensorFlow
Tensor
Numele Tensorflow este derivat direct din cadrul său principal: Tensor . În Tensorflow, toate calculele implică tensori. Un tensor este un vector sau matrice de n-dimensiuni care reprezintă toate tipurile de date. Toate valorile dintr - un tip de date tensor dețin identică cu o cunoscută (sau parțial cunoscută) de formă . Forma datelor este dimensionalitatea matricei sau a matricei.
Un tensor poate fi originar 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 calcul care are loc succesiv. Fiecare operație se numește nod op și este conectată una cu cealaltă.
Graficul prezintă opțiunile și conexiunile dintre noduri. Cu toate acestea, nu afișează valorile. Marginea nodurilor este tensorul, adică o modalitate de a completa operația cu date.
Grafice
TensorFlow folosește un cadru grafic. Graficul adună și descrie toate calculele de serie efectuate în timpul antrenamentului. Graficul are multe avantaje:
- S-a făcut pentru a rula pe mai multe procesoare sau GPU-uri și chiar 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 se realizează prin conectarea tensoarelor între ele
- Un tensor are un nod și o margine. Nodul efectuează operația matematică și produce ieșiri de puncte finale. Marginile marginile explică relațiile de intrare / ieșire între noduri.
De ce este popular TensorFlow?
TensorFlow este cea mai bună bibliotecă dintre toate, deoarece este construită pentru a fi accesibilă tuturor. Biblioteca Tensorflow încorporează diferite API-uri pentru arhitectura de învățare profundă la scară, cum ar fi CNN sau RNN. TensorFlow se bazează pe calculul graficului; 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ă.
Lista algoritmilor proeminenți susținuți de TensorFlow
Mai jos sunt listele de algoritmi TensorFlow acceptate:
În prezent, TensorFlow 1.10 are un API încorporat pentru:
- Regresie liniară: tf.estimator.LinearRegressor
- Clasificare: tf.estimator.LinearClassifier
- Clasificare a învățării profunde: tf.estimator.DNNClassifier
- Învățare profundă ștergeți și profunde: tf.estimator.DNNLinearCombinedClassifier
- Regresia arborelui de rapel: tf.estimator.BoostedTreesRegressor
- Clasificarea arborelui amplificat: tf.estimator.BoostedTreesClassifier
Exemplu TensorFlow simplu
import numpy as npimport tensorflow as tf
În primele două linii de cod, am importat tensorflow ca tf. Cu Python, este o practică obișnuită să folosești 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 putem apela tf atunci când dorim să folosim o funcție tensorflow
Să practică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 multiplica X_1 și X_2 împreună. Tensorflow va crea un nod pentru conectarea operației. În exemplul nostru, se numește multiplicare. Când graficul este determinat, motoarele de calcul Tensorflow se vor multiplica împreună X_1 și X_2.
Exemplu TensorFlow
În cele din urmă, vom rula o sesiune TensorFlow care va rula graficul de calcul cu valorile 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 de 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ă trecem în tipul de date care va adăuga numere aici, astfel încât să putem utiliza 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 atunci când ne uităm la vizualizările grafice ale modelului nostru. Să numim acest nod X_1 trecând un 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 multiplicare. În Tensorflow putem face acest lucru prin crearea unui nod tf.multiply.
Vom trece în nodurile X_1 și X_2 la nodul de multiplicare. Îi spune tensorflow să lege aceste 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, de asemenea, nodului de înmulțire numele multiplică. Este întreaga definiție pentru graficul nostru de calcul simplu.
Pasul 3: Executați operațiunea
Pentru a executa operațiuni în grafic, trebuie să creăm o sesiune. În Tensorflow, se face prin tf.Session (). Acum că avem o sesiune, putem cere sesiunii să ruleze operații pe graficul nostru de calcul apelând sesiunea. Pentru a rula calculul, trebuie să folosim run.
Când operația de adăugare rulează, va vedea că trebuie să preia valorile nodurilor X_1 și X_2, deci trebuie să alimentăm și valorile pentru X_1 și X_2. Putem face acest lucru furnizând un parametru numit feed_dict. Trecem valoarea 1,2,3 pentru X_1 și 4,5,6 pentru X_2.
Printăm rezultatele cu print (rezultat). Ar trebui să vedem 4, 10 și 18 pentru 1x4, 2x5 și 3x6
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 pentru încărcarea datelor în TensorFlow
Primul pas înainte de instruirea unui algoritm de învățare automată este încărcarea datelor. Există două moduri comune de încărcare a datelor:
1. Încărcați date în memorie: este cea mai simplă metodă. Vă încărcați toate datele în memorie ca o singură matrice. Puteți scrie un cod Python. Aceste linii de cod nu au legătură cu Tensorflow.
2. Conducta de date Tensorflow. Tensorflow are un API încorporat 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 încadrează în memorie. Conducta de date gestionează singură memoria
Ce soluție să folosești?
Încărcați date în memorie
Dacă setul dvs. 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 utiliza o bibliotecă renumită numită Pandas pentru a importa fișiere CSV. Veți afla mai multe despre panda în următorul tutorial.
Încărcați datele 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, iar computerul dvs. are doar 16 gigaocteți de memorie, atunci mașina se va prăbuși.
În această situație, trebuie să construiți o conductă Tensorflow. Conducta va încărca datele în lot sau într-o bucată mică. Fiecare lot va fi împins la conductă și va fi pregătit pentru antrenament. Construirea unei conducte este o soluție excelentă, deoarece vă permite să utilizați calcul paralel. Înseamnă că Tensorflow va antrena modelul pe mai multe procesoare. Încurajează calculul și permite formarea unei rețele neuronale puternice.
Veți vedea în următoarele tutoriale despre 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 conducta Tensorflow.
Creați conducta Tensorflow
În exemplul anterior, adăugăm manual trei valori pentru X_1 și X_2. Acum vom vedea cum să încărcăm date pe Tensorflow.
Pasul 1) Creați datele
În primul rând, să folosim biblioteca numpy pentru a genera două valori aleatorii.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0.8835775 0.23766977]]
Pasul 2) Creați substituentul
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 placeholderx = 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 în care 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țializăm conducta unde 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. Denumim 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țiunea
Ultimul pas este similar cu exemplul anterior. Inițiem o sesiune și rulăm iteratorul de operații. Alimentăm 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 datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
rezumat
TensorFlow înseamnă: TensorFlow este cea mai faimoasă bibliotecă de învățare profundă din ultimii ani. Un practicant care utilizează TensorFlow poate construi orice structură de învățare profundă, cum ar fi CNN, RNN sau o rețea neuronală artificială simplă.
TensorFlow este utilizat în cea mai mare parte de academicieni, start-up-uri și companii mari. Google utilizează TensorFlow în aproape toate produsele zilnice Google, inclusiv Gmail, Photo și Google Search Engine.
Echipa Google Brain a dezvoltat TensorFlow pentru a umple golul dintre cercetători și dezvoltatorii de produse. În 2015, au făcut public TensorFlow; crește rapid în popularitate. În prezent, TensorFlow este biblioteca de învățare profundă cu cele mai multe depozite pe GitHub.
Practicanții folosesc Tensorflow, deoarece este ușor de implementat la scară largă. 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ă printr-un grafic cu calcule diferite. Un exemplu simplu poate fi multiplicarea cu numărul. Î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țiunea
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 încărcarea datelor. Dacă urmați acești cinci pași, veți putea încărca date pe TensorFLow
- Creați datele
import numpy as npx_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))