amazon-web-services - 如何使用 Lambda 和 API 网关部署 AWS Sagemaker 创建的乳腺癌预测端点?
问题描述
我正在尝试使用 AWS Lambda 和 API 网关在 Amazon Sagemanker 上部署现有的乳腺癌预测模型。我已按照以下网址的官方文档进行操作。
我在“predicted_label”处收到类型错误。
result = json.loads(response['Body'].read().decode())
print(result)
pred = int(result['predictions'][0]['predicted_label'])
predicted_label = 'M' if pred == 1 else 'B'
return predicted_label
请让我知道是否有人可以解决此问题。谢谢你。
解决方案
通过打印结果类型,print(type(result))
您可以看到它的字典。现在您可以看到键名是“score”而不是您提供给 pred 的“predicted_label”。因此将其替换为
pred = int(result['predictions'][0]['score'])
我认为这可以解决您的问题。
这是我的 lambda 函数:
import os
import io
import boto3
import json
import csv
# grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker')
def lambda_handler(event, context):
print("Received event: " + json.dumps(event, indent=2))
data = json.loads(json.dumps(event))
payload = data['data']
print(payload)
response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
ContentType='text/csv',
Body=payload)
#print(response)
print(type(response))
for key,value in response.items():
print(key,value)
result = json.loads(response['Body'].read().decode())
print(type(result))
print(result['predictions'])
pred = int(result['predictions'][0]['score'])
print(pred)
predicted_label = 'M' if pred == 1 else 'B'
return predicted_label
推荐阅读
- java - BinaryOperator 的身份
- python-3.x - 在 selenium python 中检测浏览器的语言?
- reactjs - ReactJs redux 表单:传递给表单的初始值不显示
- java - 带有thymeleaf的Java spring-boot登录示例代码
- go - golang 模块和本地包
- javascript - SAPUi5 TypeError:I.fFunction.call 不是函数
- javascript - cytoscape.js 如何在 div 中显示节点?
- vb.net - 如何通过字符串从不同的项目/程序集中打开表单?
- javascript - 直到 N 个与 RXJS 相同的数字?
- php - 树枝宏可以返回值吗?