¿Cuáles son las diferencias, similitudes, pros, contras, aplicaciones y descripciones de Keras, TensorFlow, Theano?

Keras: API agradable y bien diseñada, además de Tensorflow o Theano, y potencialmente extensible como una cuña sobre otros motores de aprendizaje profundo también. La documentación es de alta calidad y fácil de entender. El hecho de que Keras sea nominalmente independiente del motor significa que es teóricamente posible reutilizar el código de Keras incluso si tiene que cambiar el motor por rendimiento u otras razones. Su inconveniente es que siempre que desee implementar arquitecturas relativamente nuevas o esotéricas, generalmente tiene que descender por debajo de la capa de Keras y usar Tensorflow o Theano. Para mí, esto ocurre principalmente cuando necesito usar una indexación avanzada al estilo NumPy, que se traduce en la recopilación / dispersión de Tensorflow y el set / inc_subtensor de Theano . Además, Keras está comprometido conceptualmente con el gráfico de cálculo optimizado automáticamente que fue pionero en Theano y continuó en Tensorflow. Aún así, recomiendo Keras como una capa de interfaz de alto nivel si se va a utilizar Theano o Tensorflow.

Theano: Theano tiene el beneficio y el inconveniente de ser el más antiguo y mejor establecido de los tres. Como es más antiguo, se han implementado la mayoría de las funciones solicitadas por los usuarios. Sin embargo, debido a que no había un ejemplo previo a seguir, algunas de estas implementaciones son demasiado complicadas y difíciles de usar (consulte la documentación de la función de escaneo para ver un buen ejemplo de lo que quiero decir). La documentación es bastante buena, pero sigue siendo confusa. Puede ser muy difícil lograr que un proyecto complejo funcione correctamente en Theano, ya que no existe una manera simple de inspeccionar los cálculos intermedios. La depuración generalmente se realiza mediante la inspección de gráficos de cálculo o el uso de depuradores. Además, Theano va a la zaga de Tensorflow en cuanto a rendimiento y ritmo de desarrollo, ya que el equipo detrás de Theano no tiene acceso ni a la influencia del mercado ni a la escala de recursos de ingeniería que el equipo de Tensorflow tiene a través de Google. En su mayor parte, no creo que se estén realizando nuevos proyectos en Theano en este momento.

Tensorflow: Tensorflow es básicamente un refinamiento optimizado y respaldado por la industria de Theano. Es más eficiente y tiene cierto soporte para el procesamiento distribuido. Los nombres de las funciones y la terminología utilizada en Tensorflow difieren un poco de Theano, lo que puede dificultar el cambio de Theano de lo que debería ser. Aún así, los gráficos de cálculo subyacentes en Tensorflow funcionan más o menos igual que en Theano con la mayoría de los mismos beneficios e inconvenientes. Tensorflow hace que sea un poco más fácil inspeccionar el estado intermedio gracias a la función eval , pero la optimización del gráfico de cálculo sigue siendo bastante opaca, a pesar de que las optimizaciones tienen un efecto grave en el rendimiento. Tensorflow ha asumido esencialmente el papel que Theano y Caffe tenían hace un par de años y ahora es la herramienta de referencia para el aprendizaje profundo, tal vez con marcos como Keras por encima. Recientemente, Pytorch le ha dado a Tensorflow una carrera seria por su dinero, obligando al equipo de Google a adaptarse. Escuché que hay una versión simplificada de Tensorflow en las obras que depende menos del paso de compilación del gráfico.

Pytorch: Pytorch es un puerto Python de Torch, respaldado por Facebook. Como competidor de las tecnologías anteriores, ofrece una compilación de gráficos justo a tiempo, lo que significa que el código Pytorch encaja mejor con el Python circundante, ya que no trata los gráficos como objetos separados y opacos. En cambio, puede ensamblar cálculos de tensor ad hoc de maneras muy flexibles. También es bastante eficiente. Al igual que Tensorflow, ofrece un sólido soporte multi-GPU, aunque Tensorflow aún gana para sistemas distribuidos más grandes. La API de Pytorch está bien documentada pero menos refinada que Tensorflow o Keras. No obstante, Pytorch gana en flexibilidad y facilidad de uso sin sacrificar el rendimiento, y definitivamente está obligando a Tensorflow a reducirse y adaptarse.

Comencemos con pequeñas descripciones de cada uno:

Theano : Theano es una biblioteca de computación numérica, un proyecto de código abierto desarrollado por el grupo de aprendizaje automático en Unversite de Montreal, Canadá. En theano puede definir y evaluar expresiones matemáticas como una matriz multidimensional (sintaxis similar a numpy)

Pros:

  1. Python y Numpy
  2. Soporta operaciones de tensores y álgebra
  3. Bonito gráfico de cálculo abstracto
  4. Ejecución paralela
  5. Soporte para CPU y GPU
  6. Soporte para RNN y CNN
  7. Se puede usar por mucho más que el aprendizaje profundo

