You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres调用SageMaker端点传递多维特征数组的问题

解决Postgres RDS调用SageMaker端点传递多维特征数组的问题

问题背景

Python调用SageMaker端点时,传入单组或多组特征的二维数组能正常返回预测结果,但使用Postgres的aws_sagemaker.invoke_endpoint直接传递特征数值时,CloudWatch报错提示模型期望2D数组,实际收到1D数组。

错误原因

Postgres直接传递多个数值参数时,会将其拼接为一维数组,而你的Sklearn模型训练时使用的是二维输入结构(每行对应一个样本),因此需要将Postgres的输入包装成符合要求的二维数组JSON格式。

解决方案

1. 传递单样本

将特征包装为二维数组的JSON字符串,并指定content_type为application/json:

SELECT aws_sagemaker.invoke_endpoint (
    'Custom-sklearn-model-2024-04-04-18-14-53',
    'application/json',
    '[[1454.0, 1.0, 0.5, 1.0, 1.0, 0.0, 34.0, 0.7, 83.0, 4.0, 3.0, 250.0, 1033.0, 3419.0, 7.0, 5.0, 5.0, 1.0, 1.0, 0.0]]'
);

2. 传递多样本

同样使用JSON格式传递多维数组,与Python代码中json.dumps(input_data)生成的结构完全一致:

SELECT aws_sagemaker.invoke_endpoint (
    'Custom-sklearn-model-2024-04-04-18-14-53',
    'application/json',
    '[[1454.0, 1.0, 0.5, 1.0, 1.0, 0.0, 34.0, 0.7, 83.0, 4.0, 3.0, 250.0, 1033.0, 3419.0, 7.0, 5.0, 5.0, 1.0, 1.0, 0.0], [1092.0, 1.0, 0.5, 1.0, 10.0, 0.0, 11.0, 0.5, 167.0, 3.0, 14.0, 468.0, 571.0, 737.0, 14.0, 4.0, 11.0, 0.0, 1.0, 0.0]]'
);

关键注意事项

  • 必须显式指定content_type为application/json,否则Postgres会使用默认格式传递数据,导致SageMaker端点解析为一维数组。
  • 输入特征的顺序必须与模型训练时的特征顺序完全一致,否则会导致预测结果错误。

内容的提问来源于stack exchange,提问作者dayv2005

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:15:29