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

TensorBoard中的add_image()和add_scalar()

目录

  • add_image()
    • 常见用法
    • 参数解释
    • 示例:记录每个训练步骤中的图像
  • add_scalar()
    • 常见用法
    • 参数解释
    • 示例:记录损失和准确率
    • 常见应用场景

add_image()

add_image() 是 TensorBoard 的一个 API 方法,用于将图像添加到 TensorBoard 的可视化面板中,以便在训练过程中查看模型的图像数据。通常,add_image() 用于记录训练过程中生成的图像、模型预测的图像、或者其他图像类型数据。这样,用户可以通过 TensorBoard 实时监控模型的训练过程。

常见用法

import torch
from torch.utils.tensorboard import SummaryWriter
import torchvision

# 创建 TensorBoard writer
writer = SummaryWriter()

# 假设我们有一个图像(例如一个 tensor 或者从 dataset 中获取)
image_tensor = torch.randn(3, 64, 64)  # 3通道,64x64的随机图像

# 添加图像到 TensorBoard
writer.add_image('Random Image', image_tensor)

# 关闭 writer
writer.close()

参数解释

add_image() 的参数包括:

  1. tag: 图像的标签(字符串),可以在 TensorBoard 中用于标识不同的图像。
  2. img_tensor: 需要记录的图像数据。这个数据通常是一个 tensor,形状为 (C, H, W),其中 C 是通道数(例如 RGB 为 3),H 是图像的高度,W 是图像的宽度。
  3. global_step (可选): 用于记录图像的步骤标记,通常是在训练中记录的步数或 epoch。
  4. walltime (可选): 图像添加的时间,默认是当前时间。

示例:记录每个训练步骤中的图像

# 假设你在训练过程中,每训练完一个 batch,就记录一个图像
for step, (images, labels) in enumerate(train_dataloader):
    # 这里假设 images 是 batch 中的一张图片
    writer.add_image('Training Image', images[0], step)

这样,每当训练到一个新步骤时,images[0](一个 batch 中的第一张图像)都会被添加到 TensorBoard 上,供用户查看。

add_scalar()

add_scalar() 是 TensorBoard 的一个 API 方法,用于将标量数据添加到 TensorBoard 的可视化面板中,以便监控模型训练过程中的一些指标(如损失、准确率等)。你可以通过 add_scalar() 方法记录一个标量值(例如训练过程中的损失值或准确率),并将其与训练步骤(global_step)关联,TensorBoard 会根据这些标量数据生成相应的折线图或其他可视化图形。

常见用法

import torch
from torch.utils.tensorboard import SummaryWriter

# 创建 TensorBoard writer
writer = SummaryWriter()

# 假设我们有一些训练过程中的标量数据
for step in range(100):
    loss = 0.01 * step  # 假设损失值逐渐减小
    accuracy = 100 - 0.1 * step  # 假设准确率逐渐提高

    # 记录损失值到 TensorBoard
    writer.add_scalar('Loss', loss, step)

    # 记录准确率到 TensorBoard
    writer.add_scalar('Accuracy', accuracy, step)

# 关闭 writer
writer.close()

参数解释

add_scalar() 的参数包括:

  1. tag: 标量的标签(字符串),用于在 TensorBoard 中区分不同的标量曲线,例如 ‘Loss’, ‘Accuracy’ 等。
  2. scalar_value: 需要记录的标量值,通常是一个浮动数值,表示某个指标(例如损失值、准确率等)。
  3. global_step (可选): 训练的步数,通常是当前的训练迭代(epoch)或 mini-batch 的编号,用于标识标量数据的时间戳。这个步骤会被用作横轴,帮助跟踪标量值随训练进度的变化。
  4. walltime (可选): 数据记录的时间戳,默认是当前时间。

示例:记录损失和准确率

在训练过程中,通常需要记录训练损失和准确率。使用 add_scalar() 方法可以将这些值保存下来并在 TensorBoard 中可视化:

# 假设每个 epoch 训练时都更新损失和准确率
for epoch in range(10):
    train_loss = 0.5 * epoch  # 假设损失在减少
    train_accuracy = 90 + 1.5 * epoch  # 假设准确率在提高
    
    # 记录损失和准确率到 TensorBoard
    writer.add_scalar('Train/Loss', train_loss, epoch)
    writer.add_scalar('Train/Accuracy', train_accuracy, epoch)

常见应用场景

  1. 损失函数曲线:在训练过程中,你可以用 add_scalar() 方法记录每个训练步骤或每个 epoch 的损失值,帮助你跟踪模型是否正在收敛。

    writer.add_scalar('Loss/train', loss, epoch)
    
  2. 准确率曲线:你也可以记录每个 epoch 或 batch 的准确率或其他评价指标,查看模型的性能变化。

    writer.add_scalar('Accuracy/train', accuracy, epoch)
    
  3. 学习率曲线:可以记录学习率的变化,特别是在使用学习率调度器时,查看学习率的变化趋势。

    writer.add_scalar('Learning Rate', lr, epoch)
    

http://www.kler.cn/a/417133.html

相关文章:

  • jdk8没有Buffer.put()
  • week 9 - Entity-Relationship Modelling
  • 【JVM什么时候触发YoungGC和FullGC】
  • baomidou Mabatis plus引入异常
  • 进程的知识
  • 使用JdbcTemplate 结合预编译预计批量插入数据
  • Pandas 操作Excel
  • duxapp 2024-11-29 更新 新增 UI 组件功能
  • iQOO Neo10系列携三大蓝科技亮相,性能与续航全面升级
  • 知行合一:实践中的技术分享与学习
  • PostgreSQL WAL日志膨胀处理
  • 排序算法思维导图
  • Ubuntu源码安装gitlab13.7集群多前端《二》
  • MATLAB期末复习笔记(二)
  • Zero to JupyterHub with Kubernetes上篇 - Kubernetes 离线二进制部署
  • 【Git系列】利用 Bash 脚本获取 Git 最后一次非合并提交的提交人
  • CSS笔记(四)卡片翻转
  • 【优选算法篇】两队接力跑:双指针协作解题的艺术(下篇)
  • elementUI el-image的使用
  • 深度学习基础2
  • Windchill查找某一个id关联的数据库表
  • #JAVA-常用API-爬虫
  • ACM输入输出模板(下)【Java、C++版】
  • 【论文笔记】Towards Online Continuous Sign Language Recognition and Translation
  • 【JAVA进阶篇教学】第二十篇:如何高效处理List集合数据及明细数据
  • 刷LeetCode hot100--1.哈希表