Path: blob/master/site/pt-br/tensorboard/graphs.ipynb
25115 views
Copyright 2019 The TensorFlow Authors.
Examinando o grafo do TensorFlow
Visão geral
O painel de controle Graphs (Grafos) do TensorBoard é uma ferramenta avançada para examinar seu modelo do TensorFlow. Você pode ver rapidamente um grafo conceitual da estrutura do seu modelo e garantir que ele corresponda ao design pretendido. Também é possível visualizar um grafo no nível da op para entender como o TensorFlow compreende seu programa. Ao examinar o grafo no nível da op, você ganha insights sobre como mudar seu modelo. Por exemplo, é possível reformular seu modelo se o treinamento estiver progredindo mais lentamente do que o esperado.
Este tutorial apresenta uma rápida visão geral de como gerar os dados de diagnóstico dos grafos e visualizá-los no painel de controle Graphs do TensorBoard. Você definirá e treinará um modelo Sequential simples do Keras para o dataset Fashion-MNIST e aprenderá a registrar e examinar os grafos do seu modelo. Você também usará uma API de tracing para gerar dados de grafos para funções criadas usando a nova anotação tf.function
.
Configuração
Defina um modelo Keras
Neste exemplo, o classificador é um modelo Sequential de quatro camadas.
Baixe e prepare os dados de treinamento.
Treine o modelo e registre os dados
Antes do treinamento, defina a callback do TensorBoard para o Keras, especificando o diretório do log. Ao passar essa callback para Model.fit(), você garante que os dados do grafo sejam registrados para visualização no TensorBoard.
Grafo no nível da op
Inicie o TensorBoard e aguarde alguns segundos para a interface do usuário carregar. Selecione o painel de controle Graphs ao tocar em "Graphs" na parte superior.
Opcionalmente, você também pode usar o TensorBoard.dev para criar um experimento hospedado e compartilhável.
Por padrão, o TensorBoard mostra o grafo no nível da op. (À esquerda, você pode ver a tag "Default" selecionada.) Observe que o grafo está invertido: os dados fluem de baixo para cima, então está de cabeça para baixo em comparação com o código. No entanto, é possível ver que o grafo corresponde bastante à definição de modelo do Keras, com bordas adicionais para outros nós de computação.
Geralmente, os grafos são muito grandes, então você pode manipular a visualização deles:
Role para aumentar e diminuir o zoom
Arraste para girar panoramicamente
Clique duas vezes para ativar a expansão de nó (um nó pode ser um container para outros nós)
Você também pode ver os metadados ao clicar em um nó. Assim, é possível conferir entradas, saídas, formatos e outros detalhes.
Grafo conceitual
Além do grafo de execução, o TensorBoard também mostra um grafo conceitual. É uma visualização com apenas o modelo do Keras. Isso pode ser útil se você estiver reutilizando um modelo salvo e quer examinar ou validar sua estrutura.
Para ver o grafo conceitual, selecione a tag "keras". Para esse exemplo, você verá um nó Sequential recolhido. Clique duas vezes no nó para ver a estrutura do modelo:
Grafos de tf.functions
Até agora, os exemplos descreveram grafos de modelos Keras, onde os grafos foram criados ao definir camadas do Keras e chamar Model.fit().
Talvez você se depare com uma situação em que precise usar a anotação tf.function
para "autografar", ou seja, transformar uma função de computação Python em um grafo do TensorFlow de alto desempenho. Para essas situações, use a API Summary Trace do TensorFlow a fim de registrar funções autografadas para visualização no TensorBoard.
Para usar a API Summary Trace:
Defina e anote uma função com
tf.function
.Use
tf.summary.trace_on()
imediatamente antes do local de chamada da função.Adicione as informações do perfil (memória, tempo de CPU) ao grafo passando
profiler=True
.Com um escritor de arquivo de resumo, chame
tf.summary.trace_export()
para salvar os dados de log.
Em seguida, você pode usar o TensorBoard para ver o comportamento da sua função.
Agora você pode ver a estrutura da sua função conforme compreendida pelo TensorBoard. Clique no botão de opção "Profile" para ver estatísticas de CPU e memória.