¿Qué tan bueno es TensorFlow como una biblioteca de aprendizaje profundo y qué otras bibliotecas se deben tener en cuenta?

Los empleados de Google que votan y responden una pregunta como esta me ponen, como entusiasta independiente de Deep Learning, un poco nervioso 🙂

Así que aquí hay una visión [con suerte] más equilibrada del mundo de las bibliotecas de Deep Learning tal como la conocemos.

[1] LUA Y SUS HIJOS :

Está Lua como Alexey publicó y tienes Torch y PyTorch. Al contrario de lo que la gente podría creer, Facebook, Twitter y otras partes lo están construyendo. Facebook abrió recientemente PyTorch de fuente.

Echa un vistazo a quién lo apoya y lo construye.

+ ves

  1. Fácil de leer y escribir.
  2. Se ejecuta en GPU
  3. Suficientes modelos pre-entrenados para jugar
  4. Y tienes PyTorch

-ves

  1. No hay suficiente respaldo comercial a pesar de su construcción.
  2. No hay una comunidad lo suficientemente grande para modelos más aceptados comercialmente. Esto podría cambiar ya que Nvidia, Salesforce está súper enfocada en sus clientes empresariales.

[2] PRINCESA THEANO y sus descendientes

Probablemente uno de los marcos de aprendizaje profundo más antiguos: nacido y criado en la academia y escrito en Python. Maneja arreglos multidimensionales como Numpy, etc. Se cree que es el más adecuado para la academia y la exploración de datos.

Muchas bibliotecas de aprendizaje profundo de código abierto como Keras, Lasagne, Blocks están construidas sobre él.

+ ves

  1. Python, el amor Numpy está ahí
  2. El gráfico de cálculo está bien, se adapta bastante bien a cosas como RNN
  3. Envolturas decentes de alto nivel para Keras, etc.

-ves

  1. Aún más voluminoso
  2. sin soporte multi-GPU
  3. Problemas al trabajar en entornos de nube

Como mencioné, sus descendientes son mucho más interesantes. miremos a sus hijos

PD: Alguien ha hecho un buen trabajo al comparar a Theano con otros aquí en Github.

[3] KERAS

Keras es una biblioteca decente de aprendizaje profundo que puede ejecutarse sobre Theano y Tensorflow. Tiene una API de Python genial desarrollada en líneas similares a Torch.

+ ves

  1. Cool Python API desarrollado inspirado en Torch. Proporciona una función de alto nivel, por ejemplo, aquí puede construir programáticamente su propio modelo.
  2. Bastante flexible: funciona con Theano, TensorFlow, CNTK, etc.
  3. Hay interés en la comunidad por su mayor crecimiento.
  4. Bastante simple para crear tus propios modelos.

importar keras.layers como L
importar keras.models como M

my_input = L.Input (shape = (100,))
intermedio = L.Dense (10, activación = ‘relu’) (my_input)
my_output = L.Dense (1, activación = ‘softmax’) (intermedio)

modelo = M.Modelo (input = my_input, output = my_output)

-ves

  1. Problemas de rendimiento informados detrás de TensorFlow
  2. Necesita hacer más trabajo para ganar el amor de la comunidad comercial. Hay mucha pasión en los desarrolladores y la investigación.
  3. El aprendizaje distribuido podría integrarse mejor.

* Te sugiero que busques lasaña y bloques tú mismo. También está Kur, que está construido sobre Keras.

[4] TensorFlow – El príncipe naciente del valle

Creado por Google y va más allá del aprendizaje profundo, en realidad admite herramientas para el aprendizaje de refuerzo, lo cual es bueno. Aún en desarrollo y sin saber qué tipo de aplicación comercial de TensorFlow vendrá, por ahora su aplicación en la propia nube de Google sería excelente para sus clientes de la nube, especialmente con TPU a medida.

+ ves

  1. Python, soporte Numpy
  2. Buena absracción gráfica computacional como su madrastra Theano.
  3. Tiempos de compilación rápidos que Theano
  4. Tensorboard es agradable, ¡realmente me encanta su funcionalidad!
  5. Extremadamente popular dentro de la comunidad de desarrollo a partir de 2017

-ves

  1. Todavía más lento que otros marcos
  2. Todavía no es antorcha como
  3. No hay suficientes modelos pre-entrenados para uso práctico (todos hemos ejecutado MNIST, Iris establece ahora)
  4. Sin respaldo comercial (además del hecho de que el mundo sabe que Google lo respalda)
  5. Entra y sale de Python para cargar cada conjunto de lotes, por lo que, en cuanto al rendimiento, aún queda trabajo por hacer.
  6. Todavía tiene muchas ganas de ver su aplicación comercial en la empresa, si alguna vez habrá alguna, por ejemplo, la escritura dinámica cuando se ejecutan grandes proyectos de desarrollo.

[5] Caffe y Caffe2

Caffe: Es bien conocido y ampliamente utilizado que portó el kit Matlab de Fast Convolutional Net a C y C ++. Aunque no – AFAIK, destinado a texto, audio, datos de series de tiempo.

+ ves

  1. Buenas redes de avance y procesamiento de imágenes.
  2. Modelos de trenes, no es necesario escribir código
  3. Es bueno tener una interfaz Python

-ves

  1. No es tan bueno para redes recurrentes
  2. ¿Puede manejar grandes redes? (ImageNet, GoogLeNet, etc.)
  3. Falta de amor comercial y empresarial
  4. ¿Sigue vivo?

Caffe2 , sin embargo, tiene alguna forma de respaldo de Facebook, tal vez porque su creador trabajó para ellos.

+ ves

  1. Es escalable
  2. Ligero
  3. Licencia BSD, eso ayuda.

-ves

  1. ¿Vendrá a las empresas?
  2. ¿Cuánto tiempo vivirá?

VER LISTA PARA MÍ

[1] CNTK de Microsoft : no escuchas mucho de ellos, pero probablemente hay más trabajo aquí de lo que puedes imaginar.

[2] MXNET – (adoptado por Amazon AWS y Apple también está construyendo secretamente cosas en su chip APU con él después de comprar la startup de Carlos llamada Turi)

Hay otros BigDL (Apache Spark), Paddle (liderado por Baidu), DyNet impulsado por Carnegie-Mellon, por supuesto, el propio motor Tensor DSSTNE de Amazon y estoy seguro de que vendrán muchos más.

PARA RESUMIR

Todavía son los primeros días, pero es bastante importante que los desarrolladores, las empresas y las partes comerciales elijan sabiamente tanto sus cargas de trabajo de desarrollo como de producción y adopten modelos que funcionen mejor para ellos.

El tiempo, después de todo, será el recurso más importante que tendremos que gestionar, ya que el ecosistema de Deep Learning explotará con bibliotecas, kits de herramientas e implementaciones de HW / SW.

Buena suerte y sigue aprendiendo #DailyLearningMode

Post Scriptum

En cuanto a una vista rápida de la comparación de Framework (Nota: Esto es de 2016)

y en cuanto a las opciones de diseño (también del mismo mazo, que puedes encontrar aquí)

¡Es impresionante! Pero mi respuesta puede ser parcial.

Hay muchas bibliotecas de aprendizaje profundo, algunas de las más populares son:

  • TensorFlow
  • Theano
  • Antorcha y PyTorch
  • Cafe

Cada una de estas bibliotecas tiene sus propias ventajas e inconvenientes. Hay personas que prefieren una sobre otra y puede encontrar múltiples comparaciones de bibliotecas de aprendizaje profundo en línea, por ejemplo, esta y otra.

Si tiene tiempo, le recomendaría probar varios marcos y decidir cuál funciona para usted.