前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >visdom可视化pytorch训练过程

visdom可视化pytorch训练过程

作者头像
py3study
发布2020-01-15 17:20:32
1.7K0
发布2020-01-15 17:20:32
举报
文章被收录于专栏:python3python3

一、前言

  在深度学习模型训练的过程中,常常需要实时监听并可视化一些数据,如损失值loss,正确率acc等。在Tensorflow中,最常使用的工具非Tensorboard莫属;在Pytorch中,也有类似的TensorboardX,但据说其在张量数据加载的效率方面不如visdom。visdom是FaceBook开发的一款可视化工具,其实质是一款在网页端的web服务器,对Pytorch的支持较好。

二、安装和启动

  visdom的安装比较简单,可以直接使用pip命令。

代码语言:javascript
复制
# visdom 安装指令
pip install visdom

   执行安装命令后,可以执行以下命令启动visdom。

代码语言:javascript
复制
# 启动 visdom web服务器
python -m visdom.server

  若安装成功,则会返回一个网页地址;若报错,则安装失败,可以自行去github上下载源码安装。

  将网址复制后在浏览器中打开,就可以看到visdom的主界面。

三、简单使用

  这里以监听损失值loss数据,准确率acc数据及可视化图像等方面简要介绍visdom的使用。

3.1 监听单一数据loss

  在模型训练过程中,loss是最常监听的数据,这里就以loss的监听为例,使用visdom可视化loss的变化过程。为了使代码更加简洁,这里以for循环代替模型逐轮训练的过程,loss值则在每个循环内部随机产生。

代码语言:javascript
复制
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

代码语言:javascript
复制
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对图像进行可视化。

代码语言:javascript
复制
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个可视化程序后,主面板如下所示:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、安装和启动
  • 三、简单使用
    • 3.1 监听单一数据loss
      • 3.2 同时监听loss和acc
        • 3.3 可视化图像
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档