上传 JSON 格式的图像文件
Upload an image file with JSON Format
我正在尝试构建机器学习算法并使用 REST API 进行部署。当我这样做时,我得到了一些错误,如“MALFORMED_REQUEST”、“消息”:“无法解析来自 JSON 的输入。确保输入是有效的 JSON 格式的字符串。”。在下面你可以看到我的代码。你能告诉我我做错了什么吗?提前致谢。
import json
import requests
import base64
#data = 'cat_Test2.jpg'
with open('./Dataset/test2/cat_Test2.jpg', mode='rb') as file:
img = file.read()
data = base64.encodebytes(img).decode('utf-8')
#print(json.dumps(data))
#print(data)
headers = {'Content-Type': 'application/json'}
request_uri = 'http://127.0.0.1:5000/invocations'
if __name__ == '__main__':
try:
response = requests.post(request_uri, data=data, headers=headers)
print(response.content)
print('done!!!')
except Exception as ex:
raise (ex)
仅仅因为您已将图像转换为(base64 编码)字符串,并不意味着它现在有效 JSON。
我看到你已经在你的代码中使用了 print(json.dumps(data))
,你应该注意到包装双引号,而不是 print(data)
.
示例:
import json
s = "abc"
print(s)
print(json.dumps(s))
输出:
abc
"abc"
只有加引号后字符串才有效JSON.
这意味着
response = requests.post(request_uri, data=json.dumps(data), headers=headers)
应该完成这项工作。
为了完整起见,请看一下加载字符串与加载 JSON 字符串的情况:
import json
s = 'abc'
json.loads(s)
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
import json
s = '"abc"'
print(json.loads(s))
abc
MLflow 模型服务器接受 JSON(pandas 面向拆分格式)或 CSV 作为输入。
https://mlflow.org/docs/latest/models.html#deploy-mlflow-models
您需要将图像转换成这两种格式中的一种。例子:
https://github.com/amesar/mlflow-examples/tree/master/python/keras_tf_mnist#score-mnist-png-file
我正在尝试构建机器学习算法并使用 REST API 进行部署。当我这样做时,我得到了一些错误,如“MALFORMED_REQUEST”、“消息”:“无法解析来自 JSON 的输入。确保输入是有效的 JSON 格式的字符串。”。在下面你可以看到我的代码。你能告诉我我做错了什么吗?提前致谢。
import json
import requests
import base64
#data = 'cat_Test2.jpg'
with open('./Dataset/test2/cat_Test2.jpg', mode='rb') as file:
img = file.read()
data = base64.encodebytes(img).decode('utf-8')
#print(json.dumps(data))
#print(data)
headers = {'Content-Type': 'application/json'}
request_uri = 'http://127.0.0.1:5000/invocations'
if __name__ == '__main__':
try:
response = requests.post(request_uri, data=data, headers=headers)
print(response.content)
print('done!!!')
except Exception as ex:
raise (ex)
仅仅因为您已将图像转换为(base64 编码)字符串,并不意味着它现在有效 JSON。
我看到你已经在你的代码中使用了 print(json.dumps(data))
,你应该注意到包装双引号,而不是 print(data)
.
示例:
import json
s = "abc"
print(s)
print(json.dumps(s))
输出:
abc
"abc"
只有加引号后字符串才有效JSON.
这意味着
response = requests.post(request_uri, data=json.dumps(data), headers=headers)
应该完成这项工作。
为了完整起见,请看一下加载字符串与加载 JSON 字符串的情况:
import json
s = 'abc'
json.loads(s)
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
import json
s = '"abc"'
print(json.loads(s))
abc
MLflow 模型服务器接受 JSON(pandas 面向拆分格式)或 CSV 作为输入。 https://mlflow.org/docs/latest/models.html#deploy-mlflow-models
您需要将图像转换成这两种格式中的一种。例子: https://github.com/amesar/mlflow-examples/tree/master/python/keras_tf_mnist#score-mnist-png-file