1. 为什么需要训练过程可视化
在深度学习模型训练过程中,我们常常会遇到这样的困惑:损失函数曲线为什么突然上升?验证集准确率为何停滞不前?学习率调整后模型表现如何变化?这些问题的答案都隐藏在训练过程的数字变化中。Matplotlib作为Python生态中最经典的可视化工具,能够帮助我们直观地观察这些关键指标的变化趋势。
我曾在训练一个图像分类模型时,发现验证集准确率在epoch=50左右突然下降。通过Matplotlib绘制的学习曲线,我很快发现是学习率设置过高导致模型在后期无法收敛。这种问题如果仅靠打印日志数字很难及时发现,而可视化图表能让我们对模型状态一目了然。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 训练日志的数据采集
2.1 基础日志记录方法
PyTorch训练过程中最基础的日志记录方式是直接在训练循环中打印关键指标:
python复制for epoch in range(epochs):
train_loss = 0.0
for data, target in train_loader:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
train_loss += loss.item()
train_loss /= len(train_loader)
print(f'Epoch {epoch}: Train Loss {train_loss:.4f}')
这种方法虽然简单,但数据分散在控制台输出中,不利于后续分析和可视化。更好的做法是将日志结构化存储。
2.2 使用字典存储训练指标
我推荐使用字典来存储各个epoch的训练指标:
python复制history = {
'train_loss': [],
'val_loss': [],
'train_acc': [],
'val_acc': []
}
for epoch in range(epochs):
# 训练代码...
history['train_loss'].append(train_loss)
history['val_loss'].append(val_loss)
# 其他指标...
这种结构化的存储方式为后续的可视化提供了便利的数据基础。
3. Matplotlib可视化实战
3.1 基础损失函数曲线绘制
最基本的可视化就是绘制训练和验证损失曲线:
python复制import matplotlib.pyplot as plt
plt.figure(figsize=(
