¿Qué más ofrece TensorFlow a los keras?

16

Soy consciente de que Keras sirve como una interfaz de alto nivel para TensorFlow.

Pero me parece que los keras pueden hacer muchas funcionalidades por sí mismos (entrada de datos, creación de modelos, capacitación, evaluación).

Además, parte de la funcionalidad de TensorFlow se puede portar directamente a keras (por ejemplo, es posible utilizar una función tf métrica o de pérdida en keras).

Mi pregunta es, ¿qué ofrece TensorFlow que no se puede reproducir en keras?

Javier
fuente

Respuestas:

15

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.
gatito
fuente
9

Si usa TensorFlow como su back-end en keras, más o menos comparten la misma funcionalidad. A través de keras.backendusted, un acceso a las funciones de TensorFlow, mientras que a través de tf.kerasusted tiene acceso a la API completa de Keras a través de TensorFlow.

Dado que este es el caso, le sugiero que se quede con keras y si encuentra que falta algo (por ejemplo, una función métrica o de pérdida) puede importarlo a través de TensorFlow.

TmBrdy
fuente
5

Keras, como dices, contiene toda la funcionalidad, pero solo se ejecuta en la CPU. Al conectar un backend como TensorFlow o CNTK (que personalmente prefiero), desbloqueas la potencia de la GPU que puede acelerar enormemente algunas cargas de trabajo ML, particularmente las cargas de trabajo DL. Si no tiene una GPU discreta, los beneficios son mínimos.

La mayoría de las veces en la práctica, puede configurar su backend y olvidarse de él, y trabajar completamente dentro de Keras, incluso cambiar su backend por otro y comparar el rendimiento. Por lo tanto, no es necesario aprender los detalles de TF a menos que desee codificar directamente en un nivel inferior.

Gayo
fuente
5

Dado que TensorFlow es una biblioteca de más bajo nivel que Keras en general, vería que esto ofrece flexibilidad adicional y un rendimiento mejorado (aunque relativamente menor, depende principalmente de cómo escriba su código). Diría que si está investigando o desarrollando nuevos tipos de redes neuronales, el conocimiento de TensorFlow sería muy útil. Fuera de eso, debería estar bien con Keras, aunque comprender cómo funciona TensorFlow podría ser útil si lo está utilizando como back-end.

Sin embargo, hace un tiempo leí que Keras y TensorFlow se integrarán más, lo que te facilitará la vida.

Obviamente, esta es solo mi opinión personal, por lo tanto, me gustaría indicarle algunos artículos adicionales para que pueda leer por su cuenta. Esta discusión sobre Kaggle ofrece una excelente visión general de los argumentos y cuándo usar cuáles. Publicación mediana sobre este tema.

Felix van Doorn
fuente
5

Todo principiante tiene esta consulta. Siempre parece que Keras resuelve las funcionalidades básicas como entrada de datos, creación de modelos, capacitación, evaluación en menos líneas de código.

Pero luego, cuando comienzas a desarrollar un modelo ML desde cero, te das cuenta de que puedes programar muchas matemáticas en el NN, y la biblioteca de tensorflow proporciona muchas funcionalidades y controles que hacen que esos conceptos sean prácticos. Los aspectos matemáticos del aprendizaje se pueden visualizar y crear fácilmente utilizando NN creado mediante tf.

abunickabhi
fuente