TensorboardX可以提供中很多的可视化方式,本文主要介绍scalar 和 graph,这在深度网络调试时主要使用的,一个用于显示训练情况,一个用于显示网络结构。
首先,需要创建一个 SummaryWriter 的示例:
from tensorboardX import SummaryWriter
# Creates writer1 object.
# The log will be saved in 'runs/exp'
writer1 = SummaryWriter('runs/exp')
# Creates writer2 object with auto generated file name
# The log directory will be something like 'runs/Aug20-17-20-33'
writer2 = SummaryWriter()
# Creates writer3 object with auto generated file name, the comment will be appended to the filename.
# The log directory will be something like 'runs/Aug20-17-20-33-resnet'
writer3 = SummaryWriter(comment='resnet')
以上展示了三种初始化 SummaryWriter 的方法:
1)提供一个路径,将使用该路径来保存日志
2)无参数,默认将使用 runs/日期时间 路径来保存日志
3)提供一个 comment 参数,将使用 runs/日期时间-comment 路径来保存日志
一般来讲,我们对于每次实验新建一个路径不同的 SummaryWriter,也叫一个 run,如 runs/exp1、runs/exp2。
接下来,我们就可以调用 SummaryWriter 实例的各种 add_something 方法向日志中写入不同类型的数据了。想要在浏览器中查看可视化这些数据,只要在命令行中开启 tensorboard 即可:
tensorboard --logdir=
其中的
使用 add_scalar
方法来记录数字常量。
add_scalar(tag, scalar_value, global_step=None, walltime=None)
参数
需要注意,这里的 scalar_value 一定是 float 类型,如果是 PyTorch scalar tensor,则需要调用 .item() 方法获取其数值。我们一般会使用 add_scalar 方法来记录训练过程的 loss、accuracy、learning rate 等数值的变化,直观地监控训练过程。
Example
from tensorboardX import SummaryWriter
writer = SummaryWriter('runs/scalar_example')
for i in range(10):
writer.add_scalar('quadratic', i**2, global_step=i)
writer.add_scalar('exponential', 2**i, global_step=i)
这里,我们在一个路径为 runs/scalar_example
的 run 中分别写入了二次函数数据 quadratic
和指数函数数据 exponential
,在浏览器可视化界面中效果如下:
writer = SummaryWriter('runs/another_scalar_example')
for i in range(10):
writer.add_scalar('quadratic', i**3, global_step=i)
writer.add_scalar('exponential', 3**i, global_step=i)
接下来我们在另一个路径为 runs/another_scalar_example 的 run 中写入名称相同但参数不同的二次函数和指数函数数据,可视化效果如下。我们发现相同名称的量值被放在了同一张图表中展示,方便进行对比观察。同时,我们还可以在屏幕左侧的 runs 栏选择要查看哪些 run 的数据。如下图所示:
使用 add_graph
方法来可视化一个神经网络:
add_graph(model, input_to_model=None, verbose=False, **kwargs)
参数
该方法可以可视化神经网络模型,TensorboardX 给出了一个官方样例大家可以尝试。样例运行效果如下:
参看博客:https://blog.csdn.net/bigbennyguo/article/details/87956434
方便理解tensorboardX的具体使用过程
运行结果
点击Net1部分可以将其网络展开,查看网络内部构造,如下图所示。其他部分可以继续展开查看详情。
打开tensorboard可视化结果如下:
模型可视化:
损失可视化:
本Demo代码为TensorboardX提供的官方Demo代码。
可视化结果如下:
参考博客:https://www.jianshu.com/p/46eb3004beca
利用Xshell隧道
首先 隧道 在Xshell > 文件 > 当前会话属性 > 连接 > SSH > 隧道
点添加 , 之后 源主机和目标主机 都是 localhost不变,不要自作聪明去给改成本机IP和服务器地址了。
然后就是一个小技巧了,网上的方法多用本机的16006端口。但其实完全没有必要这样做。
直接将侦听端口 和 目标端口 都设置成6006(tensorboard的访问地址) 即可。
运行方法
在服务器端运行 tensorboard --logdir=model_dir(模型地址)
注意模型地址不需要加引号
(tensorboard --logdir=/home/zhongzhanhui/PycharmProject/VDCNN/logs)
本机浏览器访问 127.0.0.1:6006
然后就可以开始看tensorboard的内容啦
参考博客:https://blog.csdn.net/weixin_41519463/article/details/90138438
2)直接在终端输入
ssh -L 16006:127.0.0.1:6006 [email protected]
训练完模型后(也可以在训练的同时),输入如下命令:
tensorboard --logdir=/path/to/log-directory
最后,在本地访问地址:http://127.0.0.1:16006/
参考博客:https://blog.csdn.net/zhaokx3/article/details/70994350