深度学习 - 如何在 WML 上测试 MNIST 教程模型?
Deep Learning - How can I test the MNIST tutorial model on WML?
这是一个 "Watson Studio" 相关的问题。我已经完成了以下深度学习 tutorial/experiment 助手,成功地将生成的 CNN 模型部署到 WML(WebService)。酷!
Tutorial: Single convolution layer on MNIST data
Experiment Assistant
接下来,我想测试模型是否可以在部署的环境中识别我的图像(MNIST),然后我想到了这些问题。
我应该为模型输入准备什么样的输入文件(可能是像素图像文件)?我怎样才能让评分端点通过我的图像? (我在 "Implementation" 选项卡上看到 python 代码片段,但这是 json 示例,不确定如何传递像素图像...)
payload_scoring = {"fields": [array_of_feature_columns], "values": [array_of_values_to_be_scored, another_array_of_values_to_be_scored]}
任何 advice/suggestions 非常欢迎。提前致谢。
训练的模型接受一个输入数据,该数据是一个 4 维数组,即 [<batchsize>, 28, 28, 1]
,其中 28 表示图像的高度和宽度(以像素为单位),1 表示通道数。目前,WML 在线部署和评分服务需要格式与模型输入格式相匹配的有效负载数据。因此,要使用此模型预测任何图像,您必须 ...
- 将图像转换为[1, 28, 28, 1]维数组。将图像转换为数组将在下一节中说明。
- pre-process 模型所需的图像数据,即执行 (a) 规范化数据 (b) 将类型转换为 float
- pre-processed 数据必须使用适当的键以 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]}
这是一个 "Watson Studio" 相关的问题。我已经完成了以下深度学习 tutorial/experiment 助手,成功地将生成的 CNN 模型部署到 WML(WebService)。酷!
Tutorial: Single convolution layer on MNIST data
Experiment Assistant
接下来,我想测试模型是否可以在部署的环境中识别我的图像(MNIST),然后我想到了这些问题。 我应该为模型输入准备什么样的输入文件(可能是像素图像文件)?我怎样才能让评分端点通过我的图像? (我在 "Implementation" 选项卡上看到 python 代码片段,但这是 json 示例,不确定如何传递像素图像...)
payload_scoring = {"fields": [array_of_feature_columns], "values": [array_of_values_to_be_scored, another_array_of_values_to_be_scored]}
任何 advice/suggestions 非常欢迎。提前致谢。
训练的模型接受一个输入数据,该数据是一个 4 维数组,即 [<batchsize>, 28, 28, 1]
,其中 28 表示图像的高度和宽度(以像素为单位),1 表示通道数。目前,WML 在线部署和评分服务需要格式与模型输入格式相匹配的有效负载数据。因此,要使用此模型预测任何图像,您必须 ...
- 将图像转换为[1, 28, 28, 1]维数组。将图像转换为数组将在下一节中说明。
- pre-process 模型所需的图像数据,即执行 (a) 规范化数据 (b) 将类型转换为 float
- pre-processed 数据必须使用适当的键以 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]}