Keras 3中如何加载SavedModel格式模型并进行评估?
解决方案:在Keras 3中加载SavedModel并进行评估
针对你遇到的问题,以下是几种可行的解决方法:
1. 使用Keras 3原生加载函数加载SavedModel
Keras 3中,keras.saving.load_model()是统一的模型加载入口,支持直接加载SavedModel格式。替换原来的tf.keras.models.load_model()即可:
import keras # 加载SavedModel格式模型 model = keras.saving.load_model("path/to/your/saved_model", save_format="tf") # 现在可以正常调用evaluate/predict model.evaluate(test_data) predictions = model.predict(test_data)
说明:TensorFlow 2.17绑定的Keras 3中,tf.keras.models.load_model()默认优先识别.keras(Keras 3原生格式)和.h5文件,而SavedModel格式需要通过Keras原生的加载函数处理。
2. 转换纯TensorFlow SavedModel为Keras对象
如果你的模型是通过tf.saved_model.save()而非Keras的model.save()保存的,加载后得到的是TensorFlow SavedModel对象,需要手动转换为Keras模型:
import tensorflow as tf import keras # 加载SavedModel saved_model = tf.saved_model.load("path/to/your/saved_model") # 获取默认服务签名 inference_fn = saved_model.signatures["serving_default"] # 从签名中提取输入输出,构建Keras模型 keras_model = keras.Model(inputs=inference_fn.inputs, outputs=inference_fn.outputs) # 执行评估或预测 keras_model.evaluate(test_dataset)
说明:这种方式适用于非Keras导出的SavedModel,通过提取模型的输入输出张量,重新封装为Keras模型实例,从而支持Keras的标准方法。
3. 确认模型保存方式
如果是用Keras模型保存的SavedModel,确保保存时使用的是:
# Keras模型保存为SavedModel格式 model.save("path/to/save", save_format="tf")
这样保存的模型可以直接用keras.saving.load_model()加载,无需额外转换。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

