tb-paddle
简介
tb-paddle 是 PaddlePaddle 的可视化工具,通过 tb-paddle 记录的数据,可以在 TensorBoard 中显示。
当前 tb-paddle 已支持 SCALARS, HISTOGRAMS, DISTRIBUTIONS, GRAPHS, IMAGES, TEXT, AUDIO, PROJECTOR,PR CURVES, MESH, CUSTOM SCALARS 这11个栏目的功能。
栏目 | 展示图表 | 作用 |
---|---|---|
SCALARS | 折线图 | 显示损失函数值、准确率等标量数据 |
HISTOGRAMS, DISTRIBUTIONS | 分布图 | 显示行向量数据的数值分布与变化趋势,便于查看权重矩阵、偏置项、梯度等参数的变化 |
GRAPHS | 计算图 | 显示神经网络的模型结构 |
IMAGES | 图片和视频 | 显示图片和视频 |
AUDIO | 音频 | 播放音频 |
TEXT | 文本 | 显示文本 |
PROJECTOR | 交互式的嵌入可视化 | 通过降维方法将高维数据嵌入到 2D/3D 中显示,支持 PCA, t-SNE, UMAP, CUSTOM 这四种降维方法 |
PR CURVES | Precision-Recall曲线 | 根据预测的概率值及其对应的准确答案计算Precision-Recall 曲线 |
MESH | 网格和点云 | 显示3D图形的网格和点云(Meshes and points cloud) |
CUSTOM SCALARS | 组合折线图 | 显示用户自定义组合的折线图 |
上面表格中的链接为各个栏目的使用说明。 此处提供了mnist手写体识别的示例程序, 以帮助快速上手和体验。
安装
# 需要先安装 paddlepaddle,无须安装 TensorFlow
# 版本要求 tensorboard>=1.15,否则前端页面无法自动刷新
pip install tensorboard
# 安装 tb-paddle
pip install tb-paddle
创建 SummaryWriter 类的对象
使用 tb-paddle,首先得创建 class SummaryWriter
的对象,然后才能调用对象的成员函数向日志文件中添加打点数据。
class SummaryWriter 的初始化函数的定义:
def __init__(self, logdir=None, max_queue=1024, comment='', filename_suffix='', **kwargs):
其中各个参数的含义为:
-
logdir
:指定日志文件的存放路径,如果指定路径中没有 tfevents 文件,就新建一个 tfevents 文件,否则会向已有的 tfevents 文件中写数据。logdir
的实参可以为None
,存放路径将设为./runs/DATETIME_HOSTNAME/
; -
max_queue
: 缓冲区队列的最大长度; -
comment
:如果logdir
为None
,则在默认存放路径中添加后缀。如果logdir
不是None
,那么该参数没有任何作用; -
filename_suffix
:event 文件名后缀;
TensorBoard 启动命令
启动 TensorBoard 服务的命令为 tensorboard
,输入 tensorboard --helpful
则可查看此命令的帮助文档。
tensorboard
命令必须搭配选项 --logdir
指定日志文件的目录路径,通常还需使用选项 --host
指定机器的 IP 地址, 选项 --port
指定端口号:
tensorboard --logdir <path/to/dir> --host <host_IP> --port <port_number>
这几个选项的详细解释:
--logdir
选项 --logdir
用于指定日志文件的目录路径,在不同的目录路径间加上逗号,则可同时指定多个目录。例如:
tensorboard --logdir A:path/to/A_dir,B:another_path/to/B_dir
TensorBoard 会递归地检查指定目录中的所有子目录,并加载其中的日志文件,在前端网页中可点击 Runs
进行分类。比如目录结构为:
log
|
|____log_mnist
| |
| |___logtest
| |
| |___logtrain
|
|____paddle_log
则在 TensorBoard 页面的左侧栏中显示为:
图1. TensorBoard Runs 选项 - 按目录分类
--host
机器的IP地址,单机运行时,指定为 0.0.0.0
。
--port
可访问的端口。单机运行时,指定为6***
; 在服务器上运行时,指定为8***
。
特别致谢
tb-paddle 是在 tensorboardX 的基础上修改的,tb-paddle 的框架和 API 名称大多沿用了 tensorboardX。
与 tensorboardX 不同的是:
- tb-paddle 的 API 的参数类型为
numpy.ndarray
; -
SummaryWriter
的函数add_paddle_graph
,可打点记录paddle.fluid.Program()
,进而可在 TensorBoard 的 GRAPHS 栏目显示计算图。
此处由衷感谢Tzu-Wei Huang的开源贡献。