Pytorch使用TensorBoard做可视化

2020/10/10 07:22
阅读数 109

TensorBoard是一款优秀的基于浏览器的机器学习可视化工具。之前是tensorflow的御用可视化工具,由于tensorboard并不是直接读取tf张量,而是读取log进行可视化。所以,其他框架只需生成tensorboard可读的log,即可完成可视化。

之前,我一直用visdom做pytorch可视化,也是非常易用。不过现在跟tensorboard对比,我还是更推荐tensorboard

visdom相比tensorboard只有一个优点,那就是自动实时刷新。而tensorboard无论从可视化美观性、可视化数据多样性等多个方面,都碾压visdom。甚至,tensorboard更加易用一些。

先给一个官方文档链接:https://pytorch.org/docs/stable/tensorboard.html

tensorboard的安装就不在这篇文章讲述了。安装1.15以上的版本即可。


1. 标量(scalars)数据可视化

标量就是数字,咱们训练过程中的loss值,测试集的accuracy,包括precision和recall等等都可以通过这个方式画出曲线。可以更直观地反映模型的训练情况。还在拿matplotlib可视化loss曲线的童鞋可以换家伙什儿了。

用tensorboard做标量可视化非常简单:

from torch.utils.tensorboard import SummaryWriter

log_writer = SummaryWriter()

def train(xxx):
    for epoch in epochs:
        loss = xxx
        log_writer.add_scalar('Loss/train', float(loss), epoch)

首先咱们需要一个写log的东西——log_writer, 然后直接add_scalar就可以了。

add_scalar('Loss/train', float(loss), epoch),第一个参数是名称,第二个参数是y值,第三个参数是x值。(用x,y画图,不用我解释x,y是啥吧?)

也就比原来的训练代码多了三行,即可收集训练的loss,用以可视化。

咱们可以先把加了三行的训练代码跑起来,中途生成的loss都会保存在当前目录下一个名为'runs/'的文件夹中。当然这个文件夹可以自定义,'runs/'只是默认名。

第二步,咱们就打开tensorboard瞅一瞅。再打开一个terminal,输入:

tensorboard --logdir=runs/

运行以后,会给你一个链接,用浏览器打开即可。一般为 https://127.0.0.1:6006,6006端口被占用的话会是另一个端口。

我实际运行的一个loss如下:

看着还是很酷炫的,可以点击右上角刷新,以查看实时训练情况。

总结

tensorboard可不止可视化标量,还可以做很多事情,比如可视化特征图,网络结构,音频信号等等。

我先把坑占着,后面的慢慢写。 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部