visdom可视化pytorch训练过程
一、前言
在深度学习模型训练的过程中,常常需要实时监听并可视化一些数据,如损失值loss,正确率acc等。在Tensorflow中,最常使用的工具非Tensorboard莫属;在Pytorch中,也有类似的TensorboardX,但据说其在张量数据加载的效率方面不如visdom。visdom是FaceBook开发的一款可视化工具,其实质是一款在网页端的web服务器,对Pytorch的支持较好。
二、安装和启动
visdom的安装比较简单,可以直接使用pip命令。
# visdom 安装指令 pip install visdom
执行安装命令后,可以执行以下命令启动visdom。
# 启动 visdom web服务器 python -m visdom.server
若安装成功,则会返回一个网页地址;若报错,则安装失败,可以自行去github上下载源码安装。
将网址复制后在浏览器中打开,就可以看到visdom的主界面。
远程连接本地可视化
1. 连接ssh时,将服务器的8097端口重定向到自己机器上来:
ssh -L 18097:127.0.0.1:8097 username@remote_server_ip(一定要在本地dos窗口输入,不要在xshell里面输入)
其中:18097:127.0.0.1代表自己机器上的18097号端口,8097是服务器上visdom使用的端口。
2. 在服务器上使用8097端口正常启动tensorboard:
python -m visdom.server
3. 在本地浏览器中输入地址:
127.0.0.1:18097
作者:kyle0x54
链接:https://www.jianshu.com/p/41d4ca00f4f3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
三、简单使用
这里以监听损失值loss数据,准确率acc数据及可视化图像等方面简要介绍visdom的使用。
3.1 监听单一数据loss
在模型训练过程中,loss是最常监听的数据,这里就以loss的监听为例,使用visdom可视化loss的变化过程。为了使代码更加简洁,这里以for循环代替模型逐轮训练的过程,loss值则在每个循环内部随机产生。
from visdom import Visdom import numpy as np import time # 将窗口类实例化 viz = Visdom() # 创建窗口并初始化 viz.line([0.], [0], win='train_loss', opts=dict(title='train_loss')) for global_steps in range(10): # 随机获取loss值 loss = 0.2 * np.random.randn() + 1 # 更新窗口图像 viz.line([loss], [global_steps], win='train_loss', update='append') time.sleep(0.5)
3.2 同时监听loss和acc
from visdom import Visdom import numpy as np import time # 将窗口类实例化 viz = Visdom() # 创建窗口并初始化 viz.line([[0.,0.]], [0], win='train', opts=dict(title='loss&acc', legend=['loss', 'acc'])) for global_steps in range(10): # 随机获取loss和acc loss = 0.1 * np.random.randn() + 1 acc = 0.1 * np.random.randn() + 0.5 # 更新窗口图像 viz.line([[loss, acc]], [global_steps], win='train', update='append') # 延时0.5s time.sleep(0.5)
3.3 可视化图像
在处理图像任务时,还可以用visdom对图像进行可视化。
from visdom import Visdom import numpy as np import cv2 import torch # 使用opencv读取数据 img = cv2.imread('pkq.jpg') # opencv按照BGR读取,而visdom默认按照RGB显示,因此要进行通道转换 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # visdom类似于pytorch中的卷积模型,接收的数据都要求通道数在前 img = np.transpose(img, (2, 0, 1)) img = torch.from_numpy(img) # 可视化图像 viz.image(img, win='pkq')
visdom可以同时在主面板中打开多个窗口,执行上面3个可视化程序后,主面板如下所示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
2019-08-15 吴恩达《深度学习》第一门课(4)深层神经网络