Contras :

  1. Uso de una sola GPU
  2. Los modelos grandes tienen tiempos de compilación más largos
  3. Nivel bajo
  4. Mensajes de error poco claros

Tensorflow : Tensorflow es una biblioteca de software de código abierto para una variedad de tareas de aprendizaje automático desarrolladas por el equipo de Google Brain. Fue abierto en noviembre de 2015.

Pros:

  1. Python y Numpy
  2. Arquitectura flexible
  3. Tensorboard para visualización
  4. Se puede implementar en más de una CPU o GPU
  5. Soporta operaciones de tensores y álgebra
  6. Tener soporte para otros algoritmos de aprendizaje automático también
  7. Bonito gráfico de cálculo para RNN y CNN
  8. Ejecución paralela

Contras :

  1. Más lento que otros marcos
  2. No muchos modelos pre entrenados
  3. Sin soporte comercial
  4. No es compatible con la operación de matriz en línea

Keras : Keras es una biblioteca de red neuronal de código abierto construida en la parte superior de tensorflow y theano. Su principal responsable es François Chollet, un ingeniero de Google. Fue construido para un cálculo rápido al proporcionar abstracción de mayor nivel.

Pros:

  1. Centrado solo en algoritmos de aprendizaje profundo
  2. Niza mayor nivel de abstracción
  3. Funciona con backends Theano, TensorFlow y Deeplearning4j
  4. Dado que está construido sobre tensorflow y theano, no hay costo de rendimiento en comparación con ellos
  5. Mejor experiencia de usuario para el aprendizaje profundo

Contras :

  1. Poco flexible
  2. No centrarse en otros algoritmos de aprendizaje automático

Ahora llegando a Similitudes :

  1. Marcos de aprendizaje profundo
  2. Escrito en lenguaje python
  3. Maneja una matriz multidimensional como NumPy
  4. Fuente abierta
  5. Soporte CUDA
  6. Diferenciación automática
  7. Tiene modelos pre-entrenados
  8. Redes recurrentes
  9. Redes de convolución
  10. Ejecución paralela

Por último, pero no menos importante, las diferencias:

Theano y tensorflow son muy similares entre sí. Ambos proporcionan interfaces de nivel inferior y tienen buenos gráficos de cálculo de propósito general y abstracto. Mientras que Keras está construido sobre estos Frameworks, proporciona una interfaz de nivel superior para que comiences a construir redes neuronales realmente más rápido y sin muchas complicaciones.

Fuentes:

  1. TensorFlow – Wikipedia
  2. Keras – Wikipedia
  3. Theano (software) – Wikipedia
  4. Hoja de información de Deep Learning: Deeplearning4j vs. Torch vs. Theano vs. Caffe vs. TensorFlow vs. MxNet vs. CNTK

Escribí un artículo largo sobre Quora hace algún tiempo mencionando todos estos marcos de aprendizaje profundo.

Aquí tienes: ¿Qué tan bueno es TensorFlow como una biblioteca de aprendizaje profundo y qué otras bibliotecas deberías tener en cuenta?

More Interesting

Cómo escribir un algoritmo para regresión logística paralela en Java

Cómo mejorar en Machine Learning y PNL

¿Será factible dentro de los próximos 5 años que una API de aprendizaje automático maneje la construcción de representaciones significativas a partir de datos sin procesar?

¿Qué es una explicación intuitiva del impulso en el entrenamiento de redes neuronales?

¿Cuáles son las probabilidades de ingresar a un programa de posgrado de aprendizaje automático en una escuela superior si mi experiencia en investigación es en bioinformática y algo de experiencia en investigación en PNL?

¿Por qué un algoritmo evolutivo es un método inapropiado para usar cuando se busca una clave para descifrar un mensaje codificado cuando solo hay una respuesta correcta?

¿Por qué se supera un clasificador supervisado?

¿Qué computadora portátil debo obtener para aprender el aprendizaje automático, usando SAS, R, MATLAB, Python, etc.?

¿La red neuronal convolucional (CNN) tiene que ver con la arquitectura de red y factores como la tasa de aprendizaje, la función de pérdida utilizada, etc.

¿Por qué todas las principales empresas de tecnología abren fuentes principales de su tecnología de inteligencia artificial?

Cómo calcular un proceso de red neuronal artificial

¿Cuáles son las mejores conferencias sobre aprendizaje automático para el procesamiento de imágenes médicas en 2016?

¿Qué matemática debería revisar / aprender si quiero comprender a fondo el modelado de efectos mixtos / modelado de regresión?

¿Por qué la inteligencia artificial se vuelve agresiva?

¿Cuáles son algunas optativas de matemáticas avanzadas útiles para un estudiante universitario en CS (junior) que se inclina hacia el aprendizaje automático para la escuela de posgrado?