zoukankan      html  css  js  c++  java
  • 可视化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的主界面。

    三、简单使用

    这里以监听损失值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个可视化程序后,主面板如下所示:

    参考

    1. 转载自博客主页:
    2. 参考了visdom官网
  • 相关阅读:
    nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
    nyoj 211 Cow Contest
    nyoj 203 三国志 dijkstra+01背包
    nyoj 170 网络的可靠性
    nyoj 120 校园网络
    nyoj 115 城市平乱 dijkstra最短路
    nyoj 42 一笔画问题 欧拉路径
    nyoj 38 布线问题
    hdu 2089 不要62--数位dp入门
    nyoj 712 探 寻 宝 藏--最小费用最大流
  • 原文地址:https://www.cnblogs.com/xuechengmeigui/p/13949518.html
Copyright © 2011-2022 走看看