【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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用PyTorch可视化TensorBoard的步骤如下: 1. 安装TensorBoard ``` pip install tensorboard ``` 2. 在PyTorch中创建SummaryWriter对象 ```python from torch.utils.tensorboard import SummaryWriter # 创建SummaryWriter对象 writer = SummaryWriter('runs/experiment_name') ``` 其中,`experiment_name`为实验名称,可以自定义。这里通过`runs`目录来存储实验数据。 3. 在训练或验证的过程中添加可视化代码 在代码中使用`writer.add_scalar()`方法来添加可视化代码,方法的参数包括要可视化的变量名、变量值和步数。例如: ```python # 添加训练损失 writer.add_scalar('Train/Loss', loss.item(), step) # 添加验证准确率 writer.add_scalar('Validation/Accuracy', accuracy, step) ``` 4. 启动TensorBoard 在命令行中使用以下命令启动TensorBoard: ``` tensorboard --logdir runs ``` 其中,`--logdir`参数指定实验数据所在的目录。在上面的代码中,我们将实验数据保存在`runs`目录下。 5. 在浏览器中查看可视化结果 在浏览器中输入以下地址查看TensorBoard可视化结果: ``` http://localhost:6006/ ``` 这里是一个可视化变量曲线的代码示例: ```python import torch from torch.utils.tensorboard import SummaryWriter # 创建SummaryWriter对象 writer = SummaryWriter('runs/experiment_name') # 创建模拟数据 x = torch.linspace(-5, 5, 100) y = torch.sin(x) # 可视化曲线 for i in range(100): writer.add_scalar('Sin(x)', y[i], i) # 关闭SummaryWriter对象 writer.close() ``` 这段代码将生成一条正弦曲线,并将其可视化TensorBoard中。在TensorBoard中,我们可以选择`Scalars`选项卡来查看变量曲线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非晚非晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值