pytorch框架下的数据可视化模块visdom安装使用

1、visdom是什么??

visdom是facebook开发的一款可视化工具,使用pytorch训练神经网络时,可以使用visdom来实时对数据可视化。

2、安装

pip install visdom

因为会用到画图,所以推荐同时安装matplotlib

pip install matplotlib

3、启动服务

3.1 如果是本地启动服务:

利用下边的命令在cmd中输入即可!

python -m visdom.server

然后会输出以下所示内容:
visdom的默认端口是8097

You can navigate to http://localhost:8097 

3.2如果是想修改指定端口

可以在启动服务的时候指定端口号:

python -m  visdom.server -p 端口号

此时,在浏览器就可以输入以下端口打开visdom的web服务了

You can navigate to http://localhost:端口号

3.3 服务器端启动服务

(1)在服务器上使用8097端口正常启动visdom,终端输入:

python -m visdom.server
如果使用自己指定的端口:
python -m visdom.server -p 端口号

此时调用到时候代码中也得指定端口号,如果利用里默认的启动方法,则不需要。如下所示:

import matplotlib.pyplot as plt
from visdom import Visdom
vis = Visdom(port=9015)#我指定端口为9015
plt.plot(range(100))
vis.matplot(plt)

(3)本地浏览器输入以下地址即可打开visdom服务器

服务器IP:刚才设置的端口
例如:
10.8.192.119015

4、离线服务器安装

4.1visdom离线安装法

此处比较简单粗暴的方法就是利用conda迁移大法,在本地的环境中配置好,然后迁移到离线服务器。(conda迁移方法可以参考:conda实现本地项目环境迁移到离线服务器使用)

4.2 由于服务器不能联网可能出现一直在下载包的界面,提示如下:

Needs to happen before any tornado imports! 
Checking for scripts

此时我们需要进入以下路径,将visdom中的自动下载代码屏蔽:
linux中的路径如下:
pytorch框架下的数据可视化模块visdom安装使用_第1张图片
打开server.py,在1917行,屏蔽下载的函数:如下所示,第二行的函数,我已经屏蔽。

def download_scripts_and_run():
    # download_scripts()
    main()

if __name__ == "__main__":
    download_scripts_and_run()

4.3替换

此时,服务会启动,但是,每次visdom并不会将本的数据展示在浏览器端,因为咱们缺少相应的包,所以需要替换操作,将本地的可以正常使用 visdom路径打开,将其中的static文件夹压缩,放到linux服务器的visdom中,替换原有的static文件夹,即可正常使用visdom。(我本地是win10环境下安装的visdom,直接复制visdom中的static到linux的对应文件下,可以正常使用,我的win10路径和linux路径如下图所示)。
pytorch框架下的数据可视化模块visdom安装使用_第2张图片
pytorch框架下的数据可视化模块visdom安装使用_第3张图片

5、最终测试

pytorch框架下的数据可视化模块visdom安装使用_第4张图片
pytorch框架下的数据可视化模块visdom安装使用_第5张图片

6、训练代码中使用方法

6.1导包和创建实例

from visdom import Visdom
vis=visdom.Visdom(env='mask_1',port=9015)#此处env可以自己设定,将来在浏览器中好辨认是哪个图,建议命中中包含下划线,将来在浏览器中看的更清楚。port是自己映射的端口。

6.2 在训练的过程中将数据加入vis实例,进行更新

#绘制准确率
vis.line([[train_acc],[val_acc]],[epoch],win='loss',opts=dict(title='train and val ACC ',linecolor=np.array([ [120, 150, 250], [170, 80, 60]]),legend=['train_acc','val_acc']),update='append')
#绘制loss
vis.line([[train_loss],[val_loss]],[epoch],win='Acc',opts=dict(title='train and val Loss ',linecolor=np.array([ [120, 150, 250], [170, 80, 60]]),legend=['train_loss','val_loss']),update='append')

你可能感兴趣的:(pytorch,Linux,自然语言处理,人工智能,nlp)