¿Qué hará Keras con TensorFlow-Slim?

No estoy seguro de cómo interpretar la pregunta. Keras no va a cambiar nada como reacción al lanzamiento de TF-Slim.

TF-Slim es azúcar sintáctico para simplificar la definición de convnets en TensorFlow. Es genial en eso, hace que la definición de convnet sea realmente fácil, tan fácil como en Keras en realidad. Pero a diferencia de Keras, no es un marco de aprendizaje profundo, ni puede evolucionar hacia uno en el futuro (salvo una reescritura completa) ya que adolece de decisiones limitadas de diseño, siendo la más importante el hecho de que es puramente funcional, que evita que el usuario acceda a tensores intermedios o pesos de capa.

Nuevamente: TF-Slim es una sintaxis simplificada para definir convnets en TensorFlow. No compite con Keras, porque los alcances de Keras y TF-Slim son bastante diferentes. Echemos un vistazo.

Aquí está la lista de problemas que resuelve TF-Slim:

  • definiendo las redes TensorFlow.

Aquí está la lista de problemas que Keras resuelve:

  • definiendo TensorFlow o Theano convnets.
  • definiendo TensorFlow o Theano RNNs. Tenga en cuenta que el rendimiento de RNN es generalmente superior en Theano, que es una de las razones por las cuales Theano importa.
  • definiendo mezclas de RNNs y convnets, en TensorFlow o Theano.
  • gestionar modelos como gráficos de capas, por ejemplo, acceder a pesos de cualquier capa, acceder a salidas intermedias de cualquier capa.
  • compartir pesos de capas, compartir pesos de modelos y, en general, crear modelos componiendo modelos existentes (por ejemplo, modelo de lenguaje + modelo de visión = modelo de subtítulos).
  • carga de peso topológica, carga de peso parcial (características clave para usar pesos pre-entrenados en solo una parte de un modelo compuesto).
  • …y muchos más.

Actualización : desde mi respuesta, tf-slim 2.0 se lanzó al público. Aquí hay una publicación de blog sobre los nuevos cambios.

Para completar la respuesta de François Chollet y dar un poco más sobre por qué debería considerar usar tf-slim:

Primero, tf-slim es más que solo definir convnets, aunque esa es una de las muchas características útiles de tf-slim. ConvNet es un caso de uso de ejemplo de slim.arg_scope, que ayuda a evitar la duplicación de código en definiciones de modelo complejas.

Más allá de eso, tf-slim tiene como objetivo facilitar muchos trabajos de fontanería en torno a la capacitación, la evaluación de modelos y más. Para dar algunos ejemplos:

  • El proveedor de datos encapsula la lógica de los lectores de datos. Idealmente, uno almacenaría datos como TFRecords de tf. Ejemplo de protobuf. El proveedor de datos luego lee tf. Ejemplos y los decodifica en tensores. slim.learning.train también maneja los corredores de cola automáticamente.
  • slim.learning se ajusta a las lógicas repetitivas que se necesitan con frecuencia en la capacitación de modelos. Por ejemplo, simplemente especificando log_dir le brinda el beneficio de restaurar desde el último punto de control automáticamente (en caso de que se interrumpa el entrenamiento). También puede especificar init_fn para inicializar parte de su modelo con pesos pre-entrenados. Simplemente agregue tf.scalar_summary y proporcione slim.learning.train the fusion_ summary_op significa que sus resúmenes se escriben en log_dir por usted (para que pueda visualizarlos en el tensorboard).
  • slim.evaluation le permite configurar un bucle de evaluación para el último punto de control del modelo producido por el trabajo de capacitación y configurar evaluaciones en métricas dadas periódicamente.

Muy pronto se abrirán muchas más funciones. En resumen, tf-slim resume lo que mucha gente aprendió sobre la investigación en esta área aquí en Google y proporciona una pequeña conveniencia aquí y allá que finalmente conduce a mayores ganancias.

Descargo de responsabilidad: estoy haciendo mi pasantía en este momento y estoy trabajando en estrecha colaboración con el principal contribuyente de tf-slim. No he usado tf-slim antes de mi pasantía, pero definitivamente lo seguiré usando en el futuro. Me alegra que sea de código abierto.

Pero sí, Keras es completamente diferente y no estoy seguro de que esta pregunta tenga mucho sentido. tf-slim es mucho más liviano y se enfoca en un conjunto de cosas completamente diferente.

Básicamente, por el momento, en mi opinión, Tf-slim solo está diseñado para CNN, y está completamente basado en TensorFlow.

La mayor ventaja de Tf-slim es que Google proporciona una gran cantidad de modelos CNN previamente entrenados, incluidos VGG, ResNet, Inception, etc.

Eso es bueno para la investigación rápida de prototipos y aprendizaje de transferencia, sin embargo, no han proporcionado ninguna capa RNN y funciones auxiliares.

Afortunadamente, algunos envoltorios ahora pueden conectarse con la documentación de Tf-Slim API – Layers – TensorLayer 1.2.5, por lo que las personas pueden conectar la capa RNN sobre los modelos previamente entrenados.

Creo que estamos hablando de preocupaciones separadas aquí. Tensorflow-slim es otro de los intentos de hacer que la interfaz de Tensorflow sea un poco más simple, mientras que Keras es una solución mucho más completa (pero disjunta).

¿Será Keras relevante en el futuro? Creo que los marcos de Machine Learning tenderán a unificarse, y esta batalla tiene su primer perdedor (The leaf machine learning framework)

More Interesting

He completado la clase Coursera de Andrew Ng sobre aprendizaje automático. ¿Qué debería hacer después? ¿Qué puedo hacer a continuación?

¿Qué son los núcleos de difusión?

¿Cuál es la diferencia entre modelos discriminativos y generativos en el contexto de la segmentación de imágenes?

¿Qué significa extraer características de alguna capa de una red neuronal convolucional?

¿Puedo terminar en trabajos de aprendizaje automático si tengo una maestría en neurociencia?

¿Dónde puedo descargar datos de proyecto disponibles públicamente para entrenar mi red neuronal?

¿Por qué los tamaños de mini lotes grandes afectan negativamente la precisión de la validación?

¿Por qué las computadoras no pueden superar de manera confiable a los humanos en reconocimiento facial?

¿Qué tan efectivamente se pueden usar las redes neuronales en la regresión? ¿Es posible alguna configuración que prediga un número que no se ve en los datos de entrenamiento?

¿La correlación entre dos variables cuenta como evidencia débil de un vínculo causal entre ellas?

¿En qué campos todavía no se ha aplicado el aprendizaje automático (o está menos explorado)?

AI aprende de los datos del pasado para predecir, entonces, ¿debería haber preocupaciones en torno al pensamiento grupal? ¿La creatividad tendrá éxito en un mundo más autónomo?

Según Wikipedia, las redes neuronales artificiales actuales tienen la complejidad del cerebro de un gusano. ¿Es eso cierto?

¿Puede explicar la optimización convexa sin matrices de arpillera y solo la segunda derivada?

¿Cuáles son algunas técnicas de compresión que usan redes neuronales recurrentes?