前言
在训练CNN模型时候,一般需要实时打印出Loss, Accuracy等数值,这样我们大概可以判断模型是否收敛,准确度如何。但是只打印Loss的方法不太直观,为此需要将Loss,Accuracy等数值用曲线显示出来。
数据可视化采用的的工具:
- matplotlib
- tensorboardX
- visdom
为了配合pytorch, 采用visdom进行数据可视化。
开发、测试环境
- Ubuntu 18.04
- pycharm
- pytorch
- visdom
- Google chrome浏览器
Visdom安装
pip install visdom
conda install -c srivasv visdom
Visdom介绍
visdom是Facebook专门为Pytorch开发的一款可视化工具,开源于2017年3月,项目地址为visdom,其十分轻量级,但功能丰富,提供了大多数的科学运算可视化API,基本可视化界面如下图所示:

visdom支持多种数据格式的可视化,包括数值、图像、文本以及视频等,支持Pytorch、Torch和Numpy。用户可以通过编程的方式组织可视化空间或者通过用户接口为数据打造仪表板,检查实验结果和调试代码。
使用Visdom可视化数据
首先启动visdom, 打开终端:
python -m visdom.server

在浏览器中打开:http://localhost:8097

绘制简单曲线
- sine函数
- cosine函数
- tan函数
- tanh函数
- 幂函数
- 指数函数
from visdom import Visdom
import numpy as np
viz = Visdom(env='test')
x = np.linspace(start=0, stop=2 * np.pi, num=100)
y1 = np.sin(x)
viz.line(Y=y1, X=x, win='sine')
# cosine
y2 = np.cos(x)
viz.line(Y=y2, X=x, win='cosine')
# sin-cos
viz.line(Y=np.column_stack((y1, y2)), opts=dict(showLegend=True), win='sin-cos')
# tan
y3 = np.tan(x)
viz.line(Y=y3, X=x, win='tan')
# tanh
y4 = np.tanh(x)
viz.line(X=x, Y=y4, win='tanh')
# power
viz.line(X=x, Y=np.power(x, 2), win='pow2')
# exp
viz.line(X=x, Y=np.exp(x), win='exp')




visdom显示图像
from visdom import Visdom
import numpy as np
import skimage.io as io
# visdom显示图像
viz = Visdom(env='test2')
# H x W x C
image1 = io.imread('./data/bird1.jpg')
# W x H x C
viz.image(np.transpose(image1, (2, 0, 1)), win='bird1')
viz.image(np.transpose(io.imread('./data/dog.jpg'), (2, 0, 1)), win='dog')

visdom显示实时的动态曲线
from visdom import Visdom
import numpy as np
import time
viz = Visdom(env='test3')
x, y = 0, 0
win = viz.line(X=np.array([x]), Y=np.array([y]))
for i in np.linspace(0, 2 * np.pi, 1000):
x = i
y = np.sin(x)
viz.line(X=np.array([x]), Y=np.array([y]), win=win, update='append')
time.sleep(0.0001)


End
next, 将CNN训练的loss, accurcay实时显示出来。
参考:
https://blog.csdn.net/wen_fei/article/details/82979497
https://blog.csdn.net/LXX516/article/details/79019328
网友评论