Visdom
visdom是pytorch的可视化工具, 使用visdom方便跟踪网络训练时损失函数、正确率、学习率等参数的变化。
1 下载安装
python环境中应该要有pytorch.
pip install visdom
2 启动
在终端输入:
python -m visdom.server
启动正常会出现:
这里ctrl+右击网址
,会在浏览器中打开一个窗口,如下:
到这一步,整个visdom的运行环境已经完成。
3 使用
在程序中,导入visdom模块:
from visdom import Visdom
vidsom有环境和窗口的概念,刚开始接触的时候,可能有点混乱,此处做一下记录。
3.1 环境
打开浏览器,可以看到目前三个环境,那么环境如何创建?
以上述存在的activitiy classification1
环境为例:
viz1 = Visdom(env="activitiy classification1")
该语句,创建了一个viz1环境,环境名为:“activitiy classification1”
3.2 窗口
在一个环境中,可以创建多个窗口,见图:
目前,viz1环境中有4个窗口,分别表示损失函数、训练正确率、测试正确率以及学习率随训练的变化。窗口如何创建?
以上述训练正确率为例:
train_acc_win = viz1.line(X=np.array([0]),
Y=np.array([0]),
opts=dict(title='train_acc'))
可以看到有三个变量需要赋值,X表示横坐标,Y表示纵坐标,使用opts选项可以为窗口设置标题。这里X,Y赋值为0,进行初始化。
到这一步,我们建立了环境,以及环境下的窗口若干,接下来的问题是,如何更新?
3.3 更新
viz1.line(X=np.array([epoch]),
Y=np.array([epoch_train_acc]),
win=train_acc_win,
update='append')
- viz1:上面建立的环境的变量名。
- win:上面建立的窗口名
- update:设置为‘append’,在原来的基础上画新点,一般也只使用这个选项。
- X:输入的应该是一个数组,实际我们一般选取epoch作为横坐标,这里的epoch是实际运行时的epoch,是一个数,使用
[]
,转换为列表后再转换为数组。 - Y:输入数组,epoch_train_acc,理解同上,根据程序实际的设置而定,我的程序中是这样子的:
至此就完成了visdom的配置与使用。