Theano vs TensorFlow: une comparaison rapide des cadres



Cet article sur Theano vs TensorFlow vous fournira une comparaison courte et nette entre les deux Frameworks et vous aidera à choisir celui qui vous convient.

L'ère de L'apprentissage en profondeur et est à son apogée. Ça va créer 2,3 millions Emplois d'ici 2020. Avec de nouveaux frameworks à venir chaque mois, TensorFlow et Theano sont là depuis un certain temps et ont également gagné en popularité. Dans cet article Theano vs TensorFlow, je vais donc aborder les sujets suivants:

Qu'est-ce que Theano?

Theano peut être défini comme une bibliothèque pour Calcul scientifique . Il a été développé par l'Université de Montréal et est disponible depuis 2007.





theano-logo

Il vous permet de définir, d'optimiser et d'évaluer efficacement des expressions mathématiques impliquant des tableaux multidimensionnels. Il peut fonctionner à la fois sur CPU et GPU.



Qu'est-ce que TensorFlow?

TensorFlow est une bibliothèque de logiciels open source de Google Brain pour la programmation de flux de données sur une gamme de tâches.

Il s'agit d'une bibliothèque mathématique symbolique utilisée pour les applications d'apprentissage automatique telles que .



Theano contre TensorFlow

Nous comparerons Theano vs TensorFlow sur la base des métriques suivantes:

Popularité:

Theano TensorFlow
Theano étant un ancien Framework est pas si populaire parmi , Des chercheurs. Il était une foisTensorFlow est sans conteste le le plus célèbre Deep Learning Framework et est utilisé dans de nombreuses recherches.

Vitesse d'exécution:

Theano TensorFlow
Effectue des tâches plus rapidement que TensorFlow. Surtout les tâches GPU uniques s'exécutent très rapidement dans Theano.La vitesse d'exécution de TensorFlow est plus lente que celle de Theano, mais dans les tâches multi-GPU, il prend les devants.

Avantages technologiques:

Theano TensorFlow
Il prend en charge un large éventail d'opérations.

exemple d'arguments de ligne de commande java

Theano calcule le gradient lors de la détermination du Erreur.

Vous avez un contrôle total sur les optimiseurs car vous devez le coder en dur.

TensorFlow doit encore être à égalité avec Theano.

Ce n’est pas le cas pour TensorFlow

Il donne accès à de nombreux bons optimiseurs prêts à l'emploi. Ce qui facilite le codage

Compatibilité:

Theano TensorFlow
Keras, une incroyable bibliothèque d'apprentissage en profondeur, est compatible avec Theano. Il s'intègre bien.

Il a un support Windows natif.

Il prend également en charge les emballages de haut niveau comme les lasagnes.

Mais dans le cas de TensorFlow, ce n’est pas encore tout à fait là. Cependant, dans la version 2.0, ce ne sera pas le cas.

Actuellement, TensorFlow ne dispose pas de ce support.

Pas de support pour les lasagnes.

Soutien communautaire:

tri par algorithme c ++

Theano TensorFlow
Theano dispose d'un support communautaire plus important tel qu'il était avant TensorFlow.

Il a plus de documentation que TensorFlow

Le support de la communauté en ligne de TensorFlow augmente rapidement avec sa popularité.

La documentation est comparativement moindre.

Lisibilité du code:

Comparons Theano vs TensorFlow en fonction de leur code. Ici, je prends un exemple de script de base où nous allons prendre des données Phony et initialiser le meilleur ajustement pour ces données afin qu'il puisse prédire les points de données futurs.

Code Theano:

import theeano import theano.tensor as T import numpy # Encore une fois, faites 100 points dans numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Initialiser le modèle 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 # Calculer les gradients WRT l'erreur quadratique moyenne pour chaque paramètre coût = 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 - gradientB * 0.5]] train = theano.function (inputs = [X, Y], output = cost, updates = updates, allow_input_downcast = True) pour i dans xrange (0, 201): train (x_data, y_data) affiche W.get_value (), b.get_value ()

Code TensorFlow équivalent:

import tensorflow en tant que tf import numpy en tant que np # Créez 100 faux points de données dans NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Entrée aléatoire y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Construire un modèle linéaire. 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 # Minimisez les erreurs au carré. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Pour initialiser les variables. init = tf.initialize_all_variables () # Lancer le graphe sess = tf.Session () sess.run (init) # Ajuster le plan. pour l'étape dans xrange (0, 201): sess.run (train) if step% 20 == 0: print step, sess.run (W), sess.run (b) # Apprend que le meilleur ajustement est W: [[0.100 0,200]], b: [0,300]

Longueur sage Le code est presque Similaire il n'y a pas beaucoup de différence. Deux générés de manière identique tableaux décrivant l'entrée et la sortie cible. Mais si nous jetons un coup d'œil à l'initialisation du modèle.

Initialisation du modèle:

# 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)), nom = 'W') y = W.dot (X) + b

Comme vous pouvez le voir ici, TensorFlow ne nécessite aucun traitement spécial des variables X et Y. D'autre part, Theano nécessite un effort supplémentaire pour s'assurer que les variables sont Entrées symboliques à la fonction. La définition de b et W est explicative et également plus agréable.

L'apprentissage: l'optimisation

# 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) gradientW = T.grad (coût = coût, wrt = W) # (2) gradientB = T.grad (coût = coût, wrt = b) # (2) updates = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) train = theano.function (inputs = [X, Y], output = cost, updates = mises à jour, allow_input_downcast = True) # (3)

Pour (1) le MSE est presque la même chose pour Theano vs TensorFlow.

Pour (2) définir le Optimiseur est facile et simple comme c'est le cas dans le cas de TensorFlow, mais Theanno vous donne beaucoup de contrôle sur les optimiseurs bien que cela soit assez long et augmente l'effort de vérification.

Pour 3) Fonction de formation le code est presque similaire

Organisme d'entraînement:

taille d'un tableau javascript
# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) pour l'étape dans xrange (0, 201): sess.run (train) # Theano pour i dans xrange (0, 201): train (x_data, y_data) affiche W.get_value (), b.get_value ()

Le code pour la formation est presque identique, mais l'encapsulation de l'exécution du graphique dans l'objet de session est Conceptuellement plus propre que Theano.

Verdict final: Theano contre TensorFlow

En conclusion, on peut dire que les deux API ont un Interface similaire . Mais TensorFlow est comparativement Plus facile yo utiliser car il fournit de nombreux outils de surveillance et de débogage. Theano prend les devants Convivialité et rapidité , mais TensorFlow est mieux adapté au déploiement. Paperasse ou Documentation pour Theano est plus que TensorFlow et TensorFlow étant un nouveau langage, les gens n'ont pas beaucoup de ressources, pour commencer. Des bibliothèques profondes open source telles que Keras, Lasagne et Blocks ont été construit au-dessus de Theano.

J'espère que cette comparaison vous a suffi pour décider quel framework opter pour, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Cette formation de certification est organisée par des professionnels de l'industrie conformément aux exigences et aux demandes de l'industrie. Vous maîtriserez les concepts tels que la fonction SoftMax, les réseaux de neurones Autoencoder, la machine Boltzmann restreinte (RBM) et travaillerez avec des bibliothèques telles que Keras et TFLearn.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de «Theano vs TensorFlow» et nous vous répondrons.