You need to enable JavaScript to run this app. Keras load_model在Colab可正常加载 本地Jupyter/VSCode加载失败
优惠活动
大模型
产品
解决方案
定价
更多

Keras load_model在Colab可正常加载 本地Jupyter/VSCode加载失败

问题根因

你遇到的报错本质是本地环境的Keras加载器在读取路径时,错误将SavedModel格式的目录识别为HDF5格式的单文件,尝试以二进制文件方式打开目录触发系统级错误。
Colab环境无异常的核心原因是Colab默认使用TensorFlow绑定的tf.keras作为Keras实现,格式识别逻辑对SavedModel目录做了兼容;而本地环境大概率使用了独立发行的Keras包,或者Keras自动格式识别逻辑失效。

解决方法

  1. 统一Keras导入来源
    将代码中所有Keras相关的导入语句全部替换为TensorFlow内置的Keras实现,避免独立Keras包的兼容问题:
# 替换原有的 import keras 或 from keras import xxx
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam
  1. 加载时显式指定格式
    调用load_model时显式传入save_format="tf"参数,强制加载器按照SavedModel格式处理路径,跳过自动格式识别的易出错环节:
loaded_model = keras.models.load_model(save_path, save_format="tf")
  1. 关于tf.saved_model.load的兼容问题补充
    tf.saved_model.load是TensorFlow底层的SavedModel加载接口,返回的是原生TensorFlow计算图实例,本身就不支持Keras模型的predict()、fit()等上层方法,不属于异常。如果需要使用该接口加载后调用Keras方法,可以手动封装为Keras模型对象:
loaded_saved_model = tf.saved_model.load(save_path)
loaded_model = keras.models.Model(
    inputs=loaded_saved_model.signatures["serving_default"].inputs,
    outputs=loaded_saved_model.signatures["serving_default"].outputs
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:36:02