Watson Studio的神经网络无法提供正确的输出格式

时间:2019-02-11 14:57:37

标签: python ibm-watson watson-studio

我遵循了以下有关手写数字识别的教程:https://www.youtube.com/watch?v=Gcn7l37Qhng。但是,它没有对部署进行任何说明,因此我根据其他IBM教程和示例亲自部署了WebService。

我正确地填写了凭据,并尝试使用以下代码片段将自己制作的28x28图片转换为适当的有效载荷:

import urllib3, requests, json
from PIL import Image
import numpy as np

img = Image.open(filepath)

img = np.array(img.getdata())
img=img[:,1]

img_to_predict = 1.0 - (img.reshape(28, 28, 1)/255)

img_to_predict = img_to_predict.astype("float32").tolist()
scoring_payload = {"values": [img_to_predict]}

有效负载由以下代码段构成:

payload_scoring = scoring_payload

response_scoring = requests.post('https://us-south.ml.cloud.ibm.com/v3/wml_instances/****/deployments/****/online', json=payload_scoring, headers=header)
print("Scoring response")
print(json.loads(response_scoring.text))

我希望能收到概率最高的值对应于正确数字的类别。我画了一个0和一个1,然后将图像发送到Web服务。而不是在0和1索引处预期的高概率值,我得到的这些json响应几乎没有差异(也尝试了其他数字,但结果相同)。

  

评分响应 {“字段”:[“预测”],“值”:   [[0.024692464619874954、0.251592218875885、0.1783675253391266,   0.07483808696269989、0.10192563384771347、0.09394937008619308、0.06621485948562622、0.13631191849708557、0.033091891556978226、0.03901601955294609]]} 评分响应 {'fields':['prediction'],'values':[[0.024196961894631386,[   0.18672968447208405、0.078950896859169、0.09495671093463898、0.09053520858287811、0.06100791320204735、0.1424102932214737、0.03167588636279106、0.039128340780735016]]}

我尝试从机器学习流程的示例流程中部署另一个模型,但是我得到了同样的废话结果。该服务的答案与发送的图像的类别不正确。

我尝试将预制的神经网络模型与https://github.com/pmservice/wml-sample-models/blob/master/scikit-learn/hand-written-digits-recognition/test-data/mnist-scikit-learn-test-payload.json的给定输入一起使用,但这是我唯一可以使用的工作数据。

我尝试使用mnist数据集的测试数据,但结果相同(Deep Learning - How can I test the MNIST tutorial model on WML?)。

我不知道我在哪里搞砸,任何帮助将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:0)

好吧,原来我弄乱了输入格式,数据不需要规范化,也不需要反转。我要做的就是创建倒置的png文件,然后更改

img_to_predict = 1.0 - (img.reshape(28, 28, 1)/255)

加入

img_to_predict = img.reshape(28,28,1)

我可以将照片以及mnist测试数据集中的一些示例数字发送到部署的服务。