模型训练、评估与推理 |
您所在的位置:网站首页 › 模型设定如何判断和如何调整 › 模型训练、评估与推理 |
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 |