在训练神经网络时,如果想了解训练的具体情况,可以在终端中打印出各种训练信息,但这种方法不够直观,难以从整体角度判断模型的收敛情况,因此产生了各种数据可视化工具,可以在网络训练时更好地查看训练过程中的各个损失变化情况,监督训练过程,并为进一步的参数优化与训练优化提供方向
在PyTorch中,常用的可视化工具有TensorBoardX和Visdom
TensorBoard简介:
TensorBoardX是专为PyTorch开发的一套数据可视化工具,功能与TensorBoard相当,支持曲线、图片、文本和计算图等不同形式的可视化,而且使用简单。下面以实现损失曲线的可视化为例,介绍TensorBoardX的使用方法
在训练脚本中,添加如下几句指令,即可创建记录对象与数据的添加

from tensorboardX import SummaryWriter
#创建writer对象
writer = SummaryWriter('logs/tmp')
#添加曲线,并且可以使用‘/’进行多级标题的指定
writer.add_scalar('loss/total_loss', loss.data[0], total_iter)
writer.add_scalar('loss/rpn_loss', rpn_loss.data[0], total_iter)

添加TensorBoardX指令后,则将在logs/tmp文件夹下生成events开头的记录文件,然后使用TensorBoard在终端开启Web服务

tensorboard --logdir=logs/tmp/
TensorBoard 1.9.0 at http://pytorch:6006 (Press CTRL+C to quit)

在游览器段输入上述指令下方的网址http://pytorch:6006,即可看到数据的可视化效果

Visdom简介
Visdom由Facebook团队开发,是一个非常灵活的可视化工具,可用于多种数据的创建、组织和共享,支持Numpy、Torch与PyTorch数据,目的是促进远程数据可视化,支持科学实验
使用如下指令可以开启visdom服务,该服务基于Web,并默认使用8097端口

python -m visdom.server

下面实现一个文本、曲线及图片的可视化示例,更多丰富功能,可以查看Visdom的GitHub主页

import torch
import visdom

#创建visdom客户端,使用默认端口8097,环境为first,环境的作用是对可视化的空间进行分区
vis = visdom.Visdom(env='first')
#vis对象有text()、line()和image()等函数,其中的win参数代表了显示的窗格(pane)的名字
vis.text('first visdom', win='text1')
#在此使用append为真来进行增加text,否则会覆盖之前的text
vis.text('hello PyTorch', win='text1', append=True)

#绘制y=-i^2+20*i+1的曲线,opt可以进行标题、坐标轴标签等的配置
for i in range(20):
    vis.line(X=torch.FloatTensor([i]), Y=torch.FloatTensor([-i**2+20*i+1]), opts={'title': 'y=-x^2+20x+1'}, win='loss', update='append')

#可视化一张随机图片
vis.image(torch.randn(3, 256, 256), win='random_image')

打开游览器,输入http://localhost:8097,即可看到可视化结果。可以看到在first的环境下,有3个窗格,分别为代码中添加的可视化数据

pytorch 绘制acc曲线 pytorch 计算图可视化_数据可视化