Nuevo Tensorflow 2.0

TensorFlow Inteligencia Artificial

Esta madrugada, en el TensorFlow Dev Summit, se ha anunciado la versión alfa de TensorFlow 2.0, completamente funcional, pero se espera unos meses para lanzar la versión RC (Release Candidate) para que el mayor número de usuarios puedan usarlo y detectar cualquier posible problema.

Principales cambios

TensorFlow 2.0 se centra en la simplicidad y la facilidad de uso, con actualizaciones importantes como (1) el modelo de ejecución (modo eager), consolidar el uso de una API intuitivas de alto nivel (basada en Keras) y el despliegue flexible de modelos en cualquier plataforma.

Nuevo modelo de ejecución

Los que conocían TensorFlow en versiones anteriores, recordaran que TensorFlow construía primero un grafo con todos los cálculos que se requerían hacer y luego se ejecutaba todo a la vez para conseguir de esta manera que en tiempo de ejecución las librerías runtime pudieran aplicar optimizaciones. Ahora el modelo de ejecución eager de TensorFlow evalua las operaciones inmediatamente y permite una mejor integración con los runtime de Python además que hace que sea más fácil iniciarse con TensorFlow.

API de alto nivel

La principal API de alto nivel  para construir y entrenar modelos a partir de la versión 2.0 será Keras. Keras es un estándar de API fácil de usar y facilita comenzar con TensorFlow. Es importante destacar que Keras proporciona varias API de creación de modelos (secuencial, funcional y subclases), para que podamos elegir el nivel correcto de abstracción para nuestro proyecto.

Despliegue en cualquier plataforma.

El ecosistema de TensorFlow está pensando para facilitar la puesta en producción de los modelos una vez entrenados ya sea en servidores, dispositivos móviles o en la web. Para ello, TensorFlow ofrece las siguientes librería para facilitar el despliegue en diferentes plataformas:

  • TensorFlow Serving: permite que los modelos se sirvan a través de REST o gRPC en servidores.
  • TensorFlow Lite: para dispositivos móviles e integrados ofrece la capacidad de implementar modelos en Android, iOS y sistemas integrados como Raspberry Pi.
  • TensorFlow.js: permite la implementación de modelos en entornos JavaScript, como en un navegador web o en el lado del servidor a través de Node.js.

Como ven, todo un ecosistema muy útil para la etapa de uso de nuestro modelo para hacer inferencia.

Tu primer programa con TensorFlow 2.0

Para escribir tu primer programa en TensorFlow 2.0 propongo que uses Google Colaboratory que permite ejecutar un Jupyter notebook Python  en el Cloud  a través de tu navegador.  Para ello, una vez has accedido al Google Colaboratory, debes conectar el entorno seleccionando “CONNECT” en la parte superior derecha del menú (que después de unos segundo deberias ver que indicar con una marca verde que todo está correctamente inicializado). A continuación abre un notebook a través de la pestaña “File” en la parte superior izquierda del menú, y  selecciona la opción de “New Python 3.0 notebook”.

Ya estás en disposición de escribir tu primer programa en TensorFlow.  Propongo usar el mismo programa para clasificar dígitos usado en el libro Deep Learning Introducción práctica con Keras.

El primer paso es instalar tensorflow. Para ello tecleamos:

!pip install tensorflow-gpu==2.0.0-alpha0

y a continuación clicamos en el símbolo de “play”. Una vez instalada la librería TensorFlow, pasamos a importar la librería en nuestro entorno Python. Para ello creamons una nueva celda para código con “+CODE” en el submenú superior izquierda con el siguiente código:

import tensorflow as tf

y nuevamente clicamos en el símbolo de “play”. El siguiente paso consiste en cargar el conjunto de datos MNIST dataset.

mnist = tf.keras.datasets.mnist

Como se presentaba en el capítulo 2 del libro, los valores deben convertirse a coma flotante y normalizados.

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

Siguiendo los pasos del libro, a continuación debemos definer el modelo y compilarlo:

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
       loss='sparse_categorical_crossentropy',
       metrics=['accuracy'])

Y finalmente entrenar y evaluar el modelo:

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

Si has seguido los pasos indicados anteriormente, ya tienes tu clasificador de imagenes entrenado con un 98% de accuracy para este conjunto de datos. ¡Felicidades!

A partir de aquí ya puede ejecutar los ejemplos del libro que estoy escribiendo sobre TensorFlow y seguir las explicaciones si quieres profundizar un poco más en el tema.