TensorBoard的使用

一、可视化曲线图

1、引入SummaryWriter

from torch.utils.tensorboard import SummaryWriter

2、给SummaryWriter类定义一个对象

writer = SummaryWriter('logs')

  ‘logs’为默认当前目录下创建一个名为“logs”的文件夹

3、引用SummaryWriter类中add_scalar函数进行作图

for i in range(100):
    writer.add_scalar(tag="y = 2 * x", 
                      scalar_value=i * 3, 
                      global_step=i)

 (1) tag=“y = 2 * x”  :所做图的标题;

 (2)global_step=i :全局步长记录,即x轴的值;

 (3)scalar_value=i * 3 :每步对应值,即y轴的值;

 (4)这里循环一百次,即x轴值从0到99。

4、关闭对象writer

writer.close()

        关闭写入器对象,结束日志的写入操作,确保信息被正确保存下来,同时释放资源并避免潜在的错误发生。

5、完整代码及运行结果展示

完整代码如下:

from torch.utils.tensorboard import SummaryWriter


writer = SummaryWriter('logs')

for i in range(100):
    writer.add_scalar("y = 2 * x", i * 3, i)   # 这里简写

writer.close()

(1)运行代码后在“logs”目录(上面代码所展示目录名字)下会生成一个这样文件:

(2)然后,在终端输入“tensorboard --logdir=logs”命令(这里logs是我用的是相对路径):

(3)最后,点击蓝色字体部分链接即可进入TensorBoard可视化网页:

二、可视化图片

1、引入所需要的库(torch,PIL,numpy)

import numpy as np
from PIL import Image
from torch.utils.tensorboard import SummaryWriter

2、给SummaryWriter类定义一个对象

writer = SummaryWriter('logs')

  ‘logs’为默认当前目录下创建一个名为“logs”的文件夹 。

3、 引用SummaryWriter类中add_image函数进行作图

(1)用PIL读取图片

image_path = 'data/0.jpg'
image_PIL = Image.open(image_path)

用PIL工具读取后image_PIL的数据类型为'PIL.JpegImagePlugin.JpegImageFile'。

(2)将数据类型转换为'numpy.ndarray'

image_arr = np.array(image_PIL)

这里必须要转换数据类型为'numpy.ndarray',后面一步会解释 。

(3)用add_image函数添加图像

writer.add_image(tag='test', 
                 img_tensor=image_arr,
                 global_step=0,
                 dataformats='HW')

(a) tag='test' :标题为test;

(b) img_tensor=image_arr :话接上步,这里图片数据类型必须为'torch.Tensor', 'numpy.ndarray', or 'string/blobname',而不能是'PIL.JpegImagePlugin.JpegImageFile'类型,故必须要转化数据类型;

(c) global_step=0 :步数等于0;

(d) dataformats='HW' :图像数据的存储格式时有不同的表示方式,其中包括了以通道-高度-宽度(CHW)、高度-宽度-通道(HWC)、高度-宽度(HW)、宽度-高度(WH)等形式;img_tensor 默认的格式是 (3, H, W),你可以使用 torchvision.utils.make_grid() 将一个张量批次转换为 3xHxW 格式,或者调用 add_images 方法让我们来处理。张量格式也可以是 (1, H, W)(H, W) 或者 (H, W, 3),只要相应的 dataformats 参数被传递,比如 CHWHWCHW

4、关闭对象writer

writer.close()

        关闭写入器对象,结束日志的写入操作,确保信息被正确保存下来,同时释放资源并避免潜在的错误发生。

5、完整代码及运行结果展示

  完整代码如下:

import numpy as np
from PIL import Image
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter('logs')

image_path = 'data/0.jpg'
image_PIL = Image.open(image_path)
image_arr = np.array(image_PIL)
writer.add_image('test', image_arr, 0, dataformats='HW')

writer.close()

运行结果:

三、使用例子

代码

import random
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

# 读取数据集,转化为tensor类型
dataset_transform = transforms.Compose([transforms.ToTensor()])

train_set = torchvision.datasets.FashionMNIST(root='data_1',
                                              train=True,
                                              download=True,
                                              transform=dataset_transform)

# 挑选每个类别的90张图片
selected_images = []
for class_id in range(10):
    class_images = [img for img, label in train_set if label == class_id]
    selected_class_images = random.sample(class_images, 90)    # 随机选取90个
    selected_images.extend(selected_class_images)

# 将所有图片组成网状图像,每行30个
img_grid = torchvision.utils.make_grid(selected_images, nrow=30)

# 用tensorboard展示
writer = SummaryWriter('logs')
writer.add_image('BIG_images', img_grid)
writer.close()

运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值