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

tf.keras.models.load_model加载旧模型失败,求兼容解决方法

Keras 3加载旧版SavedModel模型的兼容解决方案

问题背景

通过tf.keras.models.save_model()保存的TensorFlow SavedModel格式模型,在Keras 3环境中使用tf.keras.models.load_model()加载时触发格式不兼容报错:

保存与加载代码:

# 模型保存代码
tf.keras.models.save_model(file_path)
# 加载代码(触发报错)
model_a = tf.keras.models.load_model(file_path)

报错信息:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-120117fe47ab> in <cell line: 3>()
      1 #@title Load the checkpoint
      2 checkpoint_path = '/drive/MyDrive/dummy/2' # @param {type:"string"}
----> 3 model_a = tf.keras.models.load_model(checkpoint_path)
      4 tf.keras.utils.plot_model(ad._model, show_shapes = True)

/usr/local/lib/python3.10/dist-packages/keras/src/saving/saving_api.py in load_model(filepath, custom_objects, compile, safe_mode)
    197         )
    198     else:
--> 199         raise ValueError(
    200             f"File format not supported: filepath={filepath}. "
    201             "Keras 3 only supports V3 `.keras` files and "

ValueError: File format not supported: filepath=/drive/MyDrive/dummy/2. Keras 3仅支持V3 `.keras`文件和旧版H5格式文件(`.h5`扩展名)。注意:Keras 3的`load_model()`不支持旧版SavedModel格式。若要在Keras 3中重新加载TensorFlow SavedModel作为仅推理层,请使用`keras.layers.TFSMLayer(/drive/MyDrive/dummy/2, call_endpoint='serving_default')`(注意你的`call_endpoint`名称可能不同)。

解决方案(无需重新训练模型)

方案1:加载为仅推理层(适用于仅预测场景)

如果只需要使用模型进行推理预测,直接使用Keras.layers.TFSMLayer加载模型:

from keras.layers import TFSMLayer

# 加载SavedModel为推理层,call_endpoint需根据实际模型签名调整
inference_layer = TFSMLayer('/drive/MyDrive/dummy/2', call_endpoint='serving_default')

# 推理使用示例
# input_data = ... # 符合模型输入格式的数据
# predictions = inference_layer(input_data)

确认正确的call_endpoint:
若不确定模型的签名名称,可通过以下代码查看:

import tensorflow as tf

saved_model = tf.saved_model.load('/drive/MyDrive/dummy/2')
print("可用签名名称:", list(saved_model.signatures.keys()))

方案2:转换为Keras 3支持的格式(保留完整模型功能)

如果需要模型的完整功能(如继续训练、修改网络结构),可通过TensorFlow 2.x(Keras 2)环境将旧模型转换为.keras或.h5格式:

  1. 在TensorFlow 2.x环境中执行转换:
import tensorflow as tf

# 加载旧版SavedModel
old_model = tf.keras.models.load_model('/drive/MyDrive/dummy/2')
# 保存为Keras 3兼容的.keras格式(推荐)
old_model.save('/drive/MyDrive/dummy/2_converted.keras')
# 或保存为H5格式
# old_model.save('/drive/MyDrive/dummy/2_converted.h5')
  1. 回到Keras 3环境,加载转换后的模型:
model_a = tf.keras.models.load_model('/drive/MyDrive/dummy/2_converted.keras')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:15:53