pytorch学习(十一) 可视化工具——visdom

本文介绍如何使用Visdom进行数据可视化,包括安装配置、基本使用方法及常见绘图操作。Visdom支持PyTorch和Numpy等多种数据结构,适用于深度学习模型训练过程中的可视化需求。

1.  安装visdom:pip install visdom

2.在shell下,输入: python -m visdom.server,则开启web服务。

出现:

在浏览器输入:http://localhost:8097   ,即跳出界面。

3.在python下输入程序:记得运行

import torch
import visdom
vis = visdom.Visdom(env='test1')
x = torch.arange(1,30,0.01)
y = torch.sin(x)
vis.line(X=x,Y=y,win='sinx',opts={'title':'y=sin(x)'})

4.在网页中选env 为test1

注意刷新下网页,即出现可视图。

详细(方便以后自己看):

Visdom可以创造、组织和共享多种数据的可视化,包括数值、图像、文本,甚至是视频,其支持PyTorch、Torch及Numpy。用户可通过编程组织可视化空间,或通过用户接口为生动数据打造仪表板,检查实验结果或调试代码。

Visdom中有两个重要概念:

  • env:环境。不同环境的可视化结果相互隔离,互不影响,在使用时如果不指定env,默认使用main。不同用户、不同程序一般使用不同的env。
  • pane:窗格。窗格可用于可视化图像、数值或打印文本等,其可以拖动、缩放、保存和关闭。一个程序中可使用同一个env中的不同pane,每个pane可视化或记录某一信息。

      点击clear按钮可以清空当前env的所有pane,点击save按钮可将当前env保存成json文件,保存路径位于~/.visdom/目录下。也可修改env的名字后点击fork,保存当前env的状态至更名后的env。

Visdom的安装可通过命令pip install visdom。安装完成后,需通过python -m visdom.server命令启动visdom服务,或通过nohup python -m visdom.server &命令将服务放至后台运行。Visdom服务是一个web server服务,默认绑定8097端口,客户端与服务器间通过tornado进行非阻塞交互。

Visdom的使用有两点需要注意的地方:

  • 需手动指定保存env,可在web界面点击save按钮或在程序中调用save方法,否则visdom服务重启后,env等信息会丢失。
  • 客户端与服务器之间的交互采用tornado异步框架,可视化操作不会阻塞当前程序,网络异常也不会导致程序退出。

Visdom以Plotly为基础,支持丰富的可视化操作。

- vis = visdom.Visdom(env=u'test1'),用于构建一个客户端,客户端除指定env之外,还可以指定host、port等参数。
- vis作为一个客户端对象,可以使用常见的画图函数,包括:

    - line:类似Matlab中的`plot`操作,用于记录某些标量的变化,如损失、准确率等
    - image:可视化图片,可以是输入的图片,也可以是GAN生成的图片,还可以是卷积核的信息
    - text:用于记录日志等文字信息,支持html格式
    - histgram:可视化分布,主要是查看数据、参数的分布
    - scatter:绘制散点图
    - bar:绘制柱状图
    - pie:绘制饼状图
    - 更多操作可参考visdom的github主页
    
这里主要介绍深度学习中常见的line、image和text操作。

Visdom同时支持PyTorch的tensor和Numpy的ndarray两种数据结构,但不支持Python的int、float等类型,因此每次传入时都需先将数据转成ndarray或tensor。上述操作的参数一般不同,但有两个参数是绝大多数操作都具备的:
- win:用于指定pane的名字,如果不指定,visdom将自动分配一个新的pane。如果两次操作指定的win名字一样,新的操作将覆盖当前pane的内容,因此建议每次操作都重新指定win。
- opts:选项,接收一个字典,常见的option包括`title`、`xlabel`、`ylabel`、`width`等,主要用于设置pane的显示格式。

