网站大量收购独家精品文档,联系QQ:2885784924

深度学习案例教程 教案3.4.4手写数字识别测试和评估.docx

深度学习案例教程 教案3.4.4手写数字识别测试和评估.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

(p1)

本节课我们将进行手写数字识别网络模型测试和评估的讲解

在训练完成以后,为了检验模型的训练结果,

可以在测试集上进行验证,

通过不同的估方法来评估。

针对一个分类模型,常见的评估方法是求分类准确率,

它能衡量所有类别预测正确的个数占所有样本的比值。

(p2)

我们来看一下具体的代码实现

在测试阶段,我们通常不需要进行反向传播和梯度更新,

因此使用withtorch.no_grad():来关闭梯度计算,以提高计算效率。

代码中的test_loader是一个包含测试数据的数据加载器,

其中每个数据点都包含一张28*28的手写数字图片和对应的标签。

对于每个测试数据点,代码首先将图片展开成一维向量,

然后将其输入到已经训练好的神经网络模型model中进行前向传播,

得到模型对该图片的预测结果output。

其中output是一个大小为10的张量,

每个元素代表模型对该图片为数字0~9的预测概率。

接下来,代码使用torch.max(output,1)

来从output中获取概率最大的类别,

也就是模型对该图片的预测结果。

其中torch.max函数的第二个参数1表示在横向(第二个)维度上取最大值,

返回的第一个结果是最大值,

第二个结果是最大值的下标,也就是模型对该图片的预测结果。

然后,代码将预测结果predicted和实际标签labels进行比较,

并统计预测正确的数量correct。

(p3)

最后,代码计算准确率correct/total,并将其格式化输出为字符串,打印出来作为测试结果。

(p4)

运行代码后,我们将得到模型在测试机上的准确率

(p5)

除了准确率外,还有很多其他的评价指标可以用来评价分类模型的性能,

例如精确率、召回率、F1值等。

精确率:指模型预测为正例中,真正为正例的比例

公式中得TP表示真正例的数量,FP表示假正例的数量。

(p6)

类似的,

召回率(Recall):指真正为正例中,模型预测为正例的比例

(p7)

有了精确率和召回率

我们还能建立一个更加全面的指标F1值

F1值:综合考虑精确率和召回率,是精确率和召回率的调和平均数。?

(p8)

那么在了解了这些指标的定义后

我们可以将原来的评价进行完善

这段代码是对训练好的神经网络模型进行测试

并计算准确率、精确率、召回率和F1值。

具体来说,代码中首先引入了precision_score、recall_score、f1_score三个函数,

这三个函数分别用来计算精确率、召回率和F1值。

这些函数都来自sklearn.metrics模块,需要先导入该模块才能使用。

接下来,代码使用withtorch.no_grad()来关闭梯度计算,

以提高计算效率。

然后,代码定义了变量correct和total,

分别表示预测正确的数量和测试数据点的总数。

代码还定义了两个空列表true_labels和pred_labels,

用来存储每个数据点的真实标签和预测标签。

接着,代码使用for循环遍历测试数据集中的每个数据点。

对于每个数据点,

代码首先将图片展开成一维向量,

并将其输入到已经训练好的神经网络模型中进行前向传播,得到模型对该图片的预测结果。

然后,代码使用torch.max函数来获取概率最大的类别,

也就是模型对该图片的预测结果,

并将预测结果predicted和实际标签labels进行比较,

统计预测正确的数量correct。

同时,代码将每个数据点的真实标签和预测标签分别添加到true_labels和pred_labels列表中。

(p9)

最后,代码分别使用precision_score、recall_score和f1_score函数来计算精确率、召回率和F1值,

其中true_labels和pred_labels分别表示真实标签和模型预测标签的数组,

参数average用来指定对每个类别的评价方式,常用的有macro和micro两种方式。

(p10)

最终,代码将准确率、精确率、召回率和F1值的评价结果以格式化字符串的形式输出。

(p10)

在进行模型评价时,我们也可以总结出一些注意点

首先是数据集的划分:

在训练和评价模型时,

需要将数据集划分为训练集、验证集和测试集。

其中,训练集用来训练模型,验证集用来调整模型的超参数,

测试集用来评价模型的性能。

需要注意的是,划分数据集时需要尽量保证数据集的均衡性,避免某个类别的数据过多或过少。

另外,在评价指标的选择方面:

评价指标的选择应该根据具体的任务和需求来确定。

例如,在二分类问题中,精确率、召回率和F1值是比较常用的评价指标;

在多分类问题中,准确率、混淆矩阵、分类报告等指标也很常见。

选择合适的评价指标可以更

您可能关注的文档

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档