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

Uvicorn运行FastAPI图像分类服务报cannot convert dictionary update sequence错误

问题根因

报错和Uvicorn无关,是FastAPI序列化响应阶段触发的错误:你接口返回的score是TensorFlow的张量或Numpy数组类型,FastAPI默认的JSON编码器不支持这类非Python原生数据类型,因此序列化失败。

修复方法

仅需要修改接口返回逻辑,将score转换为支持JSON序列化的Python原生类型即可:
把原代码中最后一行返回逻辑

return score

修改为

return score.tolist()

如果你的分类结果是单值,也可以用return float(score)返回单个数值。

可选优化

你当前代码中保存临时文件的步骤可以省略,直接读取上传的文件对象即可,减少不必要的IO开销,修改后的图片读取逻辑参考:

@app.post('/api/predict')
async def predict_image(file: UploadFile = File(...)):
    # 直接读取上传文件内容
    content = await file.read()
    img = keras.preprocessing.image.load_img(
        BytesIO(content), target_size=input_shape
    )
    img_array = image.img_to_array(img)
    img_array = tf.expand_dims(img_array, 0)
    predictions = model.predict(img_array)
    score = predictions[0]
    return score.tolist()

这样就不需要处理临时文件的创建和删除逻辑,也避免了临时文件清理不彻底的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:06:01