之前提到过,每次操作都会覆盖之前的数值,但往往我们在训练网络的过程中需不断更新数值,如损失值等,这时就需要指定参数`update='append'`来避免覆盖之前的数值。而除了使用update参数以外,还可以使用`vis.updateTrace`方法来更新图,但`updateTrace`不仅能在指定pane上新增一个和已有数据相互独立的Trace,还能像`update='append'`那样在同一条trace上追加数据。

import torch
import visdom
vis = visdom.Visdom(env='test1')
x = torch.arange(1,30,0.01)
y = torch.sin(x)
vis.line(X=x,Y=y,win='sinx',opts={'title':'y=sin(x)'})

# append 追加数据
for ii in range(0, 10):
    # y = x
    x = torch.Tensor([ii])
    y = x
    vis.line(X=x, Y=y, win='polynomial', update='append' if ii > 0 else None)

# updateTrace 新增一条线
x = torch.arange(0, 9, 0.1)
y = (x ** 2) / 9
vis.line(X=x, Y=y, win='polynomial', name='this is a new Trace')

# 可视化一个随机的黑白图片
#vis.image(torch.randn(64, 64).numpy())

# 随机可视化一张彩色图片
vis.image(torch.randn(3, 64, 64).numpy(), win='random2')

# 可视化36张随机的彩色图片,每一行6张
vis.images(torch.randn(36, 3, 64, 64).numpy(), nrow=6, win='random3', opts={'title':'random_imgs'})

vis.text(u'''<h1>Hello Visdom</h1><br>Visdom是Facebook专门为<b>PyTorch</b>开发的一个可视化工具,
         在内部使用了很久,在2017年3月份开源了它。

         Visdom十分轻量级,但是却有十分强大的功能,支持几乎所有的科学运算可视化任务''',
         win='visdom',
         opts={'title': u'visdom简介'}
         )

结果图:

### pix2pix 模型训练过程的可视化方法 对于 Pix2Pix 模型,在 PyTorch 和 TensorFlow 中都可以通过集成特定工具来实现训练过程的可视化。 #### 使用 Visdom 进行 PyTorch 的 Pix2Pix 训练可视化 Visdom 是一个灵活的应用程序,用于创建、组织并共享实时富媒体展示以及报告。为了设置基于 PyTorch 的 Pix2Pix 模型训练可视化环境: 安装必要的库之后[^3], ```bash pip install visdom pip install dominate ``` 启动 Visdom 服务器: ```bash python -m visdom.server ``` 在训练脚本中引入 `visdom` 并初始化 Visualizer 对象以便于后续调用更新图表或图像显示功能。通常情况下,项目已经包含了这部分配置文件,例如在给定路径下的 checkpoints 文件夹内存在 web/images 子目录结构[^2]。 编写自定义函数以定期保存生成器输出到本地磁盘的同时上传至远程服务器供浏览器访问查看最新进展状况。这可以通过修改官方仓库中的代码片段完成,具体位置可能位于 results 或者 checkpoints 下面相应的子文件夹里[^1]。 #### 使用 TensorBoard 实现 TensorFlow 版本的 Pix2Pix 可视化 TensorFlow 提供了内置的支持——TensorBoard 工具来进行模型性能监控与调试工作。其操作流程如下所示: 确保已正确安装 TensorFlow 库; 编辑 Python 脚本来记录 scalar, image 等类型的日志信息; ```python from tensorboardX import SummaryWriter writer = SummaryWriter('runs/pix2pix_experiment_1') for epoch in range(num_epochs): ... writer.add_scalar('Loss/train', running_loss / len(train_loader), epoch) writer.add_image('Generated Images', make_grid(fake_B.data[:8]), epoch) ... writer.close() ``` 运行命令行指令开启 Web UI 接口服务端监听指定端口号上的请求连接事件处理机制。 ```bash tensorboard --logdir=runs/ ``` 打开网页浏览器输入地址 http://localhost:6006 即可浏览当前会话期间产生的各类统计数据概览页面。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值