Hiển thị dữ liệu văn bản trong TensorBoard

Xem trên TensorFlow.org Chạy trong Google Colab Xem nguồn trên GitHub Tải xuống sổ ghi chép

Tổng quat

Sử dụng Tóm tắt API TensorFlow Text, bạn có thể dễ dàng đăng nhập tùy ý văn bản và xem nó trong TensorBoard. Điều này có thể cực kỳ hữu ích để lấy mẫu và kiểm tra dữ liệu đầu vào của bạn hoặc để ghi lại siêu dữ liệu thực thi hoặc văn bản được tạo. Bạn cũng có thể ghi dữ liệu chẩn đoán dưới dạng văn bản có thể hữu ích trong quá trình phát triển mô hình của bạn.

Trong hướng dẫn này, bạn sẽ thử một số trường hợp sử dụng cơ bản của API Tóm tắt Văn bản.

Thành lập

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

Ghi nhật ký một đoạn văn bản

Để hiểu cách hoạt động của API Tóm tắt Văn bản, bạn chỉ cần ghi lại một đoạn văn bản và xem nó được trình bày như thế nào trong 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)

Bây giờ, sử dụng TensorBoard để kiểm tra văn bản. Chờ một vài giây để giao diện người dùng quay lên.

%tensorboard --logdir logs

Tổ chức nhiều luồng văn bản

Nếu bạn có nhiều luồng văn bản, bạn có thể giữ chúng trong các không gian tên riêng biệt để giúp tổ chức chúng, giống như vô hướng hoặc dữ liệu khác.

Lưu ý rằng nếu bạn ghi nhật ký văn bản ở nhiều bước, TensorBoard sẽ lấy mẫu phụ các bước hiển thị để giúp bản trình bày có thể quản lý được. Bạn có thể kiểm soát tốc độ lấy mẫu bằng cách sử dụng --samples_per_plugin cờ.

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

Giải thích Markdown

TensorBoard hiểu tóm tắt văn bản là Markdown, vì định dạng đa dạng thức có thể giúp dữ liệu bạn ghi nhật ký dễ đọc và dễ hiểu hơn, như được hiển thị bên dưới. (Nếu bạn không muốn Markdown giải thích, xem vấn đề này đối với cách giải quyết để giải thích đàn áp.)

# 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