pip install -i https://mirrors.aliyun.com/pypi/simple visdom
应用阿里源进行加速下载
1.下载visdom源码
点击上方链接即可进入github项目页面下载源码,如果受到国内网络限制,下载速度不尽人意可以下载此处我创建的国内镜像,版本为0.1.8.9,如有更新教程会同步。
2.解压文件
将项目文件解压在 主盘符:\Anaconda\Lib\site-packages下。
3.安装
打开cmd切入 主盘符:\Anaconda\Lib\site-packages\visdom并执行命令
pip install -e .
安装成功提示
Successfully installed visdom-0.1.8.9
此处配置是下下之选,如果对自己网络状态很自信可以直接跳过配置进入使用。
修改 主盘符:\Anaconda\Lib\site-packages\visdom\py\visdom\server.py
def download_scripts_and_run():
download_scripts()
main()
为
def download_scripts_and_run():
# download_scripts()
main()
修改 主盘符:\Anaconda\lib\site-packages\tornado\platform\asyncio.py"文件,在
if sys.platform == "win32" and hasattr(asyncio, "WindowsSelectorEventLoopPolicy"):
之前添加
if sys.platform == 'win32':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
下载百度网盘文件: 提取码:f96l
文件不大,没有会员下载也就两秒。
用此文件夹替换 主盘符:\Anaconda\Lib\site-packages\visdom\py\visdom\static文件夹。
运行指令
python -m visdom.server
输出
(base) F:\Anaconda\Lib\site-packages\visdom>python -m visdom.server
F:\Anaconda\lib\site-packages\visdom\py\visdom\server.py:36: DeprecationWarning: zmq.eventloop.ioloop is deprecated in pyzmq 17. pyzmq now works with defaul
t tornado and asyncio eventloops.
ioloop.install() # Needs to happen before any tornado imports!
It's Alive!
INFO:root:Application Started
You can navigate to http://localhost:8097
就说明成功跑起来啦!!
如果下载脚本不成功建议回到配置部分进行一下配置,稍后我会讲解下载成功和不成功的区别。
运行浏览器打开 http://localhost:8097 就可以进入网页可视化界面。
import visdom
import torch
vis = visdom.Visdom()
x = torch.arange(1,100,0.01)
y=torch.sin(x)
vis.line(X=x, Y=y,win='sinx',opts={'title':'y=sin(x)'})
如果服务器在运行状态就会成功运行,服务器关闭状态则这段代码运行会报错
成功状态:
Setting up a new session...
进程已结束,退出代码0
失败状态:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8097): Max retries exceeded with url: /events (Caused by NewConnectionError(': Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。' ))
网络状况好的同学建议用pip安装后直接开启服务器,此时会自动下载脚本,用于网页的刷新。网络状况不好的同学可以通过配置使用visdom,缺点是会影响visdom的画面自动刷新,编码的时候要注意
viz.line(X=np.array([x]), Y=np.array([y]), win=win, update='append')
这种方式对经过配置才生效的版本无效,需要手动刷新,可以考虑
test_acc = torch.cat((test_acc.to("cpu"), torch.FloatTensor(total_correct.to("cpu")/len(test_dataset.dataset)*100).to("cpu")), dim=0)
epoch_idx = torch.cat((epoch_idx, epoch_idx[-1] +torch.tensor([1])), dim=0)
vis.line(X=epoch_idx, Y=test_acc, win='acc/test', opts={'title': 'acc/test'})
这种方式将向量组合起来对界面进行更新,比较耗费内存,而且极大影响代码的美观。尽量采取update参数进行更新,这样X和Y都可以只传入最新的数值,省时省力且美观,个人建议挑个良辰吉日选择自动下载的版本。
另外:
由于网络表现可视化与网络性能息息相关,所以我在这里挖个坑,下篇文章会写写需要可视化的参数以及模型的调优一系列相关知识,喜欢的朋友可以点点关注免得迷路,在此谢过!