Tutorial de TensorBoard: visualización de gráficos de TensorFlow [Ejemplo]
¿Qué es TensorBoard?
TensorTablero es la interfaz utilizada para visualizar el gráfico y otras herramientas para comprender, depurar y optimizar el modelo. Es una herramienta que proporciona mediciones y visualizaciones para el flujo de trabajo de aprendizaje automático. Ayuda a realizar un seguimiento de métricas como pérdida y precisión, visualización de gráficos de modelos, incrustación de proyectos en espacios de dimensiones inferiores, etc.
Visualización de gráficos de TensorFlow usando el ejemplo de Tensorboard
La siguiente imagen proviene del gráfico de TensorBoard que generará en este tutorial de TensorBoard. Es el panel principal:
En la imagen a continuación, puede ver el panel de visualización de gráficos de TensorBoard. El panel contiene diferentes pestañas, que están vinculadas al nivel de información que agrega cuando ejecuta el modelo.
- Escalares: Muestra diferente información útil durante el entrenamiento del modelo.
- Gráficos: Mostrar el modelo
- Histograma: Muestra pesos con un histograma
- Distribuidores: Muestra la distribución del peso.
- Proyector: Mostrar análisis de componentes principales y algoritmo T-SNE. La técnica utilizada para la reducción de dimensionalidad.
Durante este tutorial de TensorBoard, entrenará un modelo simple de aprendizaje profundo. Aprenderá cómo funciona en un tutorial futuro.
Si observa el gráfico, podrá comprender cómo funciona el modelo.
- Poner en cola los datos en el modelo: enviar una cantidad de datos igual al tamaño del lote en el modelo, es decir, el número de fuentes de datos después de cada iteración.
- Alimentar los datos a los tensores.
- Entrenar a la modelo
- Muestra el número de lotes durante la capacitación. Guarde el modelo en el disco.
La idea básica detrás de Tensorboard es que la red neuronal puede ser algo conocido como una caja negra y necesitamos una herramienta para inspeccionar lo que hay dentro de esta caja. Puedes imaginar a Tensorboard como una linterna para comenzar a sumergirte en la red neuronal.
Ayuda a comprender las dependencias entre operaciones, cómo se calculan los pesos, muestra la función de pérdida y mucha otra información útil. Cuando reúnes toda esta información, tienes una gran herramienta para depurar y encontrar cómo mejorar el modelo.
Para darle una idea de lo útil que puede ser el gráfico TensorBoard, mire la siguiente imagen:
Una red neuronal decide cómo conectar las diferentes "neuronas" y cuántas capas antes de que el modelo pueda predecir un resultado. Una vez que haya definido la arquitectura, no solo necesita entrenar el modelo, sino también una métrica para calcular la precisión de la predicción. Esta métrica se conoce como función de pérdida. El objetivo es minimizar la función de pérdida. En otras palabras, significa que el modelo comete menos errores. Todos los algoritmos de aprendizaje automático repetirán los cálculos muchas veces hasta que la pérdida alcance una línea más plana. Para minimizar esta función de pérdida, es necesario definir una tasa de aprendizaje. Es la velocidad que desea que aprenda el modelo. Si establece una tasa de aprendizaje demasiado alta, el modelo no tiene tiempo para aprender nada. Este es el caso de la imagen de la izquierda. La línea se mueve hacia arriba y hacia abajo, lo que significa que el modelo predice el resultado con pura conjetura. La imagen de la derecha muestra que la pérdida disminuye a lo largo de la iteración hasta que la curva se aplana, lo que significa que el modelo encontró una solución.
TensorBoard es una gran herramienta para visualizar dichas métricas y destacar posibles problemas. La red neuronal puede tardar horas o semanas antes de encontrar una solución. TensorBoard actualiza las métricas con mucha frecuencia. En este caso, no es necesario esperar hasta el final para ver si el modelo se entrena correctamente. Puede abrir TensorBoard para verificar cómo va el entrenamiento y realizar los cambios correspondientes si es necesario.
¿Cómo utilizar TensorBoard?
En este tutorial, aprenderá cómo abrir TensorBoard desde la terminal para MacOS y la línea de comandos de TensorBoard para Windows.
El código se explicará en un tutorial futuro, el enfoque aquí está en TensorBoard.
Primero, debe importar las bibliotecas que utilizará durante la capacitación.
## Import the library import tensorflow as tf import numpy as np
Tú creas los datos. Es una matriz de 10000 filas y 5 columnas.
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape
Salida
(10000, 5)
Los códigos siguientes transforman los datos y crean el modelo.
Tenga en cuenta que la tasa de aprendizaje es igual a 0.1. Si cambia esta tasa a un valor más alto, el modelo no encontrará una solución. Esto es lo que sucedió en el lado izquierdo de la imagen de arriba.
Durante la mayor parte de la Tutoriales de TensorFlow, utilizará el estimador TensorFlow. Esta es la API de TensorFlow que contiene todos los cálculos matemáticos.
Para crear los archivos de registro, debe especificar la ruta. Esto se hace con el argumento model_dir.
En el siguiente ejemplo de TensorBoard, almacena el modelo dentro del directorio de trabajo, es decir, donde almacena el cuaderno o el archivo Python. Dentro de esta ruta, TensorFlow creará una carpeta llamada train con un nombre de carpeta secundaria linreg.
feature_columns = [ tf.feature_column.numeric_column('x', shape=X_train.shape[1:])] DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns, # Indicate where to store the log file model_dir='train/linreg', hidden_units=[500, 300], optimizer=tf.train.ProximalAdagradOptimizer( learning_rate=0.1, l1_regularization_strength=0.001 ) )
Salida
INFO:tensorflow:Using default config. INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}
El último paso de este ejemplo de gráfico de visualización de TensorFlow consiste en entrenar el modelo. Durante el entrenamiento, TensorFlow escribe información en el directorio del modelo.
# Train the estimator train_input = tf.estimator.inputs.numpy_input_fn( x={"x": X_train}, y=y_train, shuffle=False,num_epochs=None) DNN_reg.train(train_input,steps=3000)
Salida
INFO:tensorflow:Calling model_fn. INFO:tensorflow:Done calling model_fn. INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Graph was finalized. INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt. INFO:tensorflow:loss = 40.060104, step = 1 INFO:tensorflow:global_step/sec: 197.061 INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec) INFO:tensorflow:global_step/sec: 172.487 INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec) INFO:tensorflow:global_step/sec: 193.295 INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec) INFO:tensorflow:global_step/sec: 175.378 INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec) INFO:tensorflow:global_step/sec: 209.737 INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec) INFO:tensorflow:global_step/sec: 171.646 INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec) INFO:tensorflow:global_step/sec: 192.269 INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec) INFO:tensorflow:global_step/sec: 198.264 INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec) INFO:tensorflow:global_step/sec: 226.842 INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec) INFO:tensorflow:global_step/sec: 152.929 INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec) INFO:tensorflow:global_step/sec: 166.745 INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec) INFO:tensorflow:global_step/sec: 161.854 INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec) INFO:tensorflow:global_step/sec: 179.074 INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec) INFO:tensorflow:global_step/sec: 202.776 INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec) INFO:tensorflow:global_step/sec: 144.161 INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec) INFO:tensorflow:global_step/sec: 154.144 INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec) INFO:tensorflow:global_step/sec: 151.094 INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec) INFO:tensorflow:global_step/sec: 193.644 INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec) INFO:tensorflow:global_step/sec: 189.707 INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec) INFO:tensorflow:global_step/sec: 176.423 INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec) INFO:tensorflow:global_step/sec: 213.066 INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec) INFO:tensorflow:global_step/sec: 220.975 INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec) INFO:tensorflow:global_step/sec: 219.289 INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec) INFO:tensorflow:global_step/sec: 215.123 INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec) INFO:tensorflow:global_step/sec: 175.65 INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec) INFO:tensorflow:global_step/sec: 206.962 INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec) INFO:tensorflow:global_step/sec: 229.627 INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec) INFO:tensorflow:global_step/sec: 195.792 INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec) INFO:tensorflow:global_step/sec: 176.803 INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec) INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt. INFO:tensorflow:Loss for final step: 10.73032. <tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>
Para usuarios de MacOS
Para Windows usuario
Puedes ver esta información en elPyTorch Tablero tensor.
Ahora que tiene escritos los eventos de registro, puede abrir Tensorboard. Tensorboard Keras se ejecuta en el puerto 6006 (Jupyter se ejecuta en el puerto 8888). Puede utilizar la Terminal para usuarios de MacOs o el indicador de Anaconda para Windows .
Para usuarios de MacOS
# Different for you cd /Users/Guru99/tuto_TF source activate hello-tf!
El cuaderno se almacena en la ruta /Users/Guru99/tuto_TF
Para Windows usuarios
cd C:\Users\Admin\Anaconda3 activate hello-tf
El cuaderno se almacena en la ruta C:\Users\Admin\Anaconda3
Para iniciar Tensorboard, puedes usar este código
Para usuarios de MacOS
tensorboard --logdir=./train/linreg
Para Windows usuarios
tensorboard --logdir=.\train\linreg
Tensorboard se encuentra en esta URL: http://localhost:6006
También podría estar ubicado en la siguiente ubicación.
Copie y pegue la URL en su navegador favorito. Deberías ver esto:
Tenga en cuenta que aprenderemos a leer el gráfico en el tutorial dedicado al deep learning.
Si ves algo como esto:
Significa que Tensorboard no puede encontrar el archivo de registro. Asegúrate de apuntar el cd a la ruta correcta o vuelve a verificar si se creó el evento de registro. Si no es así, vuelve a ejecutar el código.
Si desea cerrar TensorBoard presione CTRL+C
Consejo: consulte el indicador de anaconda para conocer el directorio de trabajo actual,
El archivo de registro debe crearse en C:\Users\Admin
Resum
TensorBoard es una excelente herramienta para visualizar tu modelo. Además, se muestran muchas métricas durante el entrenamiento, como la pérdida, la precisión o los pesos.
Para activar Tensorboard, debe establecer la ruta de su archivo:
cd /Users/Guru99/tuto_TF
Activar el entorno de Tensorflow
activate hello-tf
Lanzar tablero tensor
tensorboard --logdir=.+ PATH