Introducción a Tensorflow 2.0

En este primer post de la serie “Tensorflow 2.0” veremos qué es TensorFlow 2.0, los conceptos básicos de esta librería, cuáles eran las limitaciones de la versión anterior y cuáles son las mejoras introducidas por Google en esta última versión.

¡Así que listo, comencemos!

Video

Como siempre, en el canal de YouTube se encuentra el video de este post:

Introducción: una idea general sobre TensorFlow

TensorFlow es la librería de Deep Learning más usada en la actualidad. Recientemente Google lanzó la versión 2.0 de esta librería que incorpora mejoras significativas con respecto a la versión anterior y que facilita el desarrollo de diferentes modelos de Deep Learning.

TensorFlow es una librería escrita en C++, pero que para facilitar su acceso posee una interface a lenguajes de programación como Python y JavaScript, y su código fuente fue liberado al público desde noviembre de 2015.

La lógica de funcionamiento de TensorFlow es la siguiente: cualquier modelo implementado consiste en un grafo:

Un ejemplo de un grafo en TensorFlow
Un ejemplo de un grafo en TensorFlow

Este grafo contiene una serie de nodos que a su vez contienen operaciones matemáticas:

Para este ejemplo, los nodos del grafo de TensorFlow corresponden a las operaciones 'MatMul', 'Add' y 'ReLU'
Para este ejemplo, los nodos del grafo de TensorFlow corresponden a las operaciones 'MatMul', 'Add' y 'ReLU'

y una serie de aristas que representan el flujo de datos:

Para este ejemplo, las aristas del grafo de TensorFlow corresponden a las flechas, que indican el flujo de los datos (b, W y x) hacia los nodos
Para este ejemplo, las aristas del grafo de TensorFlow corresponden a las flechas, que indican el flujo de los datos (b, W y x) hacia los nodos

Estos datos que fluyen a través del grafo se representan a través de tensores. Los tensores son estructuras similares a las matrices o los vectores, y estos fluyen de un nodo al otro del grafo. ¡Y de ahí el nombre de la librería: TensorFlow! (o flujo de tensores).

TensorFlow 1.x vs TensorFlow 2.0

Los inconvenientes de Tensorflow 1.x

El principal inconveniente de la primera versión de TensorFlow está en el hecho de que se requería crear un grafo estático, donde se definía la estructura general del modelo pero no se usaban los datos, los cuales se presentaban sólo durante el entrenamiento del modelo.

Por ejemplo, para definir la estructura general de un modelo en Tensorflow 1.x se requieren las siguientes líneas de código:

X = tf.placeholder(dtype=tf.float64)
Y = tf.placeholder(dtype=tf.float64)

W = tf.Variable(np.random.randn(784, 128))
b = tf.Variable(np.random.randn(128))
p = tf.nn.sigmoid( tf.add(tf.matmul(X, W), b) )

W_out = tf.Variable(np.random.randn(128,10))
b_out = tf.Variable(np.random.randn(10))
p_out = tf.nn.softmax( tf.add(tf.matmul(p, W_out), b_out) )

El gran inconveniente de este enfoque es que el código obtenido era muy extenso, poco intuitivo y difícil de entender, lo que dificultaba el prototipado rápido de modelos de Deep Learning.

Como alternativa a este problema, en el año 2015 François Chollet, en ese momento desarrollador de Google, creó Keras. Esta librería corre sobre TensorFlow y permite crear fácilmente modelos de Deep Learning, creando código más intuitivo y fácil de entender.

Por ejemplo, el mismo modelo creado anteriormente para Tensorflow 1.x, se reduce a unas cuantas líneas de código en Keras:

l = tf.keras.layers
model = tf.keras.Sequential([
	l.Flatten(input_shape=(784,)),
	l.Dense(128, activation='relu'),
	l.Dense(10, activation='softmax')
	])

TensorFlow 2.0: una mejora de la versión original

En primer lugar, TensorFlow 2.0 es una versión mejorada de TensorFlow 1.x, pues ya no usa los grafos estáticos que mencionamos en la sección anterior.

Pero más importante aún: ahora incorpora Keras como su librería de alto nivel por defecto (el paquete tf.keras), pues antes de esta versión era necesario instalar Keras como una librería aparte.

De hecho, en el futuro cercano, la librería Keras soportará únicamente TensorFlow 2.0.

Pero lo más importante aún: los creadores de TensorFlow sugieren que en adelante se haga uso de la versión 2.0 y que, en lo posible, todo el código haga uso de tf.keras.

Migración de TensorFlow 1.x a 2.0

¿Y qué pasa si hemos venido desarrollando modelos usando TensorFlow 1.x y Keras? ¿Cómo podemos migrar nuestro código a TensorFlow 2.0?

Realmente es muy sencillo: basta con cambiar las líneas originales de importación de la librería Keras:

from keras import ...

por su equivalente, usando tf.keras:

from tf.keras import ...

Conclusión

Bien, en este post vimos las principales características de TensorFlow 2.0, que permite implementar de manera rápida y sencilla cualquier modelo de Deep Learning. Para esto TensorFlow 2.0 usa por defecto la librería Keras.

En los siguientes posts de la serie veremos cómo instalar TensorFlow 2.0 y cómo implementar diferentes arquitecturas de Deep Learning usando esta librería, así como la forma de usar Google Colab y TensorFlow 2.0 para entrenar modelos de Machine Learning en la nube.

Si tienes alguna duda de este artículo o tienes alguna sugerencia no dudes en contactarme diligenciando el siguiente formulario:

Debes introducir tu nombre.
Debes introducir tu apellido.
Debes introducir un email válido.
Debes introducir un mensaje.
Debes aceptar la política de privacidad.