整体说明
- 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
22import 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
21import 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 的文件夹 - 训练过程中数据不会自动刷新,可以随时刷新浏览器查看实时更新的数据