Tutorial do TensorBoard: visualização do gráfico do TensorFlow [exemplo]

O que é TensorBoard?

TensorBoard é a interface usada para visualizar o gráfico e outras ferramentas para compreender, depurar e otimizar o modelo. É uma ferramenta que fornece medições e visualizações para fluxo de trabalho de aprendizado de máquina. Ajuda a rastrear métricas como perda e precisão, visualização de gráfico de modelo, incorporação de projeto em espaços de dimensões inferiores, etc.

Visualização de gráfico do TensorFlow usando exemplo do Tensorboard

A imagem abaixo vem do gráfico do TensorBoard que você gerará neste tutorial do TensorBoard. É o painel principal:

Visualização do gráfico do TensorFlow
Visualização do gráfico do TensorFlow

Na imagem abaixo você pode ver o painel de visualização do gráfico TensorBoard. O painel contém diferentes guias, que estão vinculadas ao nível de informação que você adiciona ao executar o modelo.

Gráficos do TensorBoard

Gráficos do TensorBoard
  • Escalares: Mostra diferentes informações úteis durante o treinamento do modelo
  • Gráficos: Mostrar o modelo
  • Histograma: Exibir pesos com um histograma
  • Distribuição: Exibe a distribuição do peso
  • Projetor: Mostrar análise de componentes principais e algoritmo T-SNE. A técnica usada para redução de dimensionalidade

Durante este tutorial do TensorBoard, você treinará um modelo simples de aprendizado profundo. Você aprenderá como funciona em um tutorial futuro.

Se você olhar o gráfico, poderá entender como o modelo funciona.

  1. Enfileirar os dados para o modelo: enviar uma quantidade de dados igual ao tamanho do lote para o modelo, ou seja, número de dados alimentados após cada iteração
  2. Alimente os dados aos Tensores
  3. Treine o modelo
  4. Exiba o número de lotes durante o treinamento. Salve o modelo no disco.

Visualização de gráfico do TensorFlow usando exemplo do Tensorboard

A ideia básica por trás do tensorboard é que a rede neural pode ser algo conhecido como caixa preta e precisamos de uma ferramenta para inspecionar o que está dentro dessa caixa. Você pode imaginar o tensorboard como uma lanterna para começar a mergulhar na rede neural.

Ajuda a compreender as dependências entre as operações, como os pesos são calculados, exibe a função de perda e muitas outras informações úteis. Ao reunir todas essas informações, você tem uma ótima ferramenta para depurar e descobrir como melhorar o modelo.

Para se ter uma ideia de quão útil o gráfico do TensorBoard pode ser, veja a imagem abaixo:

Gráficos do TensorBoard
Gráfico TensorBoard

Uma rede neural decide como conectar os diferentes “neurônios” e quantas camadas antes que o modelo possa prever um resultado. Depois de definir a arquitetura, você não só precisa treinar o modelo, mas também uma métrica para calcular a precisão da previsão. Essa métrica é chamada de função de perda. O objetivo é minimizar a função de perda. Em outras palavras, significa que o modelo está cometendo menos erros. Todos os algoritmos de aprendizado de máquina repetirão os cálculos muitas vezes até que a perda atinja uma linha mais plana. Para minimizar esta função de perda, você precisa definir um taxa de Aprendizagem. É a velocidade que você deseja que o modelo aprenda. Se você definir uma taxa de aprendizado muito alta, o modelo não terá tempo para aprender nada. Este é o caso da imagem à esquerda. A linha está se movendo para cima e para baixo, o que significa que o modelo prevê o resultado com pura suposição. A imagem à direita mostra que a perda está diminuindo ao longo da iteração até que a curva fique achatada, o que significa que o modelo encontrou uma solução.

O TensorBoard é uma ótima ferramenta para visualizar essas métricas e destacar possíveis problemas. A rede neural pode levar horas a semanas antes de encontrar uma solução. O TensorBoard atualiza as métricas com muita frequência. Nesse caso, você não precisa esperar até o final para ver se o modelo treina corretamente. Você pode abrir o TensorBoard para verificar como está o treinamento e fazer as alterações apropriadas, se necessário.

