1、介绍
TensorBoard 是可视化工具,用于跟踪和可视化以下内容:
主要功能模块:
-
标量可视化 - 损失、准确率等指标
-
图像可视化 - 输入/输出图像、特征图
-
图表可视化 - 模型计算图
-
直方图分布 - 权重、偏置的分布变化
-
嵌入可视化 - 高维数据的降维展示
-
文本可视化 - 文本数据
-
超参数调优 - HParams 面板
2、 安装
bash
pip3 install tensorboard==2.12.0 -i https://pypi.doubanio.com/simple/ --target=/home/qhr/anaconda3/envs/pytorch/lib/python3.8/site-packages
3、运行
bash
tensorboard --logdir=/home/qhr/PythonPorject/hymenoptera/logs --port=6007
如果报错:zsh: command not found: tensorboard
bash
第一种解决方案:
alias tensorboard='python3 -m tensorboard.main'
第二种解决方案:
python3 -m tensorboard.main --logdir=.
第三种解决方案:
将alias命令放到 .zshrc 里
4、函数详解
4.1. 标量记录 - add_scalar()
python
writer.add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False)
参数解释:
-
tag(string): 指标的标签名称,如 'train/loss' -
scalar_value(float): 要记录的标量值 -
global_step(int): 全局步数,通常是训练步数或epoch数 -
walltime(float): 可选,覆盖默认的walltime
4.2. 图像记录 - add_image()
python
writer.add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
参数解释:
-
tag(string): 图像标签 -
img_tensor(torch.Tensor, numpy.array): 图像数据 -
global_step(int): 全局步数 -
dataformats(string): 数据格式,如 'CHW', 'HWC', 'HW', 'WH'等
以及其他的函数
|-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 多个图像记录 - add_images() | python writer.add_images(tag, img_tensor, global_step=None, walltime=None, dataformats='NCHW') 参数解释: img_tensor 应该是批量的图像,形状为 [N, C, H, W] 或 [N, H, W, C] |
| 直方图记录 - add_histogram() | python writer.add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None) 参数解释: * tag (string): 直方图标签 * values (torch.Tensor, numpy.array): 要分析的值 * bins (string): 分桶策略 |
5、代码
创建一个Python文件
python
import numpy as np
from torch.utils.tensorboard import SummaryWriter
import cv2
from dataset import MyDataSet
if __name__ == "__main__":
print("tensor board test")
img_dir_path = "./hymenoptera_data/train/ants_img"
label_dir_path = "./hymenoptera_data/train/ants_label"
my_dataset = MyDataSet(img_dir_path, label_dir_path)
ant_img, ant_label = my_dataset[0]
ant_img.show()
print(ant_label)
print(np.array(ant_img).shape)
writer = SummaryWriter("logs") # 存储目录
# 可视化图片
writer.add_image("test", np.array(ant_img), 1, dataformats='HWC')
#可视化标量
for i in range(100):
writer.add_scalar("y=x", i, i)
writer.close() # 关闭
代码中我们使用到了前文用到的MyDataSet,同时从
torch.utils.tensorboard 导入 SummaryWriter
python
writer = SummaryWriter("logs") # 存储目录
创建writer实例,并定义存储目录名称"logs"
示例中显示如何向tensorboard添加图片、标量数据
python
# 可视化图片
writer.add_image("test", np.array(ant_img), 1, dataformats='HWC')
#可视化标量
for i in range(100):
writer.add_scalar("y=x", i, i)
最后再关闭writer
python
writer.close() # 关闭
6、执行
上面的代码执行过后
在本地会有个logs目录,

然后启动tersorboard
bash
tensorboard --logdir=./logs --port=6007
启动后会有终端输出

复制这个网址在浏览器中打开

就能看到我们传入的图片和标量数据