TensorFlow es una potencísima herramienta desarrollada por Google y de código abierto que nos permite resolver problemas de aprendizaje automático de manera muy eficiente. El aprendizaje automático se usa en casi todas las áreas de la vida y el trabajo, pero algunas de las áreas más famosas son la visión por computadora, el reconocimiento de voz, las traducciones de idiomas y la atención médica.
Esquema del flujo general de trabajo de TensorFlow en 11 pasos
1. Importar el conjunto de datos
Primeramente tenemos que importar o generar conjuntos de datos. Todos nuestros algoritmos de aprendizaje automático dependerán de los conjuntos de datos.
2. Optimizar y normalizar los datos
Luego transformamos y normalizamos los datos, ya que generalmente el conjunto de datos de entrada no tienen la forma más óptima para TensorFlow, así que sería mejor adaptarlos de una forma más óptima. Los datos generalmente no están en la dimensión o tipo correcto que nuestros algoritmos esperan. TensorFlow ya incorpora funciones integradas que pueden normalizar los datos de la siguiente manera:
tf.nn.batch_normalization( x, mean, variance, offset, scale, variance_epsilon, name=None)
3. Segmentar del conjunto de datos
Dividir el conjunto de datos( entrenamiento, testeo y validación) ya que generalmente queremos probar nuestros algoritmos en diferentes conjuntos en los que hemos entrenado. Además, muchos algoritmos requiereque ajustemos sus hiperparámetros, así que con el conjunto de validación seleccionamos los hiperparámetros más óptimos.
4. Definir hiperparámetros
Una vez tenemos los datos correctamente adaptados, normalizados y divididos, establecemos los hiperparámetros los cuales se mantendrán constantes durante todo el proceso. Entre los más importantes tenemos el ratio de aprenzaje (learning rate), el número de iteraciones (iterations), y el tamaño del lote (batch size):
batch_size = 100
iterations = 450
learning_rate = 0.02
5. Inicializar variables y marcadores de posición
Ahora inicializamos las variables y los marcadores de posición para que TensorFlow sepa que puede y no puede modificar. De esta manera TensorFlow modificará / ajustará las variables y el peso / sesgo durante el proceso de optimización para minimizar la función de pérdida. Para lograr esto, introducimos datos a través de marcadores de posición. Necesitamos inicializar tanto las variables y marcadores de posición con tamaño y tipo, para que TensorFlow sepa qué esperar. TensorFlow también necesita saber el tipo de datos a esperar, generalmente usaremos float32. TensorFlow también proporciona float64 y float16. Pero tened cuidado que mientras más bytes usamos el algoritmo se vuelve más lento.
6. Definir el modelo
Una vez tenemos el conjunto de datos optimizados, tenemos las variables y los marcadores de posición inicializados, procedemos a definir el modelo. Para hacerlo vamos a construir un gráficom computacional. TensorFlow elige qué operaciones y valores deben tener las variables y los marcadores de posición para llegar a los resultados de nuestro modelo.
7. Definir la función de pérdida
Declaramos la función de perdida. Esta tiene una gran importancia ya que nos dice cuan lejos esta nuestra predicción de los valores reales.
perdida = tf.reduce_mean(tf.square(y_actual - y_pred))
8. Inicializar y entrenar el modelo
Inicializamos y entrenamos el modelo. Necesitamos crear una instancia de nuestro gráfico, alimentar los datos a través de los marcadores de posición y dejar que TensorFlow cambie las variables para predecir mejor nuestros datos de entrenamiento.
session = tf.Session(graph=graph)
session.run(…)
9. Evaluar el modelo
Una vez que hemos construido y entrenado el modelo, debemos evaluar el modelo observando qué tan bien funciona con los datos nuevos a través de algunos criterios específicos. Evaluamos el modelo entrenado con los datos de testeo, lo cual nos permitirá saber si el modelo está ajustado o no.
10. Ajuste de los hiperparámetros
Es en este momento que, una vez evaluado el modelo, generalmente volvemos atrás y cambiamos los hiperparámetros y repetimos todos los pasos anteriores, evaluando el modelo en el conjunto de validación, hasta que veamos que nuestro modelo se comporta según lo previsto.
11. Implementar / predecir nuevos resultados
Por último, también es importante saber cómo hacer predicciones sobre datos nuevos e invisibles. Podemos hacer esto con todos nuestros modelos, una vez que los tengamos entrenados.