小土堆pytorch--tensorboard的使用

小土堆pytorch--tensorboard的使用

  • 小土堆pytorch--tensorboard的使用
    • 0.介绍
    • [1.使用tensorboard绘制 y = x 等简单函数](#1.使用tensorboard绘制 y = x 等简单函数)
      • [1.1 相应的代码](#1.1 相应的代码)
      • [1.2 对上述代码的解释](#1.2 对上述代码的解释)
      • [1.3 可能遇到的问题](#1.3 可能遇到的问题)
        • [1.3.1 问题](#1.3.1 问题)
        • [1.3.2 解决方法](#1.3.2 解决方法)
    • 2.使用tensorboard加载数据集中的图片
      • [2.1 相应代码](#2.1 相应代码)
      • [2.2 对上述代码的解释](#2.2 对上述代码的解释)
      • [2.3 后续操作](#2.3 后续操作)

小土堆pytorch--tensorboard的使用

0.介绍

TensorBoard 是 TensorFlow 提供的一组可视化工具 ,能将机器学习实验数据图形化展示,助力理解、调试、优化模型,也可用于 PyTorch 等框架结合使用来可视化相关数据。

主要功能

  • 可视化模型结构:呈现模型计算图,展示张量、变量和操作流程,助于理解模型架构和参数。
  • 跟踪训练指标:实时呈现损失函数、准确率、梯度等训练指标变化,以折线图等形式展示,方便评估模型性能和优化训练过程。
  • 可视化数据分布:通过直方图展示张量分布,了解权重、激活值等分布及变化;用平面展示数据分布情况,分析数据特征。
  • 展示图像音频:展示训练过程中的图像(如输入图像、输出图像、中间层特征图 )和音频数据,辅助理解模型对多媒体数据的处理。
  • 高维数据降维可视化:利用技术将高维嵌入向量投影到低维空间展示,分析向量关系和分布。

1.使用tensorboard绘制 y = x 等简单函数

1.1 相应的代码

bash 复制代码
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

# writer.add_image()
# y = x
for i in range(0, 100):
    writer.add_scalar("y=x", i, i)

writer.close()

运行这段代码后,会在当前目录下生成一个名为 logs 的文件夹,其中包含了记录 y = x 数据的日志文件。接下来,可以在命令行中使用以下命令启动 TensorBoard 服务:

bash 复制代码
tensorboard --logdir=logs

然后在浏览器中打开 http://localhost:6006,就可以看到 y = x 函数关系的可视化图表。

然后就可以看到图表

1.2 对上述代码的解释

  1. 导入模块

    bash 复制代码
    from torch.utils.tensorboard import SummaryWriter

    这行代码从 torch.utils.tensorboard 模块中导入 SummaryWriter 类。SummaryWriter 是一个重要的类,它可以将各种数据(如标量、图像、直方图等)写入日志文件,以便后续使用 TensorBoard 进行可视化分析。

  2. 创建 SummaryWriter 实例

    bash 复制代码
    writer = SummaryWriter("logs")

    这行代码创建了一个 SummaryWriter 类的实例 writer,并指定日志文件的保存目录为 "logs"。也就是说,后续通过 writer 记录的数据都会被保存到这个名为 logs 的文件夹中。如果该文件夹不存在,程序会自动创建它。

    运行这段代码后,IDE会自动生成logs文件夹

  3. 循环记录标量数据

    bash 复制代码
    # y = x
    for i in range(0, 100):
        writer.add_scalar("y=x", i, i)

    for i in range(0, 100): :这是一个 for 循环,循环变量 i 从 0 到 99 依次取值。
    writer.add_scalar("y=x", i, i) :调用 writer 的 add_scalar 方法,该方法有三个主要参数:
    A 第一个参数 "y=x" 是一个字符串,作为数据的标签,用于在 TensorBoard 中标识这组数据。
    B 第二个参数 i 是要记录的标量值,也就是 y 的值,因为这里 y = x,所以 y 的值就等于 i。
    C 第三个参数 i 是全局步数(global_step),用于表示数据点的顺序,在 TensorBoard 中,global_step 通常对应 x 轴,用于展示数据随时间或迭代次数的变化。

    TIPS:

    我们用CTRL+鼠标左键 点击add_scalar会跳出该函数的定义,以及对参数的讲解

  4. 关闭 SummaryWriter

    bash 复制代码
    writer.close()

    这行代码调用 writer 的 close 方法,关闭 SummaryWriter 实例。关闭操作会确保所有的数据都被正确写入到日志文件中,释放相关资源。

综上所述,这段代码的主要目的是使用 SummaryWriter 记录 y = x 函数关系的数据,并将其保存到日志文件中,以便后续使用 TensorBoard 进行可视化分析。

1.3 可能遇到的问题

1.3.1 问题

这是这段代码的运行结果

也会对应在logs目录下生成相应的文件

假如我们修改代码,其实就这一点变化,我们在tensorboard上查看结果的时候会发现问题

**导致错误的原因:**多次记录了相同标签(都标为 y = 5x )的数据,且每次记录的数据范围、采样方式等有差异,导致多组数据在同一图表中叠加显示,出现多条看似混乱的线。

1.3.2 解决方法

首先我们在pycharm中按ctrl+c 杀掉当前进程

然后我们手动删除这两个文件

然后再次运行上述代码,问题就可以解决了

2.使用tensorboard加载数据集中的图片

2.1 相应代码

bash 复制代码
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter("logs")
image_path = "dataset/train/ants/5650366_e22b7e1065.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(img_array.shape)

writer.add_image("test", img_array, 1, dataformats = 'HWC')

writer.close()

2.2 对上述代码的解释

2.2.1 代码功能概述

这段代码的主要功能是使用PyTorch 中的 torch.utils.tensorboard 模块,将一张本地的图像文件添加到 TensorBoard 的日志中,以便后续使用 TensorBoard 工具对该图像进行可视化展示。

2.2.2代码逐行解释
  1. 导入必要的模块
python 复制代码
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
  • from torch.utils.tensorboard import SummaryWriter:从 torch.utils.tensorboard 模块中导入 SummaryWriter 类。SummaryWriter 用于将各种数据(如标量、图像、直方图等)写入日志文件,方便后续使用 TensorBoard 进行可视化分析。
  • import numpy as np:导入 numpy 库,并将其重命名为 npnumpy 是一个用于科学计算的强大库,在处理数组和矩阵时非常有用。
  • from PIL import Image:从 PIL(Python Imaging Library)库中导入 Image 类。PIL 是 Python 中常用的图像处理库,Image 类可以用于打开、操作和保存多种图像文件格式。
  1. 创建 SummaryWriter 实例
python 复制代码
writer = SummaryWriter("logs")

创建一个 SummaryWriter 类的实例 writer,并指定日志文件的保存目录为 "logs"。如果该目录不存在,程序会自动创建它。后续通过 writer 记录的数据都会被保存到这个目录下的日志文件中。

3 打开图像文件

python 复制代码
image_path = "dataset/train/ants/5650366_e22b7e1065.jpg"
img_PIL = Image.open(image_path)
  • image_path = "dataset/train/ants/5650366_e22b7e1065.jpg":定义一个字符串变量 image_path,用于指定要打开的图像文件的路径。
  • img_PIL = Image.open(image_path):使用 Image.open() 方法打开指定路径的图像文件,并将其存储为 PIL 图像对象 img_PIL

4 将 PIL 图像对象转换为 numpy 数组

python 复制代码
img_array = np.array(img_PIL)

使用 np.array() 函数将 PIL 图像对象 img_PIL 转换为 numpy 数组 img_arraynumpy 数组更适合进行数值计算和处理,方便后续传递给 SummaryWriter 进行记录。

5 打印图像数组的形状

python 复制代码
print(img_array.shape)

打印 img_array 的形状,即图像的高度、宽度和通道数。例如,对于 RGB 图像,形状通常为 (height, width, 3)

6 向 TensorBoard 日志中添加图像

python 复制代码
writer.add_image("test", img_array, 1, dataformats = 'HWC')

调用 writeradd_image 方法,将图像添加到 TensorBoard 日志中。该方法有几个参数:

  • 第一个参数 "test" 是一个字符串,作为图像的标签,用于在 TensorBoard 中标识这张图像。
  • 第二个参数 img_array 是要添加的图像数据,即前面转换得到的 numpy 数组。
  • 第三个参数 1 是全局步数(global_step),用于表示图像的顺序或迭代次数,在 TensorBoard 中,global_step 通常对应 x 轴,用于展示数据随时间或迭代次数的变化。
  • dataformats = 'HWC':指定图像数据的格式。'HWC' 表示图像数据的维度顺序为高度(Height)、宽度(Width)和通道数(Channels)。

注意 :在add_image的定义中如果tensor的形状是(H,W,3)则需要使用 dataformats = 'HWC'

  1. 关闭 SummaryWriter
python 复制代码
writer.close()

调用 writerclose 方法,关闭 SummaryWriter 实例。关闭操作会确保所有的数据都被正确写入到日志文件中,并释放相关资源。

2.3 后续操作

运行这段代码后,会在当前目录下生成一个名为 logs 的文件夹,其中包含了记录图像数据的日志文件。接下来,可以在命令行中使用以下命令启动 TensorBoard 服务:

bash 复制代码
tensorboard --logdir=logs

然后在浏览器中打开 http://localhost:6006,就可以在 TensorBoard 的界面中看到名为 "test" 的图像。

综上所述,这段代码的主要目的是使用 SummaryWriter 将本地的一张图像添加到 TensorBoard 日志中,以便后续进行可视化分析。

这样我们就可以在tensorboard中看到相应的图像

然后我们可以变换图像(使用图片的相对路径),然后把参数step=2

相关推荐
struggle202519 分钟前
SurfSense开源程序是NotebookLM / Perplexity / Glean的开源替代品,连接到外部来源,如搜索引擎
人工智能·开源·自动化
亚里随笔36 分钟前
Nemotron-Research-Tool-N1 如何提升大语言模型工具使用能力?
人工智能·语言模型·自然语言处理
CHNMSCS43 分钟前
PyTorch_标量张量和数字的转换
人工智能·pytorch·python
进来有惊喜1 小时前
用 PyTorch 轻松实现 MNIST 手写数字识别
人工智能·pytorch·python
xiaoli23271 小时前
机器学习朴素贝叶斯算法
人工智能·算法·机器学习
sunshineine1 小时前
Linux系统安装PaddleDetection
linux·运维·服务器·人工智能·算法
梦想画家1 小时前
当LLM遇上Agent:AI三大流派的“复仇者联盟”
人工智能·chatgpt
LitchiCheng2 小时前
Pinocchio导入URDF关节为continuous的问题及详细解释
人工智能·机器人
天天爱吃肉82182 小时前
机器学习项目流程极简入门:从数据到部署的完整指南
人工智能·机器学习
深海小咸鱼3 小时前
如何在服务器后台运行Python脚本,并配置虚拟环境与GPU支持
服务器·python·策略模式