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

关于SavedModel用途及Keras格式重载的技术求助

关于SavedModel加载为Keras模型的解决方案

SavedModel是TensorFlow的通用模型格式,完全支持以Keras格式重新加载,并非仅适用于前端应用。针对你遇到的加载后无法使用、tf.keras.models.load_model报错的问题,可按以下步骤排查解决:

一、错误原因及对应解决方法

1. 模型并非由Keras API直接构建

如果你的模型是通过TensorFlow低级API(而非tf.keras.Model子类或Sequential)构建,直接用tf.keras.models.load_model会报错。可通过以下步骤转换为Keras模型:

import tensorflow as tf

# 加载SavedModel对象
saved_model = tf.saved_model.load("你的模型目录路径")
# 获取默认推理签名
infer_signature = saved_model.signatures["serving_default"]
# 基于签名的输入输出构建Keras模型
keras_model = tf.keras.Model(inputs=infer_signature.inputs, outputs=infer_signature.outputs)

转换完成后,即可正常使用keras_model.predict()、继续训练(若模型保留了训练相关参数)。

2. 路径或模型文件问题

  • 确认传入tf.keras.models.load_model的是SavedModel的根目录(目录下需包含variables文件夹和saved_model.pb文件),而非单个文件。
  • 检查模型文件是否损坏:如果SavedModel目录结构不完整,需确认原保存过程无异常,若有备份可尝试恢复。

3. TensorFlow版本不兼容

保存模型的TensorFlow版本与当前加载版本差异过大(比如用TF 1.x保存、TF 2.x加载)会导致兼容性问题。建议使用与保存时相同或次新版本的TensorFlow进行加载。

二、验证加载后的模型

加载/转换完成后,可通过以下方式验证模型可用性:

  • 打印模型结构:print(keras_model.summary())
  • 用测试输入验证推理:
# 假设模型输入形状为(None, 224, 224, 3)
test_input = tf.random.normal((1, 224, 224, 3))
predict_result = keras_model.predict(test_input)
print(predict_result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:30:55