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

  • 【pytorch学习实战】第一篇:线性回归
  • 【pytorch学习实战】第二篇:多项式回归
  • 【pytorch学习实战】第三篇:逻辑回归
  • 【pytorch学习实战】第四篇:MNIST数据集的读取、显示以及全连接实现数字识别
  • 【pytorch学习实战】第五篇:卷积神经网络实现MNIST手写数字识别
  • 【pytorch实战学习】第六篇:CIFAR-10分类实现
  • 【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/

我们将会看到下列输出形式:
【pytorch实战学习】第七篇:tensorboard可视化介绍_第1张图片

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()
  • 显示效果

【pytorch实战学习】第七篇:tensorboard可视化介绍_第2张图片

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可视化介绍_第3张图片


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

你可能感兴趣的:(pytorch,pytorch,tensorboard,tensorflow,神经网络可视化,tensorboardx)