Path: blob/master/site/es-419/tensorboard/image_summaries.ipynb
25115 views
Copyright 2019 The TensorFlow Authors.
Visualización de datos de imágenes en TensorBoard
Descripción general
Utilizando la API de resumen de imágenes de TensorFlow, puede registrar fácilmente tensores e imágenes arbitrarias y visualizarlos en TensorBoard. Esto puede ser extremadamente útil para tomar muestras y examinar sus datos de entrada, o para visualizar las ponderaciones de las capas y los tensores generados. También puede registrar datos de diagnóstico como imágenes que pueden ser útiles en el curso del desarrollo de su modelo.
En este tutorial, aprenderá a utilizar la API de resumen de imágenes para visualizar tensores como imágenes. También aprenderá a tomar una imagen arbitraria, convertirla en un tensor y visualizarla en TensorBoard. Trabajará mediante un ejemplo simple pero real que utiliza Resúmenes de imágenes para ayudarle a comprender el rendimiento de su modelo.
Preparación
Descargar el conjunto de datos Fashion-MNIST
Va a construir una red neuronal sencilla para clasificar las imágenes del conjunto de datos Fashion-MNIST. Este conjunto de datos contiene 70,000 imágenes en escala de grises de 28x28 sobre productos de moda pertenecientes a 10 categorías, con 7,000 imágenes por categoría.
Primero, descargue los datos:
Visualizar una sola imagen
Para comprender cómo funciona la API de resumen de imágenes, ahora va a registrar simplemente la primera imagen de entrenamiento de su conjunto de entrenamiento en TensorBoard.
Antes de hacerlo, examine la forma que adoptan sus datos de entrenamiento:
Observe que la forma de cada imagen del conjunto de datos es un tensor de rango 2 de forma (28, 28), que representa la altura y el ancho.
Sin embargo, tf.summary.image()
espera un tensor de rango 4 que contenga (batch_size, height, width, channels)
. Por lo tanto, es necesario remodelar los tensores.
Está registrando sólo una imagen, así que batch_size
es 1. Las imágenes se muestran en escala de grises, lo que significa que channels
es 1.
Ahora está listo para registrar esta imagen y visualizarla en TensorBoard.
Ahora, utilice TensorBoard para examinar la imagen. Espere unos segundos a que la interfaz de usuario gire.
El panel "Series temporales" muestra la imagen que acaba de registrar. Es una "bota tobillera".
La imagen se escala a un tamaño predeterminado para facilitar su visualización. Si desea ver la imagen original sin escalar, marque "Mostrar tamaño real de la imagen" en la parte inferior del panel "Configuración" situado a la derecha.
Pruebe con los controles deslizantes de brillo y contraste para ver cómo afectan a los pixeles de la imagen.
Visualización de múltiples imágenes
Registrar un tensor está muy bien, pero ¿y si quisiera registrar múltiples ejemplos de entrenamiento?
Simplemente especifique el número de imágenes que desea registrar al pasar los datos a tf.summary.image()
.
Registro de datos de imágenes arbitrarias
¿Y si desea visualizar una imagen que no es un tensor, como una imagen generada por matplotlib?
Se necesita algo de código fuente para convertir el gráfico en un tensor, pero después de esto, estará listo.
En el siguiente código, registrará las primeras 25 imágenes como una agradable cuadrícula utilizando la función subplot()
de matplotlib. A continuación, verá la cuadrícula en TensorBoard:
Construir un clasificador de imágenes
Ahora ponga todo esto junto con un ejemplo real. Después de todo, ¡usted está aquí para hacer aprendizaje automático y no para dibujar imágenes bonitas!
Va a utilizar resúmenes de imágenes para comprender lo bien que funciona su modelo mientras entrena un clasificador sencillo para el conjunto de datos Moda-MNIST.
En primer lugar, cree un modelo muy simple y compílelo, establezca el optimizador y la función de pérdida. El paso de la compilación también especifica que desea registrar la precisión del clasificador a lo largo del proceso.
Al entrenar un clasificador, es útil ver la matriz de confusión. La matriz de confusión le da un conocimiento detallado del rendimiento de su clasificador en los datos de prueba.
Definir una función que calcula la matriz de confusión. Utilizará una conveniente función Scikit-learn para hacerlo, y luego la representará gráficamente utilizando matplotlib.
Ahora está listo para entrenar al clasificador y registrar regularmente la matriz de confusión a lo largo del proceso.
Esto es lo que deberá hacer:
Cree la retrollamada Keras TensorBoard para registrar las métricas básicas
Crear un Keras LambdaCallback para registrar la matriz de confusión al final de cada época.
Entrene el modelo utilizando Model.fit(), asegurándose de pasar ambas retrollamadas
Conforme avanza el entrenamiento, desplácese hacia abajo para ver cómo se pone en marcha el TensorBoard.
Observe que la precisión aumenta tanto en los conjuntos de entrenamiento como en los de validación. Es una buena señal. Pero, ¿cómo se comporta el modelo en subconjuntos específicos de los datos?
Desplácese por el panel "Series temporales" para visualizar las matrices de confusión registradas. Marque "Mostrar tamaño real de la imagen" en la parte inferior del panel "Configuración" para ver la matriz de confusión a tamaño completo.
De forma predeterminada, el panel muestra el resumen de imágenes del último paso o época registrado. Utilice el control deslizante para ver matrices de confusión anteriores. Observe cómo la matriz cambia significativamente conforme avanza el entrenamiento, con cuadrados más oscuros que se unen a lo largo de la diagonal, y el resto de la matriz tendiendo hacia el 0 y el blanco. ¡Esto significa que su clasificador está mejorando a medida que avanza el entrenamiento! ¡Gran trabajo!
La matriz de confusión muestra que este sencillo modelo tiene algunos problemas. A pesar de los grandes progresos, las camisas, las camisetas y los jerseys se confunden entre sí. El modelo necesita más trabajo.
Si le interesa, intente mejorar este modelo con una red convolucional (CNN).