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

Tensorflow Serving Predict API报'base64数据格式错误'问题排查

解决TensorFlow Serving调用时的'not formatted correctly for base64 data'错误

这个问题的核心原因其实很清楚:你调用API时默认使用了模型的serving_default签名,而这个签名的输入类型是DT_STRING——TensorFlow Serving对字符串类型的输入会默认期望你传入base64编码的数据,但你提供的是原始浮点数数组,自然会触发格式不匹配的错误。而你真正想使用的是predict_fraud签名,它的输入是DT_FLOAT,完全不需要base64编码。

下面是两种直接有效的解决方法:

方法1:调用API时显式指定目标签名

修改你的请求URL,在模型名称后加上:predict_fraud,明确告诉TensorFlow Serving使用这个签名处理请求:

POST /v1/models/payfraud:predict_fraud

请求体保持你原来的格式即可:

{
 "inputs": [
 { "payFraudInput": [[44.26, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]] }
 ]
}

这样Serving就会使用predict_fraud签名的DT_FLOAT输入定义,直接解析你的浮点数数组,不会再要求base64编码。

方法2:将predict_fraud设为默认签名(可选)

如果你希望每次调用默认就使用这个签名,有两种方式:

  • 重新导出模型:在保存模型的时候,将predict_fraud设置为默认的服务签名(修改模型导出代码,指定signature_def_map中的默认项)。
  • 启动Serving时指定:启动TensorFlow Serving容器时,添加--model_name=payfraud --signature_def_name=predict_fraud参数,强制指定默认使用的签名。

另外补充一点:你之前尝试base64编码请求仍失败,大概率是因为即使编码了,serving_default签名的输入结构可能和你传入的格式不匹配(比如它可能期望单字符串输入,而你编码了数组结构),所以根本路径还是切换到正确的签名上。

内容的提问来源于stack exchange,提问作者H.Gruber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:13:39