pytorch实战学习第七篇:tensorboard可视化介绍

Posted 非晚非晚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch实战学习第七篇:tensorboard可视化介绍相关的知识,希望对你有一定的参考价值。


在训练神经网络时,我们希望能更直观地了解训练情况,包括损失曲线、输入图片、输出图片、卷积核的参数分布等信息。这些信息能帮助我们更好地监督网络的训练过程,并为参数优化提供方向和依据。

tensorboard原本是tensorflow的可视化工具,pytorch从1.2.0开始支持tensorboard,之前的版本也可以使用tensorboardX代替。

1. 安装

如果没有你的pytorch版本低于1.2.0,可以直接安装tensorboardX。

pip install tensorboardX

使用的时候区别于pytorch的地方为导入的包不一样,如果直接是用tensorboardX,导入形式如下所示。

from tensorboardX import SummaryWriter

下面的示例中的tensorboard为pytorch中的工具包。

2. 标量图显示(add_scalar)

  • 方法
add_scalar(tag, scalar_value, global_step=None, walltime=None)
  • tag (string): 数据名称,不同名称的数据使用不同曲线展示。
  • scalar_value (float): 数字常量值,也就是画图时候的y轴的值
  • global_step (int, optional): 训练的 step,也就是画图时候的x轴
  • walltime (float, optional): 记录发生的时间,默认为 time.time()
  • 举例
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter()#默认当前文件夹,会在当前文件下创建一个runs的文件夹。
# writer = SummaryWriter('qlee/log')
# writer = SummaryWriter('qlee')

# 标量可视化与权重直方图
for n_iter in range(100):
    writer.add_scalar('Loss/scalar', n_iter**2, n_iter) #可视化单个标量值

'''
使用步骤:
tensorboard --logdir=文件夹
浏览器下访问:http://localhost:6006/
'''
  • 显示方法

运行程序之后,会在当前目录生成runs文件夹,然后执行下列命令运行可视化:

tensorboard --logdir=runs

之后会生成如下输出

最后打开浏览器,并输入上面输出的地址:

http://localhost:6006/

我们将会看到下列输出形式:

3. 单张图片显示(add_image)

  • 方法
add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
  • 参数介绍
  • tag (string): 数据名称
  • img_tensor (torch.Tensor / numpy.array): 图像数据
  • global_step (int, optional): 训练的 step
  • walltime (float, optional): 记录发生的时间,默认为 time.time()
  • dataformats (string, optional): 图像数据的格式,默认为 ‘CHW’,即 Channel x Height x Width,还可以是 ‘CHW’、‘HWC’ 或 ‘HW’ 等

add_image方法每次只能显示单张图片,方式示例如下:

from tensorboardX import SummaryWriter
import cv2 as cv

writer = SummaryWriter('runs/image_example')
#添加3张图片
for i in range(1, 4):
    writer.add_image('image/add_image',
                     cv.cvtColor(cv.imread('data/.png'.format(i)), cv.COLOR_BGR2RGB),
                     global_step=i,
                     dataformats='HWC')

writer.close()
  • 显示效果

4. 多张图片显示(add_image + make_grid)

使用 torchvision 中的 make_grid 方法,将多张图片拼合成一张图片后,再调用 add_image 方法显示。

import torch
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import datasets, transforms

# 设置输出文件目录
writer = SummaryWriter('runs/test')

transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
model = torchvision.models.resnet50(False)
# Have ResNet model take in grayscale rather than RGB
model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
images, labels = next(iter(trainloader))

grid = torchvision.utils.make_grid(images)
writer.add_image('images', grid, 0)
# 写入图像数据 
writer.add_graph(model, images)
# 写入模型
writer.close()
  • 显示效果

5. 模型图(add_graph)

  • 方法
add_graph(model, input_to_model=None, verbose=False, **kwargs)
  • 参数说明
  • model (torch.nn.Module): 待可视化的网络模型
  • input_to_model (torch.Tensor or list of torch.Tensor, optional): 待输入神经网络的变量或一组变量

第4步已经添加了使用模型添加了网络模型和输入数据。

模型显示图如下所示:


pytorch版本tensorboard:https://pytorch.org/docs/stable/tensorboard.html
官方教程:https://tensorboardx.readthedocs.io/en/latest/tensorboard.html

以上是关于pytorch实战学习第七篇:tensorboard可视化介绍的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch深度学习50篇·······第七篇:GAN生成对抗网络---PIX2PIX

Linux实战第七篇:CentOS7.3下Nginx虚拟主机配置实战(基于IP)

Python学习第七篇:sys标准库

Python学习第七篇:sys标准库

Python学习第七篇:sys标准库

python学习之路基础篇(第七篇)