目录
- 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()
的参数包括:
- tag: 图像的标签(字符串),可以在 TensorBoard 中用于标识不同的图像。
- img_tensor: 需要记录的图像数据。这个数据通常是一个 tensor,形状为
(C, H, W)
,其中C
是通道数(例如 RGB 为 3),H
是图像的高度,W
是图像的宽度。 - global_step (可选): 用于记录图像的步骤标记,通常是在训练中记录的步数或 epoch。
- 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 # 假设准确率逐渐提高# 记录损失值到 TensorBoardwriter.add_scalar('Loss', loss, step)# 记录准确率到 TensorBoardwriter.add_scalar('Accuracy', accuracy, step)# 关闭 writer
writer.close()
参数解释
add_scalar()
的参数包括:
- tag: 标量的标签(字符串),用于在 TensorBoard 中区分不同的标量曲线,例如 ‘Loss’, ‘Accuracy’ 等。
- scalar_value: 需要记录的标量值,通常是一个浮动数值,表示某个指标(例如损失值、准确率等)。
- global_step (可选): 训练的步数,通常是当前的训练迭代(epoch)或 mini-batch 的编号,用于标识标量数据的时间戳。这个步骤会被用作横轴,帮助跟踪标量值随训练进度的变化。
- walltime (可选): 数据记录的时间戳,默认是当前时间。
示例:记录损失和准确率
在训练过程中,通常需要记录训练损失和准确率。使用 add_scalar()
方法可以将这些值保存下来并在 TensorBoard 中可视化:
# 假设每个 epoch 训练时都更新损失和准确率
for epoch in range(10):train_loss = 0.5 * epoch # 假设损失在减少train_accuracy = 90 + 1.5 * epoch # 假设准确率在提高# 记录损失和准确率到 TensorBoardwriter.add_scalar('Train/Loss', train_loss, epoch)writer.add_scalar('Train/Accuracy', train_accuracy, epoch)
常见应用场景
-
损失函数曲线:在训练过程中,你可以用
add_scalar()
方法记录每个训练步骤或每个 epoch 的损失值,帮助你跟踪模型是否正在收敛。writer.add_scalar('Loss/train', loss, epoch)
-
准确率曲线:你也可以记录每个 epoch 或 batch 的准确率或其他评价指标,查看模型的性能变化。
writer.add_scalar('Accuracy/train', accuracy, epoch)
-
学习率曲线:可以记录学习率的变化,特别是在使用学习率调度器时,查看学习率的变化趋势。
writer.add_scalar('Learning Rate', lr, epoch)