Tensorboard的使用及一些常见报错解决

一,Tensorboard 的安装

首先在pycharm中创建项目并设置解释器为Anacanda

创建项目(例:test.py)

接下来进入终端输入 pip install tensorboard 

进而安装tensorboard

二,tensorboard 两个比较常用的使用 及 使用中可能出现的问题

1,.add_scalar() 方法的使用

例:

1. 导入模块

from torch.utils.tensorboard import SummaryWriter

从 PyTorch 的工具模块中,导入 SummaryWriter 类。SummaryWriter 是 TensorBoard 数据记录的核心类,负责将各种类型的数据(标量、图像、模型结构等 )写入日志文件,供 TensorBoard 可视化。

2. 创建 SummaryWriter 对象

writer = SummaryWriter('logs')

实例化 SummaryWriter,参数 'logs' 是日志文件的保存目录。运行代码后,TensorBoard 会从这个目录加载数据进行可视化,目录不存在时会自动创建。

3. 循环记录标量数据

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

  • 循环逻辑for i in range(100) 会让代码执行 100 次(i 从 0 到 99 )。

  • add_scalar 方法

    • 第一个参数 "y=x" 是 标量数据的标签(tag),用于在 TensorBoard 中区分不同的数据系列,比如可用来标识 “损失值”“准确率” 等。

    • 第二个参数 i 是 标量的值(scalar value),这里让值随循环次数递增。

    • 第三个参数 i 是 全局步骤(global step),表示该数据对应的训练步骤(或迭代次数 ),TensorBoard 会用它来横

      • 轴绘图,体现数据随步骤的变化趋势。
        这段逻辑会记录 100 个标量,标签为 "y=x",值和步骤均为 0 到 99 。

    • 4. 关闭 SummaryWriter

      python

      运行

      writer.close()
      

      小技巧:按住CTRL 光标指向即可获得help

      例如add_scalar方法help

      5,打开方式

      进入终端输入 tensortbroad --logdir=logs

      点击网址即可进入

    • 补充

    • 利用port可以改变网络节点避免默认节点(6007)人数多造成卡顿

    • 例如输入 tensorbroad --logdir=logs --port=6008

常见错误:没有运行 直接 进入终端(只有运行后才会上传数据)

图像重合乱码解决方案:

情况lg:与定义图像不符

原因:多次运行 导致logs文件堆叠进而导致图像堆叠

解救方案

打开logs文件夹把内容删除 而后重新运行即可(如有更优方案请评论谢谢)、

2,.add_image()方法的使用 

例:

1. 模块导入

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

  • SummaryWriter:PyTorch 与 TensorBoard 交互的核心类,用于写入日志数据(标量、图像等 )。

  • numpy:常用数值计算库,别名 np,用于将 PIL 图像转换为数组。

  • Image:PIL(Python Imaging Library )的图像操作类,用于加载、处理图像。

2. 图像加载与转换

image_path = "E:\\pycharm\\pythonProject5\\屏幕截图 2024-12-11 130916.png"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)

  • image_path:定义图像文件的路径(注意用双反斜杠 \\ 处理路径转义 )。

  • Image.open(image_path):调用 PIL 加载图像,返回 PIL.Image 对象(img_PIL )。

  • np.array(img_PIL):将 PIL 图像对象转换为 NumPy 数组(img_array ),方便 TensorBoard 处理。

3. TensorBoard 日志初始化

writer = SummaryWriter("logs")

创建 SummaryWriter 实例,指定日志保存目录为 logs(目录自动创建,后续 TensorBoard 从该目录读数据 )。

4. 图像写入 TensorBoard

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

  • add_image 方法:向 TensorBoard 写入图像数据。

    • 第一个参数 "test":图像在 TensorBoard 中的 标签(tag),用于区分不同图像。

    • 第二个参数 img_array:图像的 NumPy 数组数据。

    • 第三个参数 1全局步骤(global step),标识该图像对应的训练步骤(可理解为 “第 1 步的图像” )。

    • dataformats='HWC':指定图像数组的维度顺序,HWC 表示 高度(Height)、宽度(Width)、通道(Channel)(常见于 PIL 加载的图像,如 RGB 图像是 3 通道 )。

5. 标量数据循环记录

for i in range(100):
    writer.add_scalar("y=x", i, i)
  • 循环逻辑:执行 100 次(i 从 0 到 99 )。

  • add_scalar 方法:记录标量数据到 TensorBoard。

    • "y=x":标量的 标签,用于 TensorBoard 中标识数据系列(如 “损失值”“准确率” )。

    • 第一个 i:标量的 (随循环递增 )。

    • 第二个 i全局步骤(与值同步递增,TensorBoard 用它绘制横轴 )。

6. 关闭资源

writer.close()

7,报错处理

例1

报错 SyntaxWarning: invalid escape sequence '\p' 是因为路径里的反斜杠 \ 被 Python 识别成转义字符了。

解决办法:把路径里的反斜杠 \ 换成双反斜杠 \\ ,或者用正斜杠 / ,

例2

从报错 TypeError: Cannot handle this data type: (1, 1, 1596), |u1 看,是 add_image 时数据格式不兼容。add_image 要求图像张量维度通常为 (C, H, W)(通道在前) ,你用 PIL 转的数组可能是 (H, W, C)(通道在后)且数据类型等不匹配。

解决方法:在传给 add_image 前,调整维度和数据类型,比如:

import torch
# 假设 img_arr 是 (H, W, C) 的 numpy 数组
img_tensor = torch.from_numpy(img_arr).permute(2, 0, 1).float()  # 转置维度为 (C, H, W),转 float 类型
writer.add_image("test", img_tensor, 1)

这样调整后,适配 SummaryWriter.add_image 对输入张量的要求,大概率能解决报错。 核心就是让图像数据的维度顺序、数据类型符合 PyTorch TensorBoard 期望 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值