Tutorial do TensorBoard: Visualização de grafos do TensorFlow
ā” Resumo Inteligente
O TensorBoard Ʃ a interface visual para execuƧƵes de treinamento do TensorFlow, exibindo curvas de perda, grƔficos de modelos, histogramas de pesos e embeddings. Este tutorial mostra como gravar arquivos de eventos com um estimador e, em seguida, abrir o painel na porta 6006.
O que Ć© TensorBoard?
O TensorBoard é a interface usada para visualizar o grÔfico e outras ferramentas para entender, depurar e otimizar o modelo. à uma ferramenta que fornece métricas e visualizações para um fluxo de trabalho de aprendizado de mÔquina. Ele ajuda track métricas como perda e precisão, visualizar o grafo do modelo e projetar embeddings em espaços de menor dimensão.
O TensorBoard Ć© fornecido com TensorFlow e funciona como um pequeno servidor web local que lĆŖ os arquivos de eventos que uma tarefa de treinamento grava no disco.
Exemplo de visualização de grafos do TensorFlow usando o TensorBoard
A imagem abaixo é do grÔfico do TensorBoard que você irÔ gerar neste tutorial. à o painel principal:
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.
- Escalares: Exibir diferentes informações úteis durante o treinamento do modelo.
- GrƔficos: Mostre o modelo
- Histograma: Exibir pesos com um histograma
- Distribuição: Exibir a distribuição do peso
- Projetor: Apresente a anÔlise de componentes principais e o algoritmo T-SNE. A técnica utilizada para redução de dimensionalidade.
Neste tutorial do TensorBoard, você treinarÔ um modelo simples. deep learning modelo, e o grÔfico que ele produz é lido de baixo para cima.
Ao observar o grÔfico, você poderÔ entender como o modelo funciona. Os marcadores numerados na captura de tela abaixo indicam essas quatro etapas:
- 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
- Alimente os dados aos Tensores
- Treine o modelo
- Exiba o nĆŗmero de lotes durante o treinamento. Salve o modelo no disco.
A ideia bÔsica por trÔs do TensorBoard é que uma rede neural pode se comportar como uma caixa preta, e você precisa de uma ferramenta para inspecionar o que estÔ dentro dessa caixa. Pense no TensorBoard como uma lanterna para mergulhar na rede.
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 que você tenha uma ideia de quão útil o grÔfico do TensorBoard pode ser, observe as duas curvas de perda abaixo:
Uma rede neural decide como conectar os diferentes neurÓnios e quantas camadas são necessÔrias para que o modelo possa prever um resultado. Uma vez definida a arquitetura, você precisa não apenas treinar o modelo, mas também uma métrica que meça a precisão da previsão. Essa métrica é chamada de função de perda, e o objetivo é minimizÔ-la, o que significa simplesmente que o modelo comete menos erros.
Todo algoritmo de treinamento repete o cÔlculo diversas vezes até que a perda atinja uma linha mais plana. Minimizar a perda também requer uma taxa de aprendizado, que é a velocidade com que o modelo aprende. Se a taxa de aprendizado for muito alta, o modelo nunca terÔ tempo de aprender nada: isso é o que mostra o grÔfico à esquerda, onde a linha oscila porque o modelo estÔ, na prÔtica, fazendo suposições. O grÔfico à direita mostra a perda diminuindo ao longo das iterações até que a curva se estabilize, 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. Uma rede neural pode levar horas ou semanas para encontrar uma solução, e o TensorBoard atualiza as mĆ©tricas enquanto o processo ainda estĆ” em andamento. Portanto, vocĆŖ nĆ£o precisa esperar atĆ© o final para verificar se o modelo estĆ” sendo treinado corretamente: abra o TensorBoard, verifique o andamento do treinamento e faƧa os ajustes necessĆ”rios.
Como usar o TensorBoard?
Nesta seção, você aprenderÔ como abrir o TensorBoard a partir do terminal. macOS e a partir da linha de comando em WindowsO foco aqui é a ferramenta, e não o modelo, portanto o código de treinamento é mantido propositalmente curto.
Primeiro, vocĆŖ precisa importar as bibliotecas que usarĆ” durante o treinamento.
## Import the library import tensorflow as tf import numpy as np
VocĆŖ cria os dados. Trata-se de uma matriz com 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)
O código abaixo transforma os dados e cria o modelo.
Observe que a taxa de aprendizado é igual a 0.1. Se você alterar essa taxa para um valor maior, o modelo não encontrarÔ uma solução. Foi isso que aconteceu no lado esquerdo da imagem acima.
O exemplo usa um estimador do TensorFlow, a API de alto nĆvel que encapsula os cĆ”lculos matemĆ”ticos. Os estimadores pertencem Ć API do TensorFlow 1.x, portanto, os dois trechos de código abaixo funcionam em uma instalação da versĆ£o 1.x ou por meio do... tf.compat.v1 espaƧo para nome.
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 Python arquivo. Dentro desse caminho, o TensorFlow criarÔ uma pasta chamada train com uma subpasta 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 visualização de grafos com TensorFlow consiste no treinamento do 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>
No TensorFlow 2, a mesma tarefa é realizada pelo callback do TensorBoard do Keras, que grava o grafo e as métricas por época sem qualquer código de estimativa:
logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])
Após a conclusĆ£o da execução, o diretório de logs contĆ©m um arquivo de ponto de verificação. graph.pbtxt arquivo e um ou mais events.out.tfevents arquivos ā exatamente o que o TensorBoard lĆŖ.
Para macOS usuƔrios
A visualização do Finder abaixo mostra a nova pasta train/linreg criada dentro do diretório de trabalho.
Para Windows usuƔrios
On Windows Os mesmos arquivos aparecem no caminho que você passou para model_dir, conforme destacado na barra de endereços.
O mesmo formato de arquivo de evento é produzido por PyTorchPortanto, o painel de controle não se limita a execuções do TensorFlow.
Agora que você tem os eventos de log gravados, pode abrir o TensorBoard. O TensorBoard utiliza a porta 6006 por padrão (Jupyter (usa a porta 8888). Use o Terminal em macOS ou o prompt do Anaconda em Windows.
Para macOS usuƔrios
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
O notebook estĆ” armazenado no caminho /Users/Guru99/tutor_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, execute o seguinte comando a partir desse diretório.
Para macOS usuƔrios
tensorboard --logdir=./train/linreg
Para Windows usuƔrios
tensorboard --logdir=.\train\linreg
O TensorBoard é então disponibilizado em http://localhost:6006
| Bandeira | O que ele controla |
|---|---|
--logdir |
Diretório que contém os arquivos de eventos. Esta é a única opção obrigatória. |
--port |
Porta a ser utilizada. O padrão é 6006; altere-a caso uma sessão anterior ainda esteja utilizando essa porta. |
--bind_all |
Disponibilize em todas as interfaces de rede. O TensorBoard se vincula apenas ao localhost por padrão, portanto, o acesso remoto requer essa flag, e ela não pode ser combinada com --host. |
--reload_interval |
Com que frequência, em segundos, o diretório de logs é verificado novamente em busca de novos dados? |
--logdir_spec |
Recurso de fallback legado que aceita vĆ”rios caminhos separados por vĆrgulas; --logdir nĆ£o suporta mais esse formulĆ”rio. |
O tensorboard dev O subcomando não funciona mais: o serviço TensorBoard.dev hospedado foi desativado em 1º de janeiro de 2024. O uso local não foi afetado.
Em algumas mƔquinas, o console exibe o nome do host em vez de localhost, como no prompt do Anaconda abaixo. Ambos os endereƧos abrem o mesmo painel de controle.
Copie e cole o endereço no seu navegador preferido. Você deverÔ ver o painel da Scalars mostrado abaixo.
Se, em vez disso, vocĆŖ vir algo como isto:
Isso significa que o TensorBoard não consegue encontrar o arquivo de log. Certifique-se de apontar para ele. cd para o caminho correto ou verifique novamente se o evento de log foi realmente criado. Caso contrÔrio, execute o código de treinamento novamente.
Para fechar o TensorBoard, pressione CTRL+C na janela do terminal.
Dica: verifique o prompt do Anaconda para obter o diretório de trabalho atual.
Na captura de tela acima, o prompt estĆ” localizado em C:\Users\Admin, portanto, o arquivo de log deve ser criado nessa pasta.










