当前位置: 首页 > news >正文

TensorBoard

目录

TensorBoard

SummaryWriter类 

1.  .add_scalar 

样例

2. .add_image()

样例 


TensorBoard

TensorBoard 是 TensorFlow 的可视化工具组件,可帮助用户理解、调试和优化深度学习模型。它通过可视化训练过程中的指标(如损失函数和准确率)、模型结构、权重分布等信息,帮助用户直观地监控和分析模型训练过程。

核心功能:

  1. 标量可视化:展示训练和评估过程中的标量值,如损失值、准确率等。

  2. 图结构可视化:显示模型的计算图,帮助理解模型架构。

  3. 分布可视化:展示张量(如权重、偏置)的分布变化。

  4. 直方图:显示张量的分布随时间的变化。

  5. 嵌入可视化:高维数据的低维表示,用于聚类分析。

  6. 图像 / 音频可视化:展示输入数据、生成的图像或音频样本。

 用简单的语言说明什么是TensorBoard以及为什么需要:

什么是 TensorBoard?

TensorBoard 是一个可视化工具,就像你在健身房用镜子观察自己的动作一样,它能让你 “看到” 神经网络的训练过程。比如:

  • 模型是否在学习?(损失值是否下降)

  • 训练和测试的准确率差距有多大?(过拟合检测)

  • 模型内部的权重是如何变化的?

为什么需要 TensorBoard?

想象你在黑暗中投篮,却不知道球是否接近篮筐。训练神经网络也一样,如果没有可视化工具,你只能盲目调整参数。TensorBoard 就像一盏灯,照亮训练过程:

  • 实时监控:边训练边查看结果

  • 问题诊断:快速发现过拟合、梯度消失等问题

  • 参数调优:对比不同超参数设置的效果

 下载TensorBoard

SummaryWriter类 

官方文档注释:

"""Writes entries directly to event files in the log_dir to be consumed by TensorBoard.The `SummaryWriter` class provides a high-level API to create an event filein a given directory and add summaries and events to it. The class updates thefile contents asynchronously. This allows a training program to call methodsto add data to the file directly from the training loop, without slowing downtraining."""
"""将记录直接写入日志目录(log_dir)中的事件文件,供TensorBoard读取。`SummaryWriter`类提供了一个高级API,用于在指定目录创建事件文件,并向其中添加摘要(summaries)和事件(events)。该类以异步方式更新文件内容,这使得训练程序可以在训练循环中直接调用方法添加数据,而不会减慢训练速度。
"""

方法:

1.  .add_scalar 

参数:tag (字符串):数据标识符(用于在TensorBoard中区分不同数据)scalar_value (浮点数或字符串/blob名称):要保存的标量值global_step (整数):要记录的全局步骤值(通常对应训练步数/轮次,作为X轴坐标)walltime (浮点数,可选):可选参数,用于覆盖默认的 walltime(即time.time()),以事件发生的纪元秒数(从1970年1月1日开始的秒数)表示new_style (布尔值):是否使用新格式(tensor字段)或旧格式(simple_value字段)。新格式可能会加快数据加载速度。

 常用前三个参数

tag为表头

scalar_value为纵坐标

global_step 为横坐标

# 记录标量数据(如损失值、准确率等)
# 第一个参数:标量标签(格式:"类别/具体指标",便于分组查看)
# 第二个参数:要记录的标量值(如损失函数计算结果)
# 第三个参数:全局步骤(X轴坐标,通常是训练步数)
writer.add_scalar("Loss/训练", loss_value, global_step=step)
writer.add_scalar("Accuracy/验证", acc_value, global_step=epoch)

样例

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

运行后:

会出现logs文件夹

打开并展示:

默认在6006端口打开 

(pytorch) PS D:\Python\learn_pytorch> tensorboard --logdir=logs
TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.19.0 at http://localhost:6006/ (Press CTRL+C to quit)

若端口冲突,可以自己设置

