pytorch进阶知识-Visdom可视化

2019-11-17 22:04:26 浏览数 (1)

本节介绍一个用于辅助分析、查看loss、accuracy等的重要工具—Visdom可视化工具。

使用过tensorflow的人应该见过tensorflow的可视化工具—tensorboard

用户可以在这上面查看照片、或进行使数据可视化的操作。

而对于pytorch也有类似的功能,即tensorboardX。

安装该工具包也较为简单,在cmd命令里直接输入

pip install tensorboardX

tensorboardX上也具有同tensorboard类似的功能,可以查看图片或进行使数据可视化的操作。

但tensorboardX有一个问题,即它使用的是numpy的数据,转换成tensor数据时还要先转换到cpu上面,较麻烦。

本节课介绍一个可以原生的接收tensor数据的、更节省空间、运行速度更快、交互性更好、更美观的可视化工具—Visdom。

安装Visdom的方法十分简单,直接在cmd上输入pip install visdom即可。

若想调用visdom窗口、开启监听进程需要在cmd上输入 python -m visdom.server即可。

这里相当于开启了web服务器,数据会自动的调向服务器进行监听。因此必须在进行网络结构运行前就确保已经开启了监听服务器。

将下面提供的地址http://localhost:8097输入到任意一个浏览器的地址行中

随后便顺利开启了visdom

下面以具体代码示例visdom如何运行

若想对单线条进行监听

代码语言:javascript复制
from visdom import Visdom

viz = Visdom()
# 首先创建一个visdom的实例

viz.line([0.], [0.], win='train_loss', opts = dict(title='train_loss'))
# 先创建并初始化一个直线两个初始点依次为y和x的值,
# 设置窗口和窗口的标题均为:train_loss
viz.line([loss.item()], [global_step])
# 将数据喂给loss,[global_step]代表x的时间戳,
# 更新方式为”添加”

多条曲线可以展开对比,以更好的对数据进行分析,而若想创建多条曲线,则代码为

代码语言:javascript复制
viz = Visdom()

viz.line([[0.0, 0.0]], [0.], win='test',
         opts=dict(title='title loss&acc.', legend=['loss', 'acc']))
# loss和acc分别为y1和y2曲线
viz.line([[test_loss, correct / len(test_loader.dataset)]],
         [global_step], win='test', update='append')

运行的结果为

这里注意loss的波动范围为[0⁓100],而acc的波动范围为[0⁓1],因此该图看上去不美观,在自己的实际应用中,应该注意这些问题。

若想查看图片,则代码为

代码语言:javascript复制
from visdom import Visdom

viz = Visdom()

viz.images(data.view(-1, 1, 28, 28), win='x')
# data为mnist数据集
viz.text(str(pred.datach().cpu().numpy()), win='pred', opts=dict(title='pred'))

输出为

由此可见,visdom可以较方便的进行各类数据的输出

0 人点赞