我有一个Sagemaker端点,可以从boto3客户端推断出该端点并获得响应。
每boto3 doc,响应结果的Body
是Byte
对象StreamingBody
类型。我将其转换为字典
response = client.invoke_endpoint(EndpointName=endpoint_name, Body=json.dumps(data))
response_body = response['Body']
dict_response = response_body.read().decode('utf-8')
print(dict_response)
上面的代码给了我类似下面的响应(这篇文章被精简)
我需要从“ floatVal”键中检索数组。我该怎么办?
{
"outputs": {
"score": {
"dtype": "DT_FLOAT",
"floatVal": [
0.00012408883776515722,
...........
-0.8316119909286499,
-0.24423488974571228
],
"tensorShape": {
"dim": [
{
"size": "1"
},
{
"size": "1024"
}
]
}
}
},
"modelSpec": {
"version": "1",
"name": "generic_model",
"signatureName": "serving_default"
}
}
答案 0 :(得分:0)
实际上,dict_response
在这里实际上不是dictionary
,而是string
类型。因此,我不得不将dict_response
转换为实际的词典,然后才能检索floatVal
键。
更新的代码
response = client.invoke_endpoint(EndpointName=endpoint_name, Body=json.dumps(data))
response_body = response['Body']
response_str = response_body.read().decode('utf-8')
response_dict = eval(response_str)
print(response_dict['outputs']['score']['floatVal'])