
上QQ阅读APP看书,第一时间看更新
2.1.6 使用测试集评估
我们已经通过训练数据集对网络进行了两次训练,即两个epoch。现在我们来检查一下,这个网络模型是否已经学到了东西。我们将用神经网络的输出作为预测的类别来检查网络的预测性能,用样本的真实类别来校对。如果预测是正确的,我们将样本添加到正确预测的列表里。下面使用2.1.2节中定义的函数,从测试集中选一些图片,如图2-3所示。

图2-3 从测试集中选出的图片
输出结果如下:

现在让我们看看,训练好的网络模型认为这些样本应该能预测出什么。神经网络模型的最后一层是一个全连接层,输出的是预测的与10个类别的近似程度,值越大则表示与某一个类别的近似程度越高,网络就越认为图像属于这个类别。打印其中最相似类别的代码如下:

输出结果如下:

从结果来看,效果非常好,接下来对测试集中的每一张图片都进行预测,并且计算整体的准确率。代码如下:

输出结果如下:

如果模型全预测为一个类别,那么准确率应该是10%左右,而我们的训练(两个epoch)得到的模型,准确率为54%。这说明神经网络还是学到了一些东西。为了进行精细化分析,下面看看模型在每一个类别上的准确率。代码如下:


输出结果如下:

从输出可以清晰地看到每个类别的准确率,其中准确率比较高的是horse,其准确率为74% ;其次是car,准确率为73% ;准确率较低的是deer,准确率为18% ;dog的准确率为20%。如果想提高准确率,可以多训练几个epoch。