- 【pytorch学习实战】第一篇:线性回归
- 【pytorch学习实战】第二篇:多项式回归
- 【pytorch学习实战】第三篇:逻辑回归
- 【pytorch学习实战】第四篇:MNIST数据集的读取、显示以及全连接实现数字识别
- 【pytorch学习实战】第五篇:卷积神经网络实现MNIST手写数字识别
- 【pytorch实战学习】第六篇:CIFAR-10分类实现
- 【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代替。
- 安装
如果没有你的pytorch版本低于1.2.0,可以直接安装tensorboardX。
pip install tensorboardX
使用的时候区别于pytorch的地方为导入的包不一样,如果直接是用tensorboardX,导入形式如下所示。
from tensorboardX import SummaryWriter
下面的示例中的tensorboard为pytorch中的工具包。
-
标量图显示(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()
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
之后会生成如下输出
最后,打开浏览器,输入上面输出的地址:
[En]
Finally, open the browser and enter the address output above:
http://localhost:6006/
我们将看到以下输出表:
[En]
We will see the following output form:
-
单张图片显示(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)
: 训练的 stepwalltime (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()
- 显示效果
- 多张图片显示(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()
- 显示效果
-
模型图(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
Original: https://blog.csdn.net/QLeelq/article/details/123260637
Author: 非晚非晚
Title: 【pytorch实战学习】第七篇:tensorboard可视化介绍
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/496909/
转载文章受原作者版权保护。转载请注明原作者出处!