首先在服务器端安装visdom
1
pip install visdom
使用流程简述
服务器端启动
visdom
(建议在screen
下进行)1
visdom # equivalent to running python -m visdom.server.
当使用VS code时,在终端窗口
port
栏即可看到8097
的port
,点击Open in Browser
即可打开浏览器显示visdom
界面。如果不是使用VS code或者登入http://localhost:8097/没法显示到
visdom
界面,可尝试做好端口映射。在本机执行1
ssh -C -f -N -g -L 8097:localhost:8097 -p <your_server_port> <user_name>@<ip>
默认端口为8097,若需要指定端口,可执行
visdom -port <new_port>
服务器端运行代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# filename: vis_exp.py # This is a toy example import visdom viz = visdom.Visdom(env='<your_env_name>') iter_set = [] loss_set = [] for iter in total_iter: loss = ... iter_set.append(iter) loss_set.append(loss) viz.line(X=iter_set, Y=loss_set, win='<your_win_name>')
在服务器端已启动
visdom
后(第1步),运行该程序:1
python vis_exp.py
本机浏览器登入
localhost:8097
,即可观察到上述定义的曲线。
Demos
官方github给了一些demo,可参照,另可参考知乎。以下纪录一些常用操作,方便直接使用。
指定
win
为某一名称,则可在所在窗口进行更新,而不是新建一个窗口作图,参见这里
绘制曲线
绘制单条曲线
1
2
3
4
viz.line(X=x_vec,
Y=y_vec,
win='win_name', # 在所在窗口进行更新,而不是新建一个窗口作图
opts=dict(xlabel='xlabel', ylabel='ylabel',title='title'))
绘制多条曲线并加上图例
1
2
3
4
5
6
7
8
import numpy as np
viz.line(X=np.column_stack((X_tensor_set_1, X_tensor_set_2)),
Y=np.column_stack((Y_tensor_set_1, Y_tensor_set_2)),
win='win_name',
opts=dict(xlabel='xlabel', ylabel='ylabel',title='title'
legend=['legend1', 'legend2'])
)
文本框
1
2
3
4
5
6
# append manner
textwindow = viz.text('Hello World! More text should be here')
viz.text('And here it is', win=textwindow, append=True)
# not append manner
viz.text(<your_text>, win='<your_win_name>')
图片
1
2
3
4
5
6
7
8
9
10
11
# 注意这里传入的图片应为CHW格式的
# 单张
viz.image(
np.random.rand(3, 512, 256),
opts=dict(title='Random!', caption='How random.'),
)
# 多张
viz.images(
np.random.randn(20, 3, 64, 64),
opts=dict(title='Random images', caption='How random.')
)
其他
关闭窗口
1
2
# 通过指定win来关闭对应窗口。当win为None时,关闭当前环境下所有窗口
vis.close(win=None)
保存和本地加载visdom实验结果
This github repo theevann/visdom-save helps.