被训练的模型接受一个 4 维数组的输入数据,即[<batchsize>, 28, 28, 1]
28 表示图像的高度和宽度(以像素为单位),1 表示通道数。目前,WML 在线部署和评分服务需要与模型输入格式匹配的有效载荷数据。因此,要使用此模型预测任何图像,您必须...
- 将图像转换为 [1, 28, 28, 1] 维度的数组。将图像转换为数组将在下一节中解释。
- 根据模型的要求预处理图像数据,即执行(a)规范化数据(b)将类型转换为浮点数
- 预处理数据必须使用适当的键以 json 格式指定。此 json 文档将作为模型评分请求的输入负载。
如何将图像转换为数组?有两种方法..(使用python代码)
a) keras python 库有一个 MNIST 数据集,其中包含转换为 28 x 28 数组的 MNIST 图像。使用下面的 python 代码,我们可以使用这个数据集来创建评分有效负载。
import numpy as np
from keras.datasets import mnist
(X, y), (X_test, y_test) = mnist.load_data()
score_payload_data = X_test.reshape(X_test.shape[0], X_test.shape[1], X_test.shape[2], 1)
score_payload_data = score_payload_data.astype("float32")/255
score_payload_data = score_payload_data[2].tolist() ## we are choosing the 2nd image in the list to predict
scoring_payload = {'values': [score_payload_data]}
b) 如果您有大小为 28 x 28 像素的图像,我们可以使用以下代码创建评分有效负载。
img_file_name = "<image file name with full path>"
from scipy import misc
img = misc.imread(img_file_name)
img_to_predict = img.reshape(img.shape[0], img.shape[1], 1)/255
img_to_predict = img_to_predict.astype("float32").tolist()
scoring_payload = {"values": [img_to_predict]}