Theano vs TensorFlow: un rapido confronto dei framework



Questo articolo su Theano vs TensorFlow ti fornirà un confronto breve e nitido tra i due Framework e ti aiuterà a scegliere quello che fa per te.

L'era di Apprendimento approfondito e è al suo apice. Sta per creare 2,3 milioni Posti di lavoro entro il 2020. Con i nuovi framework in arrivo ogni mese, TensorFlow e Theano sono lì da un po 'e hanno anche guadagnato una buona dose di popolarità. Quindi in questo articolo di Theano vs TensorFlow, tratterò i seguenti argomenti:

Cos'è Theano?

Theano può essere definito come una libreria per Informatica scientifica . È stato sviluppato dall'Université de Montréal ed è disponibile dal 2007.





theano-logo

Consente di definire, ottimizzare e valutare espressioni matematiche che coinvolgono array multidimensionali in modo efficiente. Può funzionare sia su CPU che su GPU.



Cos'è TensorFlow?

TensorFlow è una libreria software open source di Google Brain per la programmazione del flusso di dati in una vasta gamma di attività.

È una libreria matematica simbolica che viene utilizzata per applicazioni di apprendimento automatico come .



Theano vs TensorFlow

Confronteremo Theano e TensorFlow in base alle seguenti metriche:

Popolarità:

browser db per tutorial sqlite

Theano TensorFlow
Essendo Theano un vecchio Framework lo è non così popolare tra , Ricercatori. C'era una voltaTensorFlow è senza dubbio il il più famoso Deep Learning Framework ed è utilizzato in molte ricerche.

Velocità di esecuzione:

Theano TensorFlow
Esegue attività più velocemente di TensorFlow. Soprattutto le singole attività GPU vengono eseguite, molto velocemente a Theano.La velocità di esecuzione di TensorFlow è più lenta rispetto a Theano, ma nelle attività multi-GPU prende il comando.

Vantaggi tecnologici:

Theano TensorFlow
Supporta un'ampia gamma di operazioni.

Theano calcola il gradiente quando determina il errore.

Hai il pieno controllo sugli ottimizzatori poiché devi codificarlo.

TensorFlow deve ancora essere alla pari con Theano.

Non è il caso di TensorFlow

Dà accesso a molti buoni ottimizzatori fuori dagli schemi. Il che rende la codifica più semplice

Compatibilità:

Theano TensorFlow
Keras un'incredibile libreria di apprendimento profondo è compatibile con Theano. Si integra bene.

Ha il supporto nativo di Windows.

differenza tra classe e interfaccia in java

Supporta anche wrapper di alto livello come le lasagne.

Ma nel caso di TensorFlow, non è ancora del tutto lì. Tuttavia, nella v2.0 questo non sarà il caso.

Attualmente, TensorFlow non dispone di questo supporto.

Nessun supporto per le lasagne.

Supporto della comunità:

Theano TensorFlow
Theano ha il supporto della community più grande in quanto è venuto prima di TensorFlow.

Ha più documentazione di TensorFlow

Il supporto della community online di TensorFlow sta aumentando rapidamente con la sua popolarità.

La documentazione è relativamente minore.

Leggibilità del codice:

Confrontiamo Theano e TensorFlow in base al loro codice. Qui sto prendendo uno script di esempio di base in cui prenderemo alcuni dati fasulli e inizializzeremo l'adattamento migliore per quei dati in modo che possa prevedere i punti dati futuri.

Codice Theano:

importa theano importa theano.tensor come T import numpy # Di nuovo, crea 100 punti in numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Inizializza il modello 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)), name = 'W') y = W.dot (X) + b # Calcola i gradienti WRT l'errore quadratico medio per ogni parametro cost = T.mean (T.sqr (y - Y)) gradientW = T.grad (cost = cost, wrt = W) gradientB = T.grad (cost = cost, wrt = b) updates = [[W, W - gradientW * 0,5], [b, b - gradienteB * 0,5]] train = theano.function (input = [X, Y], output = cost, updates = updates, allow_input_downcast = True) for i in xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Codice TensorFlow equivalente:

importa tensorflow come tf importa numpy come np # Crea 100 punti dati fasulli in NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Input casuale y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Costruisci un modello lineare. 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 # Riduci al minimo gli errori al quadrato. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Per inizializzare le variabili. init = tf.initialize_all_variables () # Lancia il grafico sess = tf.Session () sess.run (init) # Adatta il piano. for step in xrange (0, 201): sess.run (train) if step% 20 == 0: print step, sess.run (W), sess.run (b) # Apprende che la misura migliore è W: [[0.100 0,200]], b: [0,300]

Lunghezza saggia Entrambi i codici sono quasi Simile non c'è molta differenza. Due generati in modo identico array che descrivono l'input e l'output di destinazione. Ma se diamo uno sguardo all'inizializzazione del modello.

Inizializzazione del modello:

diff tra hashmap e hashtable
# 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)), name = 'W') y = W.dot (X) + b

Come puoi vedere qui, TensorFlow non richiede alcun trattamento speciale delle variabili X e Y. D'altra parte, Theano richiede uno sforzo in più per assicurarsi che le variabili siano Input simbolici alla funzione. La definizione di be W è esplicativa e anche più carina.

L'apprendimento: ottimizzazione

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano cost = T.mean (T.sqr (y - Y)) # (1) gradiente W = T.grad (costo = costo, rispetto = W) # (2) gradienteB = T.grad (costo = costo, rispetto = b) # (2) aggiornamenti = [[W, W - gradienteW * 0,5], [b, b - gradienteB * 0,5]] # (2) train = theano.function (input = [X, Y], output = cost, updates = aggiornamenti, allow_input_downcast = True) # (3)

Per (1) il MSE è quasi lo stesso per Theano vs TensorFlow.

Per (2) Definire il Optimizer è facile e semplice come nel caso di TensorFlow, ma Theanno ti dà una grande quantità di controllo sugli ottimizzatori anche se è piuttosto lungo e aumenta lo sforzo di verifica.

Per (3) Funzione di allenamento il codice è quasi simile

Corpo di formazione:

# 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 ()

Il codice per la formazione è quasi identico, ma l'incapsulamento dell'esecuzione del grafico nell'oggetto sessione lo è Concettualmente più pulito di Theano.

Verdetto finale: Theano vs TensorFlow

In una nota conclusiva, si può affermare che entrambe le API hanno l'estensione Interfaccia simile . Ma TensorFlow è comparativamente Più facile si usa in quanto fornisce molti strumenti di monitoraggio e debug. Theano prende il comando Usabilità e velocità , ma TensorFlow è più adatto per la distribuzione. Documenti o Documentazione perché Theano è più di TensorFlow e TensorFlow è una nuova lingua, tanto per cominciare le persone non hanno molte risorse. Le biblioteche profonde open source come Keras, Lasagne e Blocks sono state costruito sopra Theano.

Spero che questo confronto sia stato sufficiente per decidere quale framework scegliere, controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Questo corso di certificazione è curato da professionisti del settore secondo i requisiti e le richieste del settore. Imparerai concetti come la funzione SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) e lavorerai con librerie come Keras e TFLearn.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di 'Theano vs TensorFlow' e ti risponderemo.