Theano vs TensorFlow: una ràpida comparació de marcs

Aquest article sobre Theano vs TensorFlow us proporcionarà una comparació breu i nítida entre els dos Frameworks i us ajudarà a triar el que més us convingui.

L'era de Aprenentatge profund i està en el seu apogeu. Es crearà 2,3 milions Treballs fins al 2020. Amb els nous marcs que apareixen cada mes, TensorFlow i Theano hi han estat durant un temps i també han guanyat una bona popularitat. Per tant, en aquest article de Theano vs TensorFlow, parlaré dels temes següents:



estructura de dades de cua a Java

Què és Theano?

Theano es pot definir com una biblioteca per a Informàtica científica . Va ser desenvolupat per la Universitat de Mont-real i està disponible des del 2007.



theano-logo

Permet definir, optimitzar i avaluar expressions matemàtiques que impliquen matrius multidimensionals de manera eficient. Pot funcionar tant amb CPU com amb GPU.



Què és TensorFlow?

TensorFlow és una biblioteca de programari de codi obert de Google Brain per a la programació de flux de dades en diverses tasques.

És una biblioteca de matemàtiques simbòlica que s'utilitza per a aplicacions d'aprenentatge automàtic com .



Theano contra TensorFlow

Compararem Theano contra TensorFlow en funció de les mètriques següents:

Popularitat:

Theano TensorFlow
Que Theano sigui un marc antic és no tan popular entre , Investigadors. Era una vegadaTensorFlow és el més famosa Deep Learning Framework i s’utilitza en moltes investigacions.

Velocitat d'execució:

Theano TensorFlow
Realitza tasques més ràpid que TensorFlow. Especialment les tasques de GPU individuals s’executen molt ràpidament a Theano.La velocitat d’execució de TensorFlow és més lenta en comparació amb Theano, però a les tasques multi-GPU és el líder.

Avantatges tecnològics:

Theano TensorFlow
Admet una àmplia gamma d'operacions.

Theano calcula el gradient en determinar el error.

Teniu el control total sobre Optimitzadors, ja que heu de codificar-lo de manera dura.

TensorFlow encara ha de coincidir amb Theano.

Aquest no és el cas de TensorFlow

Dóna accés a molts bons Optimitzadors. La qual cosa facilita la codificació

Compatibilitat:

Theano TensorFlow
Keras, una increïble biblioteca d'aprenentatge profund, és compatible amb Theano. S’integra bé.

Compta amb suport natiu de Windows.

També admet embolcalls d’alt nivell com la lasanya.

Però, en el cas de TensorFlow, encara no hi és. Tanmateix, a la v2.0 no serà així.

Actualment, TensorFlow no té aquest suport.

No hi ha suport per a la lasanya.

Suport a la comunitat:

Theano TensorFlow
Theano té suport comunitari més gran, ja que va arribar abans de TensorFlow.

Té més documentació que TensorFlow

El suport en línia de la comunitat de TensorFlow augmenta ràpidament amb la seva popularitat.

La documentació és comparativament menor.

Llegibilitat del codi:

Comparem Theano contra TensorFlow en funció del seu codi. Aquí estic prenent un exemple d’escriptura bàsica on agafarem algunes dades falses i inicialitzarem el millor ajust per a aquestes dades perquè pugui predir punts de dades futurs.

Codi Theano:

import theano import theano.tensor as T import numpy # De nou, marqueu 100 punts a numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Intialitzar el model Theano X = T. matriu () 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 # Calculeu els gradients WRT l'error mig al quadrat per a cada cost del paràmetre = T.mean (T.sqr (y - Y)) gradient W = T.grad (cost = cost, wrt = W) gradient B = T.grad (cost = cost, wrt = b) actualitzacions = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] train = theano.function (entrades = [X, Y], sortides = cost, actualitzacions = actualitzacions, allow_input_downcast = True) per a i en xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Codi TensorFlow equivalent:

import tensorflow as tf import numpy as np # Feu 100 punts de dades falsos a NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Entrada aleatòria y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Construeix un model lineal. 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 # Minimitzeu els errors al quadrat. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Per inicialitzar les variables. init = tf.initialize_all_variables () # Inicia el gràfic sess = tf.Session () sess.run (init) # Encaixa el pla. per al pas en xrange (0, 201): sess.run (tren) si el pas% 20 == 0: pas d'impressió, sess.run (W), sess.run (b) # Aprèn que el millor ajust és W: [[0.100 0,200]], b: [0,300]

Longitud savi Tant el Codi és gairebé Similar no hi ha molta diferència. Dos generats idènticament matrius que descriuen l'entrada i la sortida objectiu. Però si fem una ullada a la inicialització del model.

Inicialització del model:

# 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 .uniforme (-1,0, 1,0, (1, 2)), nom = 'W') y = punt W. (X) + b

Com podeu veure aquí, TensorFlow no requereix cap tractament especial de les variables X i Y. D'altra banda, Theano requereix un esforç addicional per assegurar-se que les variables són Entrades simbòliques a la funció. La definició de b i W és explicativa i també més agradable.

L’aprenentatge: optimització

# 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. significa (T.sqr (y - Y)) # (1) gradient W = T.grad (cost = cost, wrt = W) # (2) gradient B = T.grad (cost = cost, wrt = b) # (2) actualitzacions = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] # (2) train = theano.function (entrades = [X, Y], sortides = cost, actualitzacions = actualitzacions, allow_input_downcast = True) # (3)

Per a (1) MSE és gairebé el mateix per a Theano contra TensorFlow.

Per a (2) Definir el fitxer Optimitzador és fàcil i senzill com es fa en el cas de TensorFlow, però Theanno us proporciona un gran control sobre els Optimitzadors, tot i que és molt llarg i augmenta l’esforç de verificació.

Per a (3) Funció d'entrenament el Codi és gairebé similar

Cos d'entrenament:

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

El codi per a la formació és gairebé idèntic, però sí que és l'encapsulament de l'execució de gràfics a l'objecte de sessió Conceptualment més net que Theano.

Veredicte final: Theano contra TensorFlow

En una nota final, es pot dir que les dues API tenen un interfície similar . Però TensorFlow és comparativament més fàcil Feu servir, ja que proporciona moltes eines de control i depuració. Theano pren la iniciativa Usabilitat i velocitat , però TensorFlow és més adequat per al desplegament. Tràmits o Documentació ja que Theano és més que TensorFlow i que TensorFlow és un nou idioma, la gent no té molts recursos, per començar. Hi ha hagut biblioteques de codi obert com Keras, Lasagne i Blocks construït damunt Theano.

Espero que aquesta comparació hagi estat suficient perquè decidiu per quin marc optar, consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. Aquesta formació en certificació està comissariada per professionals de la indústria segons els requisits i exigències de la indústria. Dominarà conceptes com ara la funció SoftMax, les xarxes neuronals del codificador automàtic, la màquina restringida de Boltzmann (RBM) i treballareu amb biblioteques com Keras i TFLearn.

Tens alguna pregunta? Esmenteu-lo a la secció de comentaris de 'Theano vs TensorFlow' i us respondrem.