Отображение текстовых данных в TensorBoard

Посмотреть на TensorFlow.org Запускаем в Google Colab Посмотреть исходный код на GitHub Скачать блокнот

Обзор

Использование TensorFlow текст Сводка API, вы можете легко войти произвольный текст и просмотреть его в TensorBoard. Это может быть чрезвычайно полезно для выборки и изучения ваших входных данных или для записи метаданных выполнения или сгенерированного текста. Вы также можете записывать диагностические данные в виде текста, который может быть полезен в процессе разработки вашей модели.

В этом руководстве вы опробуете некоторые основные варианты использования API текстовой сводки.

Настраивать

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

Запись отдельного фрагмента текста

Чтобы понять, как работает API сводки текста, вам нужно просто записать немного текста и посмотреть, как он представлен в 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)

Теперь используйте TensorBoard, чтобы изучить текст. Подождите несколько секунд, пока пользовательский интерфейс не раскрутится.

%tensorboard --logdir logs

Организация нескольких текстовых потоков

Если у вас есть несколько потоков текста, вы можете хранить их в отдельных пространствах имен, чтобы упорядочить их, как скаляры или другие данные.

Обратите внимание, что если вы регистрируете текст на многих этапах, TensorBoard будет выполнять подвыборку шагов для отображения, чтобы сделать презентацию управляемой. Вы можете контролировать скорость отбора проб с использованием --samples_per_plugin флага.

# 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'

Интерпретация уценки

TensorBoard интерпретирует текстовые сводки как Markdown, поскольку богатое форматирование может упростить чтение и понимание регистрируемых данных, как показано ниже. (Если вы не хотите интерпретации Markdown см этот вопрос для обходных путей для подавления интерпретации.)

# 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