Theano vs TensorFlow: una comparación rápida de marcos



Este artículo sobre Theano vs TensorFlow le proporcionará una comparación breve y nítida entre los dos Frameworks y lo ayudará a elegir el que más le convenga.

La era de Aprendizaje profundo y está en su apogeo. Va a crear 2,3 millones Trabajos para 2020. Con nuevos frameworks que surgen cada mes, TensorFlow y Theano han estado ahí por un tiempo y también han ganado una buena cantidad de popularidad. Entonces, en este artículo de Theano vs TensorFlow, discutiré los siguientes temas:

¿Qué es Theano?

Theano se puede definir como una biblioteca para Computación científica . Fue desarrollado por la Université de Montréal y está disponible desde 2007.





theano-logo

Le permite definir, optimizar y evaluar expresiones matemáticas que involucran matrices multidimensionales de manera eficiente. Puede ejecutarse tanto en CPU como en GPU.



¿Qué es TensorFlow?

TensorFlow es una biblioteca de software de código abierto de Google Brain para la programación del flujo de datos en una variedad de tareas.

estructuras de datos y algoritmos en java tutorial

Es una biblioteca matemática simbólica que se utiliza para aplicaciones de aprendizaje automático como .



Theano vs TensorFlow

Compararemos Theano con TensorFlow según las siguientes métricas:

Popularidad:

Theano TensorFlow
Theano siendo un Framework antiguo es no tan popular entre , Investigadores. Fue una vezTensorFlow es sin duda el más famoso Deep Learning Framework y se utiliza en muchas investigaciones.

Velocidad de ejecución:

Theano TensorFlow
Realiza tareas más rápido que TensorFlow. Especialmente las tareas de una sola GPU se ejecutan, muy rápido en Theano.La velocidad de ejecución de TensorFlow es más lenta en comparación con Theano, pero en las tareas de múltiples GPU toma la delantera.

Beneficios tecnológicos:

Theano TensorFlow
Admite una amplia gama de operaciones.

Theano calcula el gradiente al determinar el error.

Tienes control total sobre los optimizadores, ya que tienes que codificarlo de forma rígida.

TensorFlow todavía tiene que estar a la par con Theano.

Ese no es el caso de TensorFlow

Da acceso a muchos buenos optimizadores listos para usar. Lo que facilita la codificación

Compatibilidad:

Theano TensorFlow
Keras, una increíble biblioteca de aprendizaje profundo, es compatible con Theano. Se integra bien.

Tiene soporte nativo de Windows.

También es compatible con envoltorios de alto nivel como lasaña.

Pero en el caso de TensorFlow, todavía no ha llegado. Sin embargo, en la v2.0 este no será el caso.

Actualmente, TensorFlow carece de este soporte.

No hay soporte para lasaña.

Soporte comunitario:

Theano TensorFlow
Theano tiene un soporte comunitario más grande, ya que llegó mucho antes de TensorFlow.

Tiene más documentación que TensorFlow

El soporte de la comunidad en línea de TensorFlow está aumentando rápidamente con su popularidad.

cómo crear una matriz de objetos en java

La documentación es comparativamente menor.

Legibilidad del código:

Comparemos Theano vs TensorFlow según su código. Aquí estoy tomando un script de ejemplo básico donde tomaremos algunos datos falsos e inicializaremos el mejor ajuste para esos datos para que pueda predecir puntos de datos futuros.

Código Theano:

es sas un lenguaje de programación
import theano import theano.tensor as T import numpy # Nuevamente, haga 100 puntos en numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Inicializar el modelo 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 # Calcule los gradientes WRT el error cuadrático medio para cada parámetro costo = T.medio (T.sqr (y - Y)) gradienteW = T.grad (costo = costo, wrt = W) gradienteB = T.grad (costo = costo, wrt = b) actualizaciones = [[W, W - gradienteW * 0.5], [b, b - gradientB * 0.5]] tren = theano.function (entradas = [X, Y], salidas = costo, actualizaciones = actualizaciones, allow_input_downcast = True) para i en xrange (0, 201): tren (x_data, y_data) imprimir W.get_value (), b.get_value ()

Código TensorFlow equivalente:

import tensorflow as tf import numpy as np # Crea 100 puntos de datos falsos en NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Entrada aleatoria y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Construya un modelo 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 # Minimiza los errores al cuadrado. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Para inicializar las variables. init = tf.initialize_all_variables () # Lanzar el gráfico sess = tf.Session () sess.run (init) # Ajustar el plano. para el paso en xrange (0, 201): sess.run (entrenar) if step% 20 == 0: print step, sess.run (W), sess.run (b) # Aprende que el mejor ajuste es W: [[0.100 0,200]], b: [0,300]

Longitud sabia Tanto el Código son casi Similar no hay mucha diferencia. Dos generados de forma idéntica matrices que describen la entrada y la salida de destino. Pero si echamos un vistazo a Model Initialization.

Inicialización del modelo:

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

Como puede ver aquí, TensorFlow no requiere ningún tratamiento especial de las variables X e Y. Por otro lado, Theano requiere un esfuerzo adicional para asegurarse de que las variables sean Entradas simbólicas a la Función. La definición de by W es explicativa y también más agradable.

El aprendizaje: optimización

# 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.media (T.sqr (y - Y)) # (1) gradienteW = T.grad (costo = costo, wrt = W) # (2) gradienteB = T.grad (costo = costo, wrt = b) # (2) actualizaciones = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) train = theano.function (input = [X, Y], outputs = cost, updates = actualizaciones, allow_input_downcast = True) # (3)

Para (1) el MSE es casi lo mismo para Theano vs TensorFlow.

Para (2) Definir el Optimizador es fácil y simple en el caso de TensorFlow, pero Theanno le brinda una gran cantidad de control sobre los optimizadores, aunque es bastante largo y aumenta el esfuerzo de verificación.

Para 3) Función de entrenamiento el código es casi similar

Cuerpo de entrenamiento:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) para el paso en xrange (0, 201): sess.run (train) # Theano para i en xrange (0, 201): tren (x_data, y_data) imprimir W.get_value (), b.get_value ()

El código para el entrenamiento es casi idéntico, pero encapsular la ejecución del gráfico en el objeto de sesión es Conceptualmente más limpio que Theano.

Veredicto final: Theano vs TensorFlow

En una nota final, se puede decir que ambas API tienen una interfaz similar . Pero TensorFlow es comparativamente Más fácil que usa, ya que proporciona muchas herramientas de monitoreo y depuración. Theano toma la delantera en Usabilidad y Velocidad , pero TensorFlow es más adecuado para la implementación. Papeleo o Documentación para Theano es más que TensorFlow y TensorFlow es un idioma nuevo, la gente no tiene muchos recursos, para empezar. Bibliotecas profundas de código abierto como Keras, Lasagne y Blocks se han construido encima de Theano.

Espero que esta comparación haya sido suficiente para que decida por qué marco optar, consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. Esta capacitación de certificación está organizada por profesionales de la industria según los requisitos y demandas de la industria. Dominará los conceptos como la función SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) y trabajará con bibliotecas como Keras & TFLearn.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de 'Theano vs TensorFlow' y nos comunicaremos con usted.