Tutorial de Tensorboard: Visualización de gráficos con ejemplo
¿Qué es TensorBoard?
Tensorboard es la interfaz utilizada para visualizar el gráfico y otras herramientas para comprender, depurar y optimizar el modelo.
Ejemplo
La imagen a continuación proviene del gráfico que generará en este tutorial. Es el panel principal:
En la imagen de abajo, puede ver el panel de Tensorboard. El panel contiene diferentes fichas, que están vinculadas al nivel de información que se agrega al ejecutar el modelo.
- Escalares: Muestra diferentes informaciones útiles durante el entrenamiento del modelo
- Gráficos: Mostrar el modelo
- Histograma: muestra los pesos con un histograma
- Distribución: Muestra la distribución del peso
- Proyector: Mostrar análisis de componentes principales y algoritmo T-SNE. La técnica utiliza para la reducción de dimensionalidad
Durante este tutorial, entrenará un modelo de aprendizaje profundo simple. Aprenderás cómo funciona en un tutorial futuro.
Si miras el gráfico, puedes entender cómo funciona el modelo.
- Poner en cola los datos al modelo: Empuje una cantidad de datos igual al tamaño del lote al modelo, es decir, Número de fuente de datos después de cada iteración
- Alimentar los datos a los tensores
- Entrenar el modelo
- Muestra el número de lotes durante el entrenamiento. Guarde el modelo en el disco.
La idea básica detrás del 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. Se puede imaginar tensorboard como una linterna para comenzar a sumergirse en la red neuronal.
Ayuda a comprender las dependencias entre las operaciones, cómo se calculan los pesos, muestra la función de pérdida y mucha otra información útil. Cuando reúne todas estas piezas de información, tiene 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, mire la imagen a continuación:
Una red neuronal decide cómo conectar las diferentes “neuronas” y cuántas capas antes del modelo pueden 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 denomina función de pérdida. El objetivo es minimizar la función de pérdida. En diferentes palabras, significa que el modelo está cometiendo menos errores. Todos los algoritmos de aprendizaje automático repetirán muchas veces los cálculos hasta que la pérdida alcance una línea más plana. Para minimizar esta función de pérdida, debe definir una tasa de aprendizaje. Es la velocidad que desea que el modelo aprenda. Si establece una tasa de aprendizaje demasiado alta, el modelo no tiene tiempo para aprender nada. Este es el caso en la imagen de la izquierda. La línea se mueve hacia arriba y hacia abajo, lo que significa que el modelo predice con pura conjetura el resultado. La imagen de la derecha muestra que la pérdida está disminuyendo durante la iteración hasta que la curva se aplanó, lo que significa que el modelo encontró una solución.
TensorBoard es una gran herramienta para visualizar dichas métricas y resaltar 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 entrena correctamente. Puede abrir TensorBoard comprobar cómo va el entrenamiento y hacer el cambio apropiado si es necesario.
¿Cómo usar TensorBoard?
En este tutorial, aprenderá a abrir TensorBoard desde el terminal para macOS y la línea de comandos para Windows.
El código se explicará en un tutorial futuro, el enfoque aquí está en TensorBoard.
Primero, debe importar las bibliotecas que usará durante el entrenamiento
1 2 3 |
## Import the library import tensorflow as tf import numpy as np |
Cree los datos. Es una matriz de 10000 filas y 5 columnas
1 2 3 |
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape |
Salida
1 |
(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 anterior.
Durante la mayoría de los tutoriales de TensorFlow, utilizará el estimador de 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 ejemplo siguiente, 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.
1 2 3 4 5 6 7 8 9 10 11 |
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
1 2 |
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': , '_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 consiste en entrenar el modelo. Durante el entrenamiento, TensorFlow escribe información en el directorio del modelo.
1 2 3 4 5 |
# 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
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 usuarios de Windows
Puede ver esta información en el TensorBoard.
Ahora que tiene los eventos de registro escritos, puede abrir Tensorboard. Tensorboad funciona en el puerto 6006 (Jupyter funciona en el puerto 8888). Puede utilizar el usuario de Terminal para macOS o el símbolo del sistema Anaconda para el usuario de Windows.
Para usuarios de macOS
1 2 3 |
# Different for you cd /Users/Guru99/tuto_TF source activate hello-tf! |
El cuaderno se almacena en la ruta /Users/Guru99/Tuto_TF
Para usuarios de Windows
1 2 |
cd C:\Users\Admin\Anaconda3 activate hello-tf |
El bloc de notas se almacena en la ruta C:UsersAdminanaConda3
Para iniciar Tensorboard, puede usar este código
Para usuarios de macOS
1 |
tensorboard --logdir=./train/linreg |
Para usuarios de Windows
1 |
tensorboard --logdir=.\train\linreg |
Tensorboard se encuentra en este URL: http://localhost:6006
También podría ubicarse en la siguiente ubicación.
Copia y pega la URL en tu navegador favorito. Deberías ver esto:
Tenga en cuenta que, vamos a aprender a leer el gráfico en el tutorial dedicado al aprendizaje profundo.
Si ves algo como esto:
Significa que Tensorboard no puede encontrar el archivo de registro. Asegúrese de apuntar el cd a la ruta correcta o comprobar si el evento de registro ha estado creando. Si no, vuelva a ejecutar el código.
Si desea cerrar TensorBoard Presione CTRL+C
Consejo: Compruebe su solicitud de anaconda para el directorio de trabajo actual,
El archivo de registro debe crearse en C:UsersAdmin
Resumen:
TensorBoard es una gran 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:
1 |
cd /Users/Guru99/tuto_TF |
Activar el entorno de Tensorflow
1 |
activate hello-tf |
Lanzamiento de Tensorboard
1 |
tensorboard --logdir=.+ PATH |
Leave a Reply
Want to join the discussion?Feel free to contribute!