הצגת נתוני טקסט ב- TensorBoard

הצג באתר TensorFlow.org הפעל בגוגל קולאב צפה במקור ב-GitHub הורד מחברת

סקירה כללית

שימוש ב- API סיכום טקסט TensorFlow, אתה יכול להתחבר שרירותי בקלות טקסט ולהציג אותו TensorBoard. זה יכול להיות מאוד מועיל כדי לדגום ולבחון את נתוני הקלט שלך, או כדי להקליט מטא נתונים של ביצוע או טקסט שנוצר. אתה יכול גם לרשום נתוני אבחון כטקסט שיכול להיות מועיל במהלך פיתוח המודל שלך.

במדריך זה, תנסה כמה מקרי שימוש בסיסיים של ה-API של Text Summary.

להכין

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 של Text Summary, אתה הולך פשוט לרשום מעט טקסט ולראות כיצד הוא מוצג ב-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