Skip to content

TensorBoard 可视化

TensorBoard 是 TensorFlow 提供的一个强大的可视化工具包。它可以帮助你理解、调试和优化你的 TensorFlow 程序。通过 TensorBoard,你可以可视化模型的架构(计算图),跟踪训练过程中的指标(如损失 loss 和准确率 accuracy),查看权重 weights 和偏置 biases 的直方图,显示图像、文本、音频数据等等。

深度神经网络可能非常复杂,有时包含成千上万甚至更多的节点。TensorBoard 通过允许你将节点折叠成高级块,并突出显示具有相同结构的组来帮助管理这种复杂性。这使得能够更专注于分析计算图的主要部分。TensorBoard 的图可视化是交互式的,允许用户平移、缩放和展开节点以检查详细信息。

在 TensorFlow 2.x 中使用 TensorBoard,通常需要在训练或执行过程中记录摘要数据(summary data)。这些数据会被写入指定目录下的事件文件(event files)。然后,你运行 TensorBoard 服务器,并将其指向这个日志目录。

对于 Keras 模型,tf.keras.callbacks.TensorBoard 回调(callback)是一种方便的方式,可以在 model.fit() 期间自动记录各种指标、图信息等。

下面是一个示例,演示了如何在 Keras 模型中使用 TensorBoard 回调:

import tensorflow as tf
import datetime
import numpy as np
# Load and prepare MNIST dataset (example data)
# 加载并准备 MNIST 数据集(示例数据)
(x_train, y_train), _ = tf.keras.datasets.mnist.load_data()
x_train = x_train.astype('float32').reshape(-1, 28*28) / 255.0
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
# Define a simple Keras model
# 定义一个简单的 Keras 模型
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# Define the TensorBoard callback
# 定义 TensorBoard 回调
# Log files will be written to './logs/fit/YYYYMMDD-HHMMSS'
# 日志文件将被写入 './logs/fit/YYYYMMDD-HHMMSS'
log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
# Train the model, including the TensorBoard callback
# 训练模型,包括 TensorBoard 回调
print(f"Starting training... TensorBoard logs will be saved to: {log_dir}")
model.fit(x_train, y_train,
epochs=5,
batch_size=32,
callbacks=[tensorboard_callback])
print("Training complete.")
print("To view TensorBoard, run the following command in your terminal:")
print(f"tensorboard --logdir {log_dir.split('/')[0]}")
print("Then open http://localhost:6006/ in your browser.")
# For more fine-grained control or logging outside Keras model.fit(),
# you can use tf.summary API directly:
# 为了更精细的控制或在 Keras model.fit() 之外进行日志记录,
# 你可以直接使用 tf.summary API:
# writer = tf.summary.create_file_writer(log_dir)
# with writer.as_default():
# for step in range(num_steps):
# # ... your training step ...
# # ... 你的训练步骤 ...
# tf.summary.scalar('my_metric', metric_value, step=step)
# writer.close()

当你在 TensorBoard 中查看计算图时,会使用不同的形状和颜色来表示节点(操作 operations, 常量 constants, 变量 variables)和边(张量 tensors)。这有助于可视化模型的结构和数据流。例如,椭圆形通常表示操作,而矩形可能表示常量或占位符(或它们在 TF2 中的等效物,如输入层)。命名空间(Namespaces),用于对相关操作进行分组,通常显示为可以展开的较大的矩形块。

你可以在 TensorBoard 中探索的关键功能包括:

  • Scalars:跟踪随时间变化的指标,如损失(loss)、准确率(accuracy)、学习率(learning rate)。
  • Graphs:可视化模型架构。对于启用了 Eager Execution 的 TensorFlow 2.x,图可视化主要适用于使用 @tf.function 装饰器修饰的函数。
  • Distributions and Histograms:查看权重(weights)、偏置(biases)或激活值(activations)如何随时间变化。
  • Projector:可视化高维嵌入(embeddings)(例如,词嵌入)。
  • Images, Audio, Text:记录和查看这些类型的数据。

有关 TensorBoard 及其功能的详细信息,请访问:https://www.tensorflow.org/tensorboard