Theano vs TensorFlow: o comparație rapidă a cadrelor



Acest articol despre Theano vs TensorFlow vă va oferi o comparație scurtă și clară între cele două cadre și vă va ajuta să alegeți unul care vi se potrivește.

Era de Invatare profunda și este la apogeu. Se va crea 2,3 milioane Locuri de muncă până în 2020. Odată cu lansarea de noi cadre în fiecare lună, TensorFlow și Theano sunt acolo de ceva vreme și au câștigat și o popularitate bună. Deci, în acest articol Theano vs TensorFlow, voi discuta următoarele subiecte:

funcțiile care diferă doar în ceea ce privește tipul de returnare nu pot fi supraîncărcate

Ce este Theano?

Theano poate fi definit ca o bibliotecă pentru Calcul științific . A fost dezvoltat de Universitatea din Montréal și este disponibil din 2007.





theano-logo

Vă permite să definiți, să optimizați și să evaluați în mod eficient expresiile matematice care implică tablouri multi-dimensionale. Poate rula atât pe CPU, cât și pe GPU.



Ce este TensorFlow?

TensorFlow este o bibliotecă software open-source de Google Brain pentru programarea fluxului de date într-o serie de sarcini.

Este o bibliotecă de matematică simbolică care este utilizată pentru aplicații de învățare automată, cum ar fi .



Theano vs TensorFlow

Vom compara Theano vs TensorFlow pe baza următoarelor valori:

Popularitate:

Theano TensorFlow
Theano fiind un cadru vechi este nu atât de popular printre , Cercetători. A fost odatăTensorFlow este cu mâinile în jos cel mai celebru Deep Learning Framework și este utilizat în multe cercetări.

Viteza de execuție:

Theano TensorFlow
Efectuează sarcini mai repede decât TensorFlow. Mai ales sarcinile GPU unice rulează foarte repede în Theano.Viteza de execuție a TensorFlow este mai lentă în comparație cu Theano, dar în sarcinile multi-GPU este primul.

Beneficii tehnologice:

Theano TensorFlow
Suportă o gamă largă de operațiuni.

Theano calculează gradientul la determinarea eroare.

Aveți control deplin asupra Optimizatorilor, deoarece trebuie să codificați hard.

TensorFlow trebuie să vină la egalitate cu Theano.

Nu este cazul TensorFlow

Oferă acces la o mulțime de Optimizatori buni din cutie. Ceea ce face codificarea mai ușoară

Compatibilitate:

Theano TensorFlow
Keras, o uimitoare bibliotecă Deep Learning, este compatibilă cu Theano. Se integrează bine.

Are suport nativ pentru Windows.

De asemenea, acceptă ambalaje de nivel înalt, cum ar fi Lasagne.

Dar, în cazul TensorFlow, nu este încă acolo. Cu toate acestea, în v2.0 acest lucru nu va fi cazul.

În prezent, TensorFlow nu are acest suport.

Fără suport pentru Lasagne.

Asistență comunitară:

Theano TensorFlow
Theano are asistență comunitară mai mare, așa cum a apărut înainte de TensorFlow.

Are mai multe documentații decât TensorFlow

Asistența online a comunității TensorFlow crește rapid odată cu popularitatea sa.

Documentarea este relativ mai mică.

Citibilitatea codului:

Să comparăm Theano vs TensorFlow pe baza codului lor. Aici iau un exemplu de script de bază, în care vom prelua câteva date Phony și vom inițializa cea mai bună potrivire pentru aceste date, astfel încât să poată prezice puncte de date viitoare.

Codul Theano:

