Watson Studio 的神经网络没有给出正确的输出格式
Watson Studio's Neural Network does not give the proper output format
我遵循了以下关于手写数字识别的教程: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 由以下代码片段组成:
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,并将图像发送到网络服务。我得到这些 json 的响应,而不是 0 和 1 索引处的预期高概率值,几乎没有差异(也尝试使用其他数字,但结果相同)。
Scoring response {'fields': ['prediction'], 'values':
[[0.024692464619874954, 0.251592218875885, 0.1783675253391266,
0.07483808696269989, 0.10192563384771347, 0.09394937008619308, 0.06621485948562622, 0.13631191849708557, 0.033091891556978226, 0.03901601955294609]]} Scoring response {'fields': ['prediction'], 'values': [[0.024196961894631386, 0.2504081130027771,
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 数据集的测试数据,但结果相同 ()。
我不知道我哪里搞砸了,任何帮助将不胜感激。提前致谢!
好吧原来是我输入格式乱了,数据不需要归一化,也不需要倒置。我所要做的就是创建倒置的 png 文件,然后更改
img_to_predict = 1.0 - (img.reshape(28, 28, 1)/255)
一部分到
img_to_predict = img.reshape(28,28,1)
我可以将我的图片以及 mnist 测试数据集中的一些示例数字发送到我部署的服务。
我遵循了以下关于手写数字识别的教程: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 由以下代码片段组成:
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,并将图像发送到网络服务。我得到这些 json 的响应,而不是 0 和 1 索引处的预期高概率值,几乎没有差异(也尝试使用其他数字,但结果相同)。
Scoring response {'fields': ['prediction'], 'values': [[0.024692464619874954, 0.251592218875885, 0.1783675253391266, 0.07483808696269989, 0.10192563384771347, 0.09394937008619308, 0.06621485948562622, 0.13631191849708557, 0.033091891556978226, 0.03901601955294609]]} Scoring response {'fields': ['prediction'], 'values': [[0.024196961894631386, 0.2504081130027771, 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 数据集的测试数据,但结果相同 (
我不知道我哪里搞砸了,任何帮助将不胜感激。提前致谢!
好吧原来是我输入格式乱了,数据不需要归一化,也不需要倒置。我所要做的就是创建倒置的 png 文件,然后更改
img_to_predict = 1.0 - (img.reshape(28, 28, 1)/255)
一部分到
img_to_predict = img.reshape(28,28,1)
我可以将我的图片以及 mnist 测试数据集中的一些示例数字发送到我部署的服务。