1、TensorBoard介绍
TensorBoard是TensorFlow的可视化工具,但它也可以与PyTorch结合使用。TensorBoard提供了一个Web界面,可以展示你训练过程中的各种信息,如损失值、准确度、权重分布等,更好地帮助开发者理解和调试模型。
TensorBoard | TensorFlow (google.cn)https://tensorflow.google.cn/tensorboard?hl=zh-cn
2、导入相关包
安装Tensor包
pip install tensorboard
导入TensorBoard相关包,要导入SummaryWriter模块
import torch
from torch.utils.tensorboard import SummaryWriter
3、创建SummaryWriter对象
#创建一个SummaryWriter对象,指定TensorBoard将保存数据的目录
#默认为与此.py文件的同级目录
writer = SummaryWriter("logs")
4、添加数据
添加数据的方法很多,add_scalar
、add_histogram
、add_image
,这些方法都可以,我这里以添加一张图片为例,要用到Image模块,这个模块在PIL下面,需要进行导包操作
from PIL import Image
我们利用open函数打开图片,接收一个PIL的Image对象
#指定图片路径
image_path = "data/train/ants_image/5650366_e22b7e1065.jpg"
#生成图片对象
img_PIL = Image.open(image_path)
此时,我们并不能直接将图片传进add_image方法中,这是因为在add_image中,图片对象是以一种张量或ndarray之类的形式(张量你可以理解为向量,ndarray其实是矩阵)传入进去的,所以在这之前,需要对图片进行类别的转换:
# 转成ndarray
import numpy as np
# 格式转换
img_array = np.array(img_PIL)
图片类型转换为ndarray格式,转换前与转换后的格式如下:
就可以调用add_image这个方法,向TensorBoard中添加图片数据
writer.add_image("test",img_array,0,dataformats="HWC")
参数含义:
test
: 这是这个图像数据的标签名,它将作为图像在TensorBoard界面上显示的名称。
img_array
: 这是要添加到TensorBoard的图像数据。
0: 这是这个图像数据的全局步数(global step)。在训练过程中,这个步数通常对应于当前的迭代次数或epoch数。TensorBoard会使用这个步数来在Web界面上组织数据,这样你就可以看到不同步数下图像的变化情况。
dataformats="HWC"
: 这是一个可选参数,指定了img_array
的数据格式。HWC
代表"Height, Width, Channels",这是OpenCV等库常用的图像数据格式。如果你使用的是其他库(如PIL或matplotlib),可能需要使用dataformats="CHW"
,即"Channels, Height, Width"。确保TensorBoard能够正确地解析和显示图像。
5、关闭对象
writer.close()
6、运行
在终端输入以下命令:
tensorboard --logdir="logs"
logdir指定保存数据的目录
之后就可以打开界面查看,以Pycharm为例,运行命令后点击这里
即可看到TensorBoard面板
总体代码如下:
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
writer = SummaryWriter("logs")
image_path = "data/train/ants_image/5650366_e22b7e1065.jpg"
img_PIL = Image.open(image_path)
print(type(img_PIL))
img_array = np.array(img_PIL)
print(type(img_array))
writer.add_image("test",img_array,0,dataformats="HWC")
writer.close()
7、注意
若显示不出来图片,则要安装opencv库
pip install opencv-python