1、Tensorboard简介
Tensorboard是深度学习使用时查看训练过程的重要可视化工具。首先需要确保我们已经安装了Tensorboard库,使用pip安装即可。
pip install tensorboard
2、SummaryWriter的使用
SummaryWriter是Tensorboard中的一个类,该类可以实现对具体过程的可视化,这里主要介绍SummaryWriter的两个主要方法。
一、数据类可视化
"""
add_scalar(tag,scalar_value,global_step=None)
tag为标题名称,scalar_value为y轴数据,global_step为x轴数据,可认为是步长
其结果是生成一个表格,如果两次曲线用的都是同一个tag,则会在同一张图上绘制,并且将上一条曲线和这一条曲线进行连接(强拟合)
"""
案例:先绘制一个 y = 2 x y=2x y=2x的图像,再绘制一个 y = x y=x y=x的图像,并在同一个图上显示。
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('logs')
# 传入的字符串表示在对应的目录下生成一个文件夹,存放对应事件的文件
for i in range(5): # 依次描五个点
writer.add_scalar(tag='test',scalar_value=2*i,global_step=i)
writer.close() # 使用完成关闭writer
在控制台使用如下指令打开对应文件夹
tensorboard --logdir='E:\Python_learning\Deep_learning\测试\logs'
# 文件名需自行更换
如需指定对应的端口打开,使用如下指令即可
tensorboard --logdir='E:\Python_learning\Deep_learning\测试\logs'--port=6007
# 文件名需自行更换
结果如下图所示
如果在此tag上,继续绘制 y = 2 x y=2x y=2x图形,即再原来的for循环体内加入如下代码:
writer.add_scalar(tag='test',scalar_value=i,global_step=i)
在终端打开tensorboard查看,其结果如下所示:
其会把相同的global_step的点连接并连接至下一个global_step。
二、图像类可视化
add_image(tag,img_tensor,global_step)
tag:标题名称
img_tensor:图片类型必须为torch.tensor,ndarray,string或者blobname
global_step:训练步骤,即x轴
之前所说的PIL中Image读取图片类型为<class 'PIL.JpegImagePlugin.JpegImageFile'>,不符合要求,可以使用np.array()转换成ndarray
可以使用opencv进行读取,opencv读取的图片类型为ndarray形
案例:读取文件夹hymneptera_data/train/ants内的图片,并在tensorboard上查看。
import numpy as np
from PIL import Image
img_path = r'E:\Python_learning\Deep_learning\数据集\hymenoptera_data\train\ants\5650366_e22b7e1065.jpg'
img_PIL = Image.open(img_path)
print(type(img_PIL)) # 类型为<class 'PIL.JpegImagePlugin.JpegImageFile'>
img_array = np.array(img_PIL)
# 强制转化后为ndarray.shape为(512,768,3),而默认的为(3, H, W),此时需要设置dataformats='HWC' ----可查看函数说明
print(img_array.shape)
writer.add_image('test',img_array,3,dataformats='HWC')
输出如下:
可见使用PIL.image读取图片的类型为<class ‘PIL.JpegImagePlugin.JpegImageFile’>,且该图片宽为375,高500,通道数为3(RGB)
在终端使用tensorboard查看对应的示意图,如下所受:
3、总结
本节主要掌握使用Tensorboard进行可视化,主要分为以下几个步骤
No.1:导入对应的包 from torch.utils.tensorboard import SummaryWriter
No.2:实例化对应的类,类内传入一个字符串,表示是将对应事件写入的文件夹
No.3:按照类型调用对应的方法。数据类则调用add_scalar,单张图片则调用add_image,多张图片则调用add_images
No.4:写入完成,调用对应的.close()方法
No.5:在终端使用命令tensorboard --logdir=‘地址’ --port=指定端口号 进行打开tensorboard
注意:如果不希望在同一个可视化文件描绘两张图形,需要更改写入时的tag。