عرض بيانات النص في TensorBoard

عرض على TensorFlow.org تشغيل في Google Colab عرض المصدر على جيثب تحميل دفتر

ملخص

باستخدام API ملخص TensorFlow النص، يمكنك بسهولة تسجيل تعسفي النص ومشاهدته في TensorBoard. يمكن أن يكون هذا مفيدًا للغاية لأخذ عينات من بيانات الإدخال وفحصها ، أو لتسجيل البيانات الوصفية للتنفيذ أو النص الذي تم إنشاؤه. يمكنك أيضًا تسجيل بيانات التشخيص كنص يمكن أن يكون مفيدًا في سياق تطوير النموذج الخاص بك.

في هذا البرنامج التعليمي ، سوف تجرب بعض حالات الاستخدام الأساسية لواجهة برمجة تطبيقات 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

تسجيل جزء واحد من النص

لفهم كيفية عمل Text Summary 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'

تفسير Markdown

يفسر TensorBoard الملخصات النصية على أنها 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