📅  最后修改于: 2020-12-11 05:06:14             🧑  作者: Mango
为了评估模型性能,我们将评估方法称为-
loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)
为了评估模型性能,我们将评估方法称为-
loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)
我们将使用以下两个语句打印损失和准确性-
print("Test Loss", loss_and_metrics[0])
print("Test Accuracy", loss_and_metrics[1])
运行上述语句时,将看到以下输出-
Test Loss 0.08041584826191042
Test Accuracy 0.9837
这表明测试精度为98%,这应该是我们可以接受的。对我们意味着什么,在2%的情况下,手写数字将无法正确分类。我们还将绘制准确性和损失指标,以查看模型如何在测试数据上执行。
我们在训练过程中使用记录的历史记录来获取准确度指标图。以下代码将绘制每个时期的准确性。我们获取训练数据的准确性(“ acc”)和验证数据的准确性(“ val_acc”)进行绘图。
plot.subplot(2,1,1)
plot.plot(history.history['acc'])
plot.plot(history.history['val_acc'])
plot.title('model accuracy')
plot.ylabel('accuracy')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='lower right')
输出图如下所示-
从图中可以看到,准确性在前两个时期迅速提高,这表明网络正在快速学习。之后,曲线变平,表明不需要太多的时间来进一步训练模型。通常,如果训练数据准确性(“ acc”)持续提高,而验证数据准确性(“ val_acc”)变差,则可能是过度拟合。这表明该模型已开始存储数据。
我们还将绘制损耗指标以检查模型的性能。
同样,我们在训练(“损失”)和测试(“ val_loss”)数据上绘制损失。这是使用以下代码完成的-
plot.subplot(2,1,2)
plot.plot(history.history['loss'])
plot.plot(history.history['val_loss'])
plot.title('model loss')
plot.ylabel('loss')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='upper right')
此代码的输出如下所示-
从图中可以看出,训练集的损失在前两个时期迅速减少。对于测试集,损失不会以与训练集相同的速率减少,但在多个时期几乎保持不变。这意味着我们的模型很好地概括了看不见的数据。
现在,我们将使用训练有素的模型来预测测试数据中的数字。