模型训练、评估与推理

您所在的位置:网站首页 模型设定如何判断和如何调整 模型训练、评估与推理

模型训练、评估与推理

2023-09-05 22:44| 来源: 网络整理| 查看: 265

2.5 使用 Model.predict 执行推理¶

高层 API 中提供了 Model.predict 接口,可对训练好的模型进行推理验证。只需传入待执行推理验证的样本数据,即可计算并返回推理结果。

返回格式是一个列表:

模型是单一输出:[(numpy_ndarray_1, numpy_ndarray_2, …, numpy_ndarray_n)]

模型是多输出:[(numpy_ndarray_1, numpy_ndarray_2, …, numpy_ndarray_n), (numpy_ndarray_1, numpy_ndarray_2, …, numpy_ndarray_n), …]

如果模型是单一输出,则输出的形状为 [1, n],n 表示数据集的样本数。其中每个 numpy_ndarray_n 是对应原始数据经过模型计算后得到的预测结果,类型为 numpy 数组,例如 mnist 分类任务中,每个 numpy_ndarray_n 是长度为 10 的 numpy 数组。

如果模型是多输出,则输出的形状为[m, n],m 表示标签的种类数,在多标签分类任务中,m 会根据标签的数目而定。

# 用 predict 在测试集上对模型进行推理 test_result = model.predict(test_dataset) # 由于模型是单一输出,test_result的形状为[1, 10000],10000是测试数据集的数据量。这里打印第一个数据的结果,这个数组表示每个数字的预测概率 print(len(test_result)) print(test_result[0][0]) # 从测试集中取出一张图片 img, label = test_dataset[0] # 打印推理结果,这里的argmax函数用于取出预测值中概率最高的一个的下标,作为预测标签 pred_label = test_result[0][0].argmax() print('true label: {}, pred label: {}'.format(label[0], pred_label)) # 使用matplotlib库,可视化图片 from matplotlib import pyplot as plt plt.imshow(img[0]) Predict begin... step 10000/10000 [==============================] - 2ms/step Predict samples: 10000 1 [[ -6.512169 -6.7076845 0.5048795 1.6733919 -9.670526 -1.6352568 -15.833721 13.87411 -8.215239 1.5966017]] true label: 7, pred label: 7

示例中对测试集 test_dataset 中每一个样本执行预测,测试数据集中包含 10000 个数据,因此将取得 10000 个预测输出。

打印第一个样本数据的预测输出,可以看到,在手写数字识别任务中,经过模型的计算得到一个数组 [[ -6.5593615 -6.4680595 -1.4708003 2.1043894 -11.743436 -4.4516582 -14.733968 12.036645 -6.582403 -1.8672216]],取其中最大的值(12.036645)的下标(对应 label 7),即得到该样本数据的预测结果(pred label: 7),可视化该样本图像(true label: 7),与预测结果一致,说明模型准确预测了样本图像上的数字。

除了上面介绍的三个 API 之外, paddle.Model 类也提供了其他与训练、评估与推理相关的 API:

Model.train_batch:在一个批次的数据集上进行训练;

Model.eval_batch:在一个批次的数据集上进行评估;

Model.predict_batch:在一个批次的数据集上进行推理。

这三个 API 与上面介绍的三个 API 的输入数据的维度有所不同,详细介绍可参考对应 API 文档。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3