DL——TensorBoard的使用


整体说明

  • TensorBoard 是 TensorFlow 提供的可视化工具,能帮助理解、调试和优化深度学习模型
  • 安装 TensorBoard
    1
    pip install tensorboard

启动 TensorBoard

  • 可以使用命令行工具执行下面的命令从一个指定目录启动 TensorBoard:

    1
    tensorboard --logdir=path/to/logs --port=6006 --host=0.0.0.0
  • 参数解释:

    • --logdir:这个参数用于指定 TensorFlow 事件文件所在的目录
      • TensorBoard 会对该目录进行监控,一旦有新的事件文件生成,它就会实时更新可视化内容
      • 可以只指定一个目录,也可以通过逗号分隔的方式指定多个目录,或者使用通配符来匹配多个目录
      • 一个目录下可以有多个子目录,TensorBoard 会同时显示,可通过页面选择勾选目标子文件夹
    • --port:此参数用于设置 TensorBoard 服务监听的端口,默认使用 6006 端口
      • 如果你想在同一台机器上同时运行多个 TensorBoard 实例,可以为它们指定不同的端口后分别启动
    • --host:通过这个参数可以设置 TensorBoard 服务监听的 IP 地址
      • 默认是 localhost(即 127.0.0.1),此时仅能在本机上访问
      • 若你想让其他机器能够访问当前机器上的 TensorBoard,可将其设置为 0.0.0.0

TensorBoard 展示细节

  • TensorBoard 启动之后,通过浏览器即可访问
  • 最常用的 TensorBoard 页面包含 Scalars、Graphs、Histograms 等,点击这些选项卡可以查看不同类型的可视化数据

TensorBoard 文件的生成

PyTorch TensorBoard 示例

  • 使用 PyTorch 生成 TensorBoard 文件的示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import torch
    from torch.utils.tensorboard import SummaryWriter

    # 创建 SummaryWriter 对象,指定日志保存目录
    writer = SummaryWriter('runs/pytorch_demo')

    # 模拟训练过程
    for epoch in range(100):
    # 模拟损失值(通常是训练过程中计算得到的)
    loss = 0.9 ** epoch

    # 记录损失值到 TensorBoard
    writer.add_scalar('Loss/train', loss, epoch)

    # 模拟模型权重
    weights = torch.randn(10) * (0.95 ** epoch)

    # 记录直方图到 TensorBoard
    writer.add_histogram('Weights', weights, epoch)

    # 关闭 writer
    writer.close()

PyTorch TensorBoard 示例

  • 使用 TensorFlow 生成 TensorBoard 文件的示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import tensorflow as tf
    import numpy as np

    # 创建 SummaryWriter 对象,指定日志保存目录
    writer = tf.summary.create_file_writer('runs/tensorflow_demo')

    # 模拟训练过程
    for epoch in range(100):
    # 模拟损失值
    loss = 0.9 ** epoch

    # 记录损失值到 TensorBoard
    with writer.as_default():
    tf.summary.scalar('Loss/train', loss, step=epoch)

    # 模拟模型权重
    weights = np.random.randn(10) * (0.95 ** epoch)

    # 记录直方图到 TensorBoard
    with writer.as_default():
    tf.summary.histogram('Weights', weights, step=epoch)

一些说明

  • TensorBoard 可以同时显示多个项目的数据,如上述示例就在同一个目录 runs 下分别创建了 PyTorch 和 TensorFlow 的文件夹
  • 训练过程中数据不会自动刷新,可以随时刷新浏览器查看实时更新的数据