Como usar o TensorBoard?

Neste tutorial, você aprenderá como abrir o TensorBoard a partir do terminal para MacOS e da linha de comando TensorBoard para Windows.

O código será explicado em um tutorial futuro, o foco aqui é o TensorBoard.

Primeiro, você precisa importar as bibliotecas que utilizará durante o treinamento

## Import the library
import tensorflow as tf
import numpy as np

Você cria os dados. É uma matriz de 10000 linhas e 5 colunas

X_train = (np.random.sample((10000,5)))
y_train =  (np.random.sample((10000,1)))
X_train.shape

saída

(10000, 5)

Os códigos abaixo transformam os dados e criam o modelo.

Observe que a taxa de aprendizagem é igual a 0.1. Se você alterar essa taxa para um valor maior, o modelo não encontrará solução. Foi o que aconteceu no lado esquerdo da imagem acima.

Durante a maior parte do Tutoriais do TensorFlow, você usará o estimador TensorFlow. Esta é a API TensorFlow que contém todos os cálculos matemáticos.

Para criar os arquivos de log, você precisa especificar o caminho. Isso é feito com o argumento model_dir.

No exemplo do TensorBoard abaixo, você armazena o modelo dentro do diretório de trabalho, ou seja, onde você armazena o notebook ou arquivo python. Dentro desse caminho, o TensorFlow criará uma pasta chamada train com uma pasta filha chamada 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    
      )
)

saída

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}

A última etapa deste exemplo de gráfico de visualização do TensorFlow consiste em treinar o modelo. Durante o treinamento, o TensorFlow grava informações no diretório do 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)

saída

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 usuário MacOS

Tutorial do TensorBoard para usuário MacOS

Para Windows usuário

Tutorial do TensorBoard para Windows Utilizador

Você pode ver essas informações noPyTorch TensorBoard.

Agora que você escreveu os eventos de log, pode abrir o Tensorboard. Tensorboard Keras é executado na porta 6006 (Jupyter roda na porta 8888). Você pode usar o Terminal para usuários do MacOs ou o prompt do Anaconda para Windows usuário.

Para usuário MacOS

# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!

O notebook é armazenado no caminho /Users/Guru99/tuto_TF

Para Windows usuários

cd C:\Users\Admin\Anaconda3
activate hello-tf

O notebook é armazenado no caminho C:\Users\Admin\Anaconda3

Para iniciar o Tensorboard, você pode usar este código

Para usuário MacOS

tensorboard --logdir=./train/linreg

Para Windows usuários

tensorboard --logdir=.\train\linreg

O Tensorboard está localizado neste URL: http://localhost:6006

Também pode estar localizado no seguinte local.

Usar TensorBoard

Copie e cole o URL no seu navegador favorito. Você deveria ver isto:

Observe que aprenderemos como ler o gráfico no tutorial dedicado ao deep learning.

Usar TensorBoard

Se você vir algo assim:

Usar TensorBoard

Isso significa que o Tensorboard não consegue encontrar o arquivo de log. Certifique-se de apontar o CD para o caminho correto ou verifique se o evento de log foi criado. Caso contrário, execute novamente o código.

Se você deseja fechar o TensorBoard, pressione CTRL + C

Dica: Verifique o prompt do anaconda para o diretório de trabalho atual,

Usar TensorBoard

O arquivo de log deve ser criado em C:\Users\Admin

Resumo

TensorBoard é uma ótima ferramenta para visualizar seu modelo. Além disso, muitas métricas são exibidas durante o treinamento, como perda, precisão ou pesos.

Para ativar o Tensorboard, você precisa definir o caminho do seu arquivo:

cd /Users/Guru99/tuto_TF

Ative o ambiente do Tensorflow

activate hello-tf

Iniciar Tensorboard

tensorboard --logdir=.+ PATH

Resuma esta postagem com: