Exibindo dados de texto no TensorBoard

Ver no TensorFlow.org Executar no Google Colab Ver fonte no GitHub Baixar caderno

Visão geral

Usando o Resumo TensorFlow texto API, você pode facilmente log arbitrária texto e exibi-lo em TensorBoard. Isso pode ser extremamente útil para amostrar e examinar seus dados de entrada ou para registrar metadados de execução ou texto gerado. Você também pode registrar dados de diagnóstico como texto que podem ser úteis no curso do desenvolvimento de seu modelo.

Neste tutorial, você experimentará alguns casos de uso básicos da API de resumo de texto.

Configurar

try:
  # %tensorflow_version only exists in Colab.
  %tensorflow_version 2.x
except Exception:
  pass

# Load the TensorBoard notebook extension.
%load_ext tensorboard
import tensorflow as tf

from datetime import datetime
import json
from packaging import version
import tempfile

print("TensorFlow version: ", tf.__version__)
assert version.parse(tf.__version__).release[0] >= 2, \
    "This notebook requires TensorFlow 2.0 or above."
TensorFlow version:  2.5.0-dev20210219

Registrar um único pedaço de texto

Para entender como a API de resumo de texto funciona, você simplesmente registrará um pouco de texto e verá como ele é apresentado no TensorBoard.

my_text = "Hello world! 😃"
# Clear out any prior log data.
!rm -rf logs

# Sets up a timestamped log directory.
logdir = "logs/text_basics/" + datetime.now().strftime("%Y%m%d-%H%M%S")
# Creates a file writer for the log directory.
file_writer = tf.summary.create_file_writer(logdir)

# Using the file writer, log the text.
with file_writer.as_default():
  tf.summary.text("first_text", my_text, step=0)

Agora, use o TensorBoard para examinar o texto. Aguarde alguns segundos para a IU girar.

%tensorboard --logdir logs

Organizando vários fluxos de texto

Se você tiver vários fluxos de texto, poderá mantê-los em namespaces separados para ajudar a organizá-los, assim como os escalares ou outros dados.

Observe que, se você registrar o texto em várias etapas, o TensorBoard criará uma subamostra das etapas a serem exibidas para tornar a apresentação gerenciável. Você pode controlar a taxa de amostragem utilizando o --samples_per_plugin bandeira.

# Sets up a second directory to not overwrite the first one.
logdir = "logs/multiple_texts/" + datetime.now().strftime("%Y%m%d-%H%M%S")
# Creates a file writer for the log directory.
file_writer = tf.summary.create_file_writer(logdir)

# Using the file writer, log the text.
with file_writer.as_default():
  with tf.name_scope("name_scope_1"):
    for step in range(20):
      tf.summary.text("a_stream_of_text", f"Hello from step {step}", step=step)
      tf.summary.text("another_stream_of_text", f"This can be kept separate {step}", step=step)
  with tf.name_scope("name_scope_2"):
    tf.summary.text("just_from_step_0", "This is an important announcement from step 0", step=0)
%tensorboard --logdir logs/multiple_texts --samples_per_plugin 'text=5'

Interpretação de Markdown

O TensorBoard interpreta resumos de texto como Markdown, já que a formatação avançada pode tornar os dados que você registra mais fáceis de ler e entender, conforme mostrado abaixo. (Se você não quer interpretação Markdown, consulte esta questão para soluções alternativas para interpretação suprimir.)

# Sets up a third timestamped log directory under "logs"
logdir = "logs/markdown/" + datetime.now().strftime("%Y%m%d-%H%M%S")
# Creates a file writer for the log directory.
file_writer = tf.summary.create_file_writer(logdir)

some_obj_worth_noting = {
  "tfds_training_data": {
      "name": "mnist",
      "split": "train",
      "shuffle_files": "True",
  },
  "keras_optimizer": {
      "name": "Adagrad",
      "learning_rate": "0.001",
      "epsilon": 1e-07,
  },
  "hardware": "Cloud TPU",
}


# TODO: Update this example when TensorBoard is released with
# https://github.com/tensorflow/tensorboard/pull/4585
# which supports fenced codeblocks in Markdown.
def pretty_json(hp):
  json_hp = json.dumps(hp, indent=2)
  return "".join("\t" + line for line in json_hp.splitlines(True))

markdown_text = """
### Markdown Text

TensorBoard supports basic markdown syntax, including:

    preformatted code

**bold text**

| and | tables |
| ---- | ---------- |
| among | others |
"""

with file_writer.as_default():
  tf.summary.text("run_params", pretty_json(some_obj_worth_noting), step=0)
  tf.summary.text("markdown_jubiliee", markdown_text, step=0)
%tensorboard --logdir logs/markdown