import theano import theano.tensor as T import numpy # Din nou, faceți 100 de puncte în numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Intializați modelul Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1.0, 1.0, (1, 2)), nume = 'W') y = W.dot (X) + b # Calculați gradienții WRT eroarea pătrată medie pentru fiecare cost al parametrului = T.mean (T.sqr (y - Y)) gradient W = T.grad (cost = cost, wrt = W) gradientB = T.grad (cost = cost, wrt = b) actualizări = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] train = theano.function (intrări = [X, Y], ieșiri = cost, actualizări = actualizări, allow_input_downcast = True) pentru i în xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Cod TensorFlow echivalent:

import tensorflow as tf import numpy as np # Faceți 100 de puncte de date false în NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Intrare aleatorie y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Construiți un model liniar. b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Minimizați erorile pătrate. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Pentru inițializarea variabilelor. init = tf.initialize_all_variables () # Lansați graficul ses = tf.Session () sess.run (init) # Montați planul. pentru pasul în xrange (0, 201): sess.run (tren) dacă pasul% 20 == 0: pasul de imprimare, sess.run (W), sess.run (b) # Învață cel mai bine potrivirea este W: [[0.100 0,200]], b: [0,300]

Lungime Înțeleaptă Ambele Cod sunt aproape Similar nu există prea multe diferențe. Două generate identic tablouri care descriu intrarea și ieșirea țintă. Dar dacă ne uităm la inițializarea modelului.

Inițializarea modelului:

# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random .uniform (-1.0, 1.0, (1, 2)), nume = 'W') y = punct W. (X) + b

După cum puteți vedea aici, TensorFlow nu necesită niciun tratament special pentru variabilele X și Y. Pe de altă parte, Theano necesită un efort suplimentar pentru a se asigura că variabilele sunt Intrări simbolice la Funcție. Definiția lui b și W este explicativă și, de asemenea, mai frumoasă.

Învățarea: optimizare

# Pierderea fluxului de tensiune = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano cost = T. înseamnă (T.sqr (y - Y)) # (1) gradient W = T.grad (cost = cost, wrt = W) # (2) gradient B = T.grad (cost = cost, wrt = b) # (2) actualizări = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] # (2) tren = theano.funcție (intrări = [X, Y], ieșiri = cost, actualizări = actualizări, allow_input_downcast = Adevărat) # (3)

Pentru (1) MSE este aproape la fel pentru Theano vs TensorFlow.

Pentru (2) Definirea Optimizator este ușor și simplu, așa cum se întâmplă în cazul TensorFlow, dar Theanno vă oferă o mulțime de control asupra optimizatorilor, deși este destul de lung și crește efortul de verificare.

Pentru (3) Funcția de instruire Codul este aproape similar

Corp de antrenament:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) for step in xrange (0, 201): sess.run (train) # Theano for i in xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Codul pentru instruire este aproape identic, dar încapsularea executării graficului în obiectul sesiunii este Conceptual mai curat decât Theano.

Verdict final: Theano vs TensorFlow

Într-o notă finală, se poate spune că ambele API-uri au un interfață similară . Dar TensorFlow este comparativ Mai ușor le folosiți deoarece oferă o mulțime de instrumente de monitorizare și depanare. Theano preia conducerea Utilizare și viteză , dar TensorFlow este mai potrivit pentru implementare. Hârtie sau Documentație pentru că Theano este mai mult decât TensorFlow și TensorFlow fiind un nou limbaj, oamenii nu au multe resurse, pentru început. Au existat biblioteci profunde open-source precum Keras, Lasagne și Blocks construit deasupra Theano.

Sper că această comparație a fost suficientă pentru ca dvs. să decideți pentru ce cadru să optați, verificaț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. Această instruire de certificare este organizată de profesioniști din industrie conform cerințelor și cerințelor industriei. Veți stăpâni concepte precum funcția SoftMax, rețelele neuronale cu autocoder, mașina restricționată Boltzmann (RBM) și veți lucra cu biblioteci precum Keras și TFLearn.

Ai o întrebare pentru noi? Vă rugăm să menționați acest lucru în secțiunea de comentarii din „Theano vs TensorFlow” și vă vom răspunde.