Tensorboard使用

一、认识Tensorboard

TensorBoard 是一个由 TensorFlow 提供的可视化工具,它可以帮助用户理解、调试和优化机器学习模型。TensorBoard 能够展示模型的训练过程,包括但不限于以下几个方面:

  1. 标量值(Scalars):展示训练和验证过程中的损失值、准确率等指标随时间的变化。

  2. 图像(Images):可视化网络层的激活图、输入数据的样本等。

  3. 直方图(Histograms):展示网络参数(如权重和偏置)的分布情况。

  4. 嵌入(Embeddings):将高维数据降维到二维或三维空间,以便可视化。

  5. 图(Graphs):展示模型的计算图,包括网络结构和操作。

TensorBoard 是一个由 TensorFlow 提供的开源工具套件,用于在训练机器学习模型期间进行数据可视化。TensorBoard 通过读取 TensorFlow 的事件文件来运行,这些文件包含了在 TensorFlow 运行中涉及到的主要数据。用户可以通过创建 TensorFlow 图和选择汇总点来生成汇总数据,然后使用 tf.train.SummaryWriter 将数据写入磁盘。启动 TensorBoard 后,可以通过浏览器访问 localhost:6006 查看可视化结果。

二、认识 add_scalar()

在这里插入图片描述
add_scalar 方法是 TensorBoard 的 SummaryWriter 类的一个方法,用于记录标量数据。这些数据通常用于追踪模型训练过程中的指标,如损失值、准确率等。下面是 add_scalar 方法的一些关键参数和它们的用途:

tag: 这是一个字符串,用于标识记录的数据。就是名称。在 TensorBoard 中,相同的 tag 会被归类到一起,以便进行比较和分析。

scalar_value: 这是要记录的实际标量值。它可以是任何数值,通常表示某个度量指标。如上图显示的纵坐标。

global_step: 这是一个可选参数,表示当前的全局步数或迭代次数。它用于在 TensorBoard 中绘制数据时,将数据点与训练过程中的特定步骤相关联。通常,这个值会在每次训练迭代后增加。如上图显示的横坐标。

对代码行进行注释的方法是: Ctrl + /

示例代码:

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")

for i in range(100):
	# y = x就是tag,两个i分别是scalar_value和global_step
    writer.add_scalar("y = x", i, i)
writer.close()

代码注释:

# 从torch.utils.tensorboard模块导入SummaryWriter类
from torch.utils.tensorboard import SummaryWriter

# 创建一个SummaryWriter对象,它负责将数据写入TensorBoard日志文件
# "logs"是日志文件的保存目录
writer = SummaryWriter("logs")

# 这里是一个示例调用,用于添加图像数据到TensorBoard
# 由于没有具体的图像数据,这里只是显示了函数的调用方式
# writer.add_image(tag, global_step=None, walltime=None, data=None)

# 开始一个循环,用于模拟训练过程,这里循环100次
for i in range(100):
    # 使用add_scalar方法向TensorBoard添加标量数据
    # "y = x"是数据的标签,用于在TensorBoard中标识这些数据
    # i是当前的全局步数(global_step),通常用于表示训练过程中的迭代次数
    # i也是我们添加的标量数据的值,这里简单地使用i作为示例
    writer.add_scalar("y = x", i, i)

# 完成数据记录后,关闭SummaryWriter对象
# 这是必须的,以确保所有数据都被正确地写入到日志文件中
writer.close()

在terminal终端中输入:logdir = 文件名

tensorboard --logdir = logs

回车生成:
在这里插入图片描述
点击连接即可生成在线表格图:
在这里插入图片描述
注意:如果出现多条不同线段(如下图),解决办法通常是把pycharm左边的logs文件夹中的所有文件给删除掉。
在这里插入图片描述
解决方法:把logs下的文件全部删除
在这里插入图片描述

三、add_image()的使用

代码:

from PIL import Image
img = Image.open(image_path)
print(type(img))
import numpy as np
img_array = np.array(img)
print(type(img_array))

对上面代码进行逐行分析:

def add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"):
  • tag表示图像的标题
  • global_step表示训练步骤,通常是int形
  • 其他数据一般不用管
  • img_tensor是图像的数据类型,往往有以下的 torch.Tensor, numpy.ndarray, or string/blobname类型。
img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data

四、Image模块

from PIL import Image

Image模块功能有:【图像打开和保存】、【图像操作:包括图像的旋转、翻转、缩放、裁剪等】、【图像合成:可以将多个图像合成在一起,创建复杂的图像效果】、【文件格式支持:支持多种图像文件格式,如 JPEG、PNG、GIF、TIFF 等】【颜色转换:支持不同颜色模式之间的转换,如从 RGB 转换到 CMYK】

查看Image.open()打开图片的格式:

from PIL import Image
img = Image.open(image_path)
print(type(img))

输出结果:
在这里插入图片描述
发现该类型不满足img_tensor的图像数据类型。

该代码是将img的PIL形转换为numpy形,在赋值给img_array

import numpy as np
img_array = np.array(img)
print(type(img_array))

结果:
在这里插入图片描述
可以看到成功转换成numpy.ndarray形。
从PIL到numpy,需要在add_image()中指定shape中每一个数字/维表示的含义

最终代码:

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

writer = SummaryWriter("logs")
image_path = "Dataset/train/ants/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
writer.add_image("test",img_array,1,dataformats='HWC')
  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值