(pytorch) PS D:\Python\learn_pytorch> tensorboard --logdir=logs --port=6007
TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.19.0 at http://localhost:6007/ (Press CTRL+C to quit)

直接点击网址或者复制到浏览器打开

y=2x: 

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

 重新运行python文件,然后在浏览器刷新页面即可,不用重启TensorBoard

2. .add_image()

注意:这需要安装 ``pillow`` 包。参数:tag (字符串):数据标识符(用于在TensorBoard中区分不同图像)img_tensor(PyTorch张量、NumPy数组或字符串/blob名称):图像数据global_step (整数):要记录的全局步骤值(通常对应训练步数/轮次,用于标记图像的时间点)walltime (浮点数,可选):可选参数,用于覆盖默认的 walltime(即time.time()),以事件发生的纪元秒数(从1970年1月1日开始的秒数)表示dataformats (字符串):图像数据格式的说明,格式如 CHW、HWC、HW、WH 等。形状:img_tensor:默认格式为 :math:`(3, H, W)`(3通道、高度H、宽度W)。你可以使用 ``torchvision.utils.make_grid()`` 将一批张量转换为 3xHxW 格式,或者调用 ``add_images`` 方法,让程序自动处理批量图像。只要传入对应的 ``dataformats`` 参数(如 ``CHW``、``HWC``、``HW``),以下形状的张量也适用::math:`(1, H, W)`(单通道灰度图)、:math:`(H, W)`(无通道灰度图)、:math:`(H, W, 3)`(通道在最后的RGB图)。

注意img_tensor的类型和形状(形状要注意设置额外的参数,如上所述)

 

常用的PIL打开的图片类型即不符合要求 

可以转化:

 也可以用其他方式打开图片(opencv)

样例 

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Imagewriter=SummaryWriter("logs")
img_PIL = Image.open("dataset_practice/train/ants_image/0013035.jpg")
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
writer.add_image("test",img_array,1,dataformats="HWC")writer.close()

图片形状是HWC,不符合参数的默认要求,增加dataformates参数

运行后即可在TensorBoard里看到图片 

http://www.dtcms.com/a/276065.html

相关文章:

  • 全栈开发知识
  • 计算机毕业设计springboot阳阳助农电商平台 基于Spring Boot的阳阳助农电商平台设计与开发 Spring Boot框架下的阳阳助农电商平台构建
  • 苦练Python第7天:布尔七日斩
  • 模拟电路--供复习和嵌入式学习
  • 威联通docker容器安装宝塔面板
  • VUE3 el-table 主子表 显示
  • ICCV2025 特征点检测 图像匹配 RIPE
  • 【Elasticsearch 】search_throttled
  • Spark计算性能优化实战指南
  • 面试现场:奇哥扮猪吃老虎,RocketMQ高级原理吊打面试官
  • 一文理解锂电池充电、过放修复与电量测量:从原理到实战
  • Redis Cluster 手动部署(小白的“升级打怪”成长之路)
  • 工业软件出海的ERP-PLM-MES一体化解决方案
  • MCP实验
  • Java 大视界 -- Java 大数据机器学习模型在电商用户复购行为预测与客户关系维护中的应用(343)
  • LangChain 内存(Memory)
  • 小白入门:通过手搓神经网络理解深度学习
  • CCS-MSPM0G3507-4-串口通讯-实现收和发
  • Linux之如何用contOs 7 发送邮件
  • Gitee Push 失败 7 日谈:每天一个踩坑故事
  • (神作必看)深入剖析C++前缀和:原理、应用与高效学习实践
  • python的婚纱影楼管理系统
  • os.type详解
  • 初识JDBC
  • springboot面点连锁店管理系统-计算机毕业设计源码05135
  • 掌握现代CSS:变量、变形函数与动态计算
  • 【FPGA】LUT如何实现组合逻辑、时序逻辑
  • Nginx访问日志实时分析在云服务器环境的Python实现方案
  • 树状数组优化动态规划
  • 【技术面试提+HR面试题】Python中循环与循环嵌套的基础知识以及Python中循环的基础编程题