¿Keras es mejor que Tensorflow para el aprendizaje profundo?

Los marcos de Deep Learning operan en 2 niveles de abstracción:

  • Nivel inferior: aquí es donde se encuentran los marcos como Tensorflow, MXNet, Theano y PyTorch. Este es el nivel donde se implementan operaciones matemáticas como la multiplicación matriz-matriz generalizada y las primitivas de redes neuronales como las operaciones convolucionales.
  • Nivel superior: aquí es donde se sientan los marcos como Keras. En este nivel, las primitivas de nivel inferior se utilizan para implementar la abstracción de la red neuronal como capas y modelos. En general, en este nivel también se implementan otras API útiles, como el guardado de modelos y la capacitación de modelos.

No puede comparar Keras y Tensorflow porque se encuentran en diferentes niveles de abstracción. También quiero aprovechar esta oportunidad para compartir mi experiencia de usar Keras:

  • No estoy de acuerdo con que Keras solo sea útil para el trabajo básico de Deep Learning . Keras es una API bellamente escrita. La naturaleza funcional de la API lo ayuda completamente y se sale de su camino para aplicaciones más exóticas. Keras no bloquea el acceso a marcos de nivel inferior.
  • Keras da como resultado un código mucho más legible y conciso.
  • Las API de serialización / deserialización del modelo Keras, las devoluciones de llamada y la transmisión de datos con generadores Python son muy maduras.
  • Keras ha sido declarado la abstracción oficial de alto nivel para Tensorflow.

También me gustaría señalar que en estos días he estado probando PyTorch. No porque Keras sea limitante, sino que el gráfico dinámico de PyTorch hace que sea realmente fácil manejar secuencias de longitud variable.

Estoy de acuerdo con Abhai Kollara; La comparación es bastante injusta.

Personalmente, si realmente tuviera que comparar ambos, diría que Keras es más fácil para los novatos familiarizarse con el aprendizaje profundo de una manera práctica; Como se ha mencionado en otras respuestas, es muy fácil comenzar y no necesita preocuparse demasiado.

Si desea comenzar con Keras, le recomiendo los siguientes recursos:

  • Documentación de Keras, Aprendizaje profundo con Python (¡escrito por el propio François Chollet!)
  • Aprendizaje profundo en Python, Keras Cheat Sheet: Redes neuronales en Python, Tutorial de Keras: Aprendizaje profundo en Python, keras: Aprendizaje profundo en R, Una guía completa para afinar los modelos de Aprendizaje profundo en Keras (Parte I)

Permítanme comenzar diciendo que la comparación es bastante injusta. Keras es un contenedor sobre sus bibliotecas de back-end que pueden ser Theano, Tensorflow o CNTK, lo que significa que si está usando Keras con TF back-end, esencialmente está ejecutando código TF.

Habiendo dicho eso, prefiero Keras sobre Tensorflow. Cuando se trata de facilitar la codificación, Keras gana sin dudas. Cuida muchos detalles para usted, lo que hace que la API sea mucho más intuitiva. Vea los ejemplos de clasificación MNIST usando Keras y Tensorflow. Le resultará muy fácil entender lo que está sucediendo en el ejemplo de Keras.

Ahora, incluso si quisiera TF como control sobre mi código, podría hacer uso de la función de capas personalizadas o la capa Lambda junto con la API funcional para lograrlo, por lo que Keras sigue siendo casi tan poderoso como TF.

Y si está ejecutando Keras con TF back-end, entonces la eficiencia sigue siendo la misma. Entonces sí, diría que Keras es mejor. Pero como dije al principio, la comparación no es justa.

Realmente no hay una comparación, Keras es una capa de abstracción que utiliza otras bibliotecas subyacentes de aprendizaje profundo para trabajar, mientras que Tensorflow es una de esas bibliotecas que utiliza. Además, tensorflow realmente incluye Keras ahora como una capa de abstracción de forma predeterminada.

Si aún desea una respuesta, para definir nuevos tipos de cálculo como un nuevo tipo de capa o fórmula, el flujo de tensor es mejor; de lo contrario, si no desea reinventar la rueda, Keras es mejor. PERO, solo para aprender, debe estar expuesto a la computación subyacente, así que use primero el tensorflow.

Depende. Si solo quieres probar el aprendizaje profundo, entonces Keras es bueno, ya que es muy fácil de leer y escribir. TensorFlow es más adecuado que Keras cuando va a probar su algoritmo original. TensorFlow es adecuado para escribir su propia función, mientras que Keras es para crear capas de redes neuronales.

Creo que sí. Es mucho más fácil desarrollar modelos con Keras que con Tensorflow puro. Y cuando Keras no puede proporcionar la flexibilidad necesaria, puede combinar Keras con código puro de Tensorflow.

Por cierto, Keras probablemente se convertirá en una parte principal de la API TF de alto nivel.

La razón principal para usar TF en lugar de Keras es el diseño de modelos completamente novedosos.

comprobar tf.keras

Módulo: tf.keras | TensorFlow

Es súper intuitivo y fácil de aprender.

Amo los keras.

¿Pero es mejor?

Esa es una buena pregunta de hecho 🙂

No. Sin embargo, cómo Deep RL, hay muchas muestras de Keras.

  1. Deep RL: Usa Keras.
  2. Otros: use TensorFlow.

More Interesting

¿Qué papel jugará la ciencia de datos en las elecciones presidenciales de 2012?

¿Necesito almacenar los pesos en los pasos de tiempo anteriores además de las activaciones cuando uso la propagación hacia atrás a través del tiempo en redes neuronales recurrentes?

Mi algoritmo de ML, escrito en Python, está casi completo. Quiero que sea un sitio web. ¿Cuál es la mejor manera de conectar mi script Python a Meteor?

¿Qué tipos de carreras hay para los ingenieros informáticos que se concentran en la inteligencia artificial y la máquina?

¿Por qué visualizamos filtros en redes neuronales convolucionales? ¿No son los filtros solo conjuntos de pesas? ¿De qué sirve tratar un conjunto de pesas como una imagen?

Cómo usar el aprendizaje automático para unir un patrón a partir de valores CSV

¿Qué es el condicionamiento en el aprendizaje seq2seq?

¿Cuáles son las mejores prácticas para elegir el tamaño de estado oculto en RNN?

¿Cuáles son algunas de las ventajas de usar PyTorch sobre TensorFlow?

¿Cuál es más rápido, Torch7 o Theano?

En la clasificación binaria, ¿es una buena práctica siempre sobre / submuestrear su conjunto de datos para tener un número idéntico de muestras de las dos clases?

¿Qué aspecto de los algoritmos de las redes de aprendizaje profundo requieren GPU además de, o en lugar de, CPU, y por qué?

¿Qué se usa en autos sin conductor, aprendizaje automático o aprendizaje profundo?

¿Qué hace la capa en línea y la capa de línea cercana del sistema Netflix para recomendación?

¿Cuál es el papel de la informática en el aprendizaje automático?