Visualizzazione dei dati di testo in TensorBoard

Visualizza su TensorFlow.org Esegui in Google Colab Visualizza la fonte su GitHub Scarica taccuino

Panoramica

Utilizzando l'API Sommario tensorflow testo, si può facilmente accedere arbitraria di testo e visualizzarlo in TensorBoard. Questo può essere estremamente utile per campionare ed esaminare i dati di input o per registrare i metadati di esecuzione o il testo generato. Puoi anche registrare i dati diagnostici come testo che può essere utile nel corso dello sviluppo del modello.

In questo tutorial, proverai alcuni casi d'uso di base dell'API Text Summary.

Impostare

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

Registrazione di un singolo pezzo di testo

Per capire come funziona l'API Text Summary, registrerai semplicemente un po' di testo e vedrai come viene presentato in 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)

Ora usa TensorBoard per esaminare il testo. Attendi qualche secondo che l'interfaccia utente si avvii.

%tensorboard --logdir logs

Organizzazione di più flussi di testo

Se disponi di più flussi di testo, puoi conservarli in spazi dei nomi separati per organizzarli, proprio come gli scalari o altri dati.

Nota che se registri il testo in molti passaggi, TensorBoard sottocampionerà i passaggi da visualizzare in modo da rendere gestibile la presentazione. È possibile controllare la frequenza di campionamento utilizzando il --samples_per_plugin bandiera.

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

Interpretazione del markdown

TensorBoard interpreta i riepiloghi di testo come Markdown, poiché la formattazione avanzata può rendere i dati registrati più facili da leggere e comprendere, come mostrato di seguito. (Se non si desidera che l'interpretazione Markdown, vedere questo problema per soluzioni alternative all'interpretazione sopprimere.)

# 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