TensorBoard 实现指标可视化

2,076 阅读2分钟

跑深度学习模型,我们会有各种指标以及loss。想要可视化怎么办?初学者肯定是学的用matplotlib自己画。虽然自己画也行。但是麻烦啊,有没有东西可以直接帮我们可视化?

有的。pytorch和tensorflow都有一个TensorBoard

讲一下pytorch中怎么用:

官网文档:torch.utils.tensorboard — PyTorch 1.12 documentation


安装

pytorch 版本1.2以上才开始支持tensorboard,之前的版本不支持嗷。

pip install tensorboard

代码中

在代码中导入tensorboard

from torch.utils.tensorboard import SummaryWriter   
writer = SummaryWriter('你要存文件的地址')

# 用完以后记得销毁
writer.close()

这一步是把实例化一个writer。

待会儿tensorboard代码运行的时候会把你想存储的数据丢尽这个文件夹里。然后你在终端输入命令就是从这个文件夹里取出数据使用浏览器显示。

之后就是非常简单的事情了,在你训练过程的epoch迭代过程中加上你要监视的参数。

add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False, double_precision=False)

你要管的参数只有

  • tag (string) – 起个名
  • scalar_value (float or string/blobname) –你要保存的值。
for epoch in range(steps)
    ...
    loss = ...
    
    writer.add_scalar('Loss', loss, epoch)

这样你就可以获得一个loss是x轴,epoch为y轴的数据。

之后查看就是使用终端输入命令

tensorboard --logdir=./path/to/the/folder --port xxxx

找一个空端口就行了。不用非要设置端口,不加--port xxx默认是6006,,然后去浏览器打开localhost+端口号即可。

找个代码操作一下

就用这个文章的代码吧。这是一个可以跑通的短代码。

代码实现MNLM | word embedding开山之作 - 掘金 (juejin.cn)

进入文章,拉倒最底下复制完整代码,丢到你的IDE中。

看一下哦。这是可以运行的对吧。

image.png

找到训练那一段代码。在训练阶段迭代那里加上我的loss。我是直接把数据保存在当前文件下的./log里边了。

1662277064571.png

image.png

运行一下,然后可以看到当前目录多出来一个log文件夹。

image.png

在当前文件夹下打开终端,输入命令tensorboard --logdir=./log --port xxxx

前边自定义端口就写上,前边没自定义端口就不用写--port xxxx

然后我们就可以看到已经生成的loss图像了。

image.png

补充

如果你想看多个参数,多个参数在同一个图上显示,就使用

add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)

多个参数用字典传入。

for i in range(100):
    writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r),
                                    'xcosx':i*np.cos(i/r),
                                    'tanx': np.tan(i/r)}, i)

image.png


需要其他功能的大家可以看文档继续深入学习。