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

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

[En]

When training the neural network, we hope to have a more intuitive understanding of the training situation, including loss curve, input picture, output picture, parameter distribution of convolution kernel and so on. This information can help us to better monitor the training process of the network and provide direction and basis for parameter optimization.

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中的工具包。

  1. 标量图显示(add_scalar)

  2. 方法

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()

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

之后会生成如下输出

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

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

[En]

Finally, open the browser and enter the address output above:

http://localhost:6006/

我们将看到以下输出表:

[En]

We will see the following output form:

【pytorch实战学习】第七篇:tensorboard可视化介绍
  1. 单张图片显示(add_image)

  2. 方法

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')

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

【pytorch实战学习】第七篇:tensorboard可视化介绍
  1. 多张图片显示(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)

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可视化介绍
  1. 模型图(add_graph)

  2. 方法

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可视化介绍

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

Original: https://blog.csdn.net/QLeelq/article/details/123260637
Author: 非晚非晚
Title: 【pytorch实战学习】第七篇:tensorboard可视化介绍

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/496909/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球