[ PROMPT_NODE_22690 ]
Mlops Tensorboard 可视化
[ SKILL_DOCUMENTATION ]
# 综合可视化指南
使用 TensorBoard 可视化机器学习实验的完整指南。
## 目录
- 标量 (Scalars)
- 图像 (Images)
- 直方图与分布 (Histograms & Distributions)
- 图表 (Graphs)
- 嵌入 (Embeddings)
- 文本 (Text)
- PR 曲线
- 自定义可视化
## 标量
### 基础标量记录
python
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('runs/scalars_demo')
# 记录单个指标
for step in range(100):
loss = compute_loss()
writer.add_scalar('Loss', loss, step)
writer.close()
### 多个标量
python
# 分组相关指标
writer.add_scalars('Loss', {
'train': train_loss,
'validation': val_loss,
'test': test_loss
}, epoch)
writer.add_scalars('Metrics/Classification', {
'accuracy': accuracy,
'precision': precision,
'recall': recall,
'f1_score': f1
}, epoch)
### 时间序列指标
python
# 跟踪训练过程中的指标
for epoch in range(100):
# 训练指标
train_loss = 0.0
for batch in train_loader:
loss = train_batch(batch)
train_loss += loss
train_loss /= len(train_loader)
# 验证指标
val_loss, val_acc = validate()
# 记录
writer.add_scalar('Loss/train', train_loss, epoch)
writer.add_scalar('Loss/val', val_loss, epoch)
writer.add_scalar('Accuracy/val', val_acc, epoch)
# 记录学习率
current_lr = optimizer.param_groups[0]['lr']
writer.add_scalar('Learning_rate', current_lr, epoch)
### 自定义平滑
TensorBoard UI 允许平滑标量:
- 滑块从 0(无平滑)到 1(最大平滑)
- 指数移动平均
- 对噪声较大的指标非常有用
## 图像
### 单张图像
python
import torch
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('runs/images_demo')
# 记录单张图像 (C, H, W)
img = torch.rand(3, 224, 224)
writer.add_image('Sample_image', img, 0)
### 图像网格
python
from torchvision.utils import make_grid
# 从批次创建网格
images = torch.rand(64, 3, 224, 224) # 64 张图像的批次
img_grid = make_grid(images, nrow=8) # 每行 8 张图像
writer.add_image('Image_grid', img_grid, epoch)
### 训练可视化
python
# 可视化输入、预测和真实标签
for epoch in range(10):
# 获取批次
images, labels = next(iter(val_loader))
# 预测
with torch.no_grad():
predictions = model(images)
# 可视化输入
input_grid = make_grid(images[:16], nrow=4)
writer.add_