16 PyTorch小白从零学教程系列:模型评估与调优之评估模型性能
系列进度
PyTorch 入门 · 第 16 / 20 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
评估阶段要关闭训练行为和梯度计算。model.eval() 和 torch.no_grad() 能减少不必要计算,也避免 BatchNorm、Dropout 等行为混乱。
评估时我会保存错例,而不只保存平均分。错例能告诉你模型真正薄弱的地方。
在上一篇文章中,我们深入探讨了模型训练的实现和训练循环的细节。我们通过定义损失函数、优化器以及训练循环来训练我们的模型。现在,我们进入模型评估与调优的过程,重点放在如何评估模型性能。
评估模型性能的重要性
模型训练不仅仅是提高损失函数的表现,更重要的是评估模型对未见样本的泛化能力。有效的评估策略可以帮助我们了解模型的强项与弱点,以及它在真实世界应用中的可靠性。因此,评估模型性能是深度学习开发过程中不可或缺的一步。
评估 PyTorch 模型性能时,先看 eval 模式、no_grad、测试集加载、指标累计、混淆矩阵和错误样例。
常用的评估指标
在评估分类模型时,我们通常使用以下指标:
-
准确率(Accuracy): 它是正确分类的样本占总样本数的比例。
其中,TP是真正例,TN是真负例,FP是假正例,FN是假负例。
精确率(Precision): 它度量的是被分类为正类的样本中真正为正类的比例。
召回率(Recall): 又称为灵敏度,它度量的是所有真正的正类样本中被正确分类为正类的比例。
F1分数: 它是精确率和召回率的调和平均,常用于不均衡数据的评估。
使用PyTorch进行模型性能评估
接下来,让我们通过代码演示如何在PyTorch中评估模型性能。我们将构建一个简单的分类模型,并计算其准确率、精确率、召回率和F1分数。
代码实例
假设我们已经完成了模型的训练,现在我们使用测试集来评估这个模型:
import torch
import torch.nn.functional as F
from sklearn.metrics import precision_score, recall_score, f1_score
# 假设我们有一个训练好的模型和测试数据集
model.eval() # 设置模型为评估模式
# 假设 test_loader 是我们的测试数据集的 DataLoader
all_preds = []
all_labels = []
with torch.no_grad(): # 禁用梯度计算
for data, labels in test_loader:
outputs = model(data) # 前向传播得到输出
_, preds = torch.max(outputs, 1) # 获取预测值
all_preds.extend(preds.numpy()) # 将预测值添加到列表
all_labels.extend(labels.numpy()) # 将真实标签添加到列表
# 计算评估指标
accuracy = (np.array(all_preds) == np.array(all_labels)).mean()
precision = precision_score(all_labels, all_preds, average='weighted')
recall = recall_score(all_labels, all_preds, average='weighted')
f1 = f1_score(all_labels, all_preds, average='weighted')
print(f'准确率: {accuracy:.2f}')
print(f'精确率: {precision:.2f}')
print(f'召回率: {recall:.2f}')
print(f'F1分数: {f1:.2f}')
在上述代码中,我们使用model.eval()将模型设置为评估模式,避免了在评估时影响模型的某些层(例如 Dropout 和 BatchNorm)。然后,我们禁用梯度计算以提高性能,并通过循环遍历test_loader中的测试数据,计算模型的预测结果。
读到这里,可以把《PyTorch小白从零学教程系列:模型评估与调优之评估模型性能》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。
读完《PyTorch小白从零学教程系列:模型评估与调优之评估模型性能》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。
总结
通过本节的学习,我们不仅了解了评估模型性能的重要性,还学习了几种常用的评估指标及其计算方法。在 PyTorch 中实现这些指标的计算也相对简单。接下来的文章中,我们将继续探讨“过拟合与正则化”的主题,这是模型评估与调优中的一个重要方面,帮助我们构建更加鲁棒的模型。所以,让我们期待下一篇内容的展开。
读完《PyTorch小白从零学教程系列:模型评估与调优之评估模型性能》后,可以回头问三件事:它解决什么问题,哪一步最容易出错,自己能否拿一个小例子跑通。
希望这篇文章对你学习 PyTorch 和模型评估有所帮助,欢迎继续关注我们的教程系列!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
PyTorch小白从零学教程系列:模型评估与调优之评估模型性能适合谁读?
这是 PyTorch 入门 系列第 16 / 20 篇,适合正在学习PyTorch 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇PyTorch 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读