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

Python3.9加载keras模型提示SavedModel文件不存在OSError报错

问题基本信息
  • 运行环境:Python 3.9.10
  • 触发场景:执行prediction.py第5行代码,调用keras.models.load_model接口加载相对路径model/CPN_Model.h5下的模型文件
  • 完整报错栈:
Traceback (most recent call last):
File "C:\Users\AbdiShakra\OneDrive\Documents\Diagnosticc-main\server.py", line 4, in 
import prediction
File "C:\Users\AbdiShakra\OneDrive\Documents\Diagnosticc-main\prediction.py", line 5, in 
model = keras.models.load_model("model/CPN_Model.h5")
File "C:\Users\AbdiShakra\AppData\Local\Programs\Python\Python39\lib\site-packages\keras\saving\save.py", line 205, in load_model
return saved_model_load.load(filepath, compile, options)
File "C:\Users\AbdiShakra\AppData\Local\Programs\Python\Python39\lib\site-packages\keras\saving\saved_model\load.py", line 108, in load
meta_graph_def = tf.__internal__.saved_model.parse_saved_model(path).meta_graphs[0]
File "C:\Users\AbdiShakra\AppData\Local\Programs\Python\Python39\lib\site-packages\tensorflow\python\saved_model\loader_impl.py", line 118, in parse_saved_model
raise IOError(
OSError: SavedModel file does not exist at: model/CPN_Model.h5\{saved_model.pbtxt|saved_model.pb}
  • 核心报错:抛出OSError,提示指定路径下不存在SavedModel格式要求的saved_model.pbtxt或saved_model.pb文件
常见产生原因
  • 相对路径解析错误:Python解析相对路径以执行命令时的工作目录为基准,而非prediction.py文件本身所在目录。如果执行启动命令时不在项目根目录Diagnosticc-main下,相对路径会拼接错误,指向不存在的位置。
  • 模型文件/结构异常:
    • 目标路径下根本没有CPN_Model.h5文件,或者文件是0KB损坏状态;
    • 误将SavedModel格式的模型文件夹命名为CPN_Model.h5,且文件夹内部缺失saved_model.pb/saved_model.pbtxt核心结构文件;
    • Keras自动识别格式时,误将h5单文件判定为SavedModel目录,触发目录结构校验。
  • 版本兼容问题:本地安装的TensorFlow/Keras版本远低于模型训练导出时的版本,加载时格式解析逻辑不匹配。
排查解决步骤
  1. 修正路径解析逻辑
    先在加载模型的代码前添加打印语句,确认实际解析的路径:
    import os
    print("当前工作目录:", os.getcwd())
    print("模型解析到的绝对路径:", os.path.abspath("model/CPN_Model.h5"))
    
    复制打印出的绝对路径到文件资源管理器中打开,确认是否能定位到目标文件。如果路径错位,直接改用基于脚本文件位置的绝对路径,彻底规避工作目录影响:
    import os
    # 获取当前prediction.py所在的目录
    script_dir = os.path.dirname(os.path.abspath(__file__))
    model_path = os.path.join(script_dir, "model", "CPN_Model.h5")
    model = keras.models.load_model(model_path)
    
  2. 校验模型文件完整性
    • 定位到模型所在目录,确认CPN_Model.h5是大小正常的单个文件(通常模型文件大小在数MB到数百MB区间,不是空文件),而非同名文件夹。
    • 如果CPN_Model.h5是文件夹,进入文件夹检查是否存在saved_model.pb文件:存在则去掉路径后缀.h5,直接加载该文件夹;不存在则说明模型文件拷贝不全,重新从训练导出的源位置完整复制模型。
  3. 处理版本兼容问题
    执行代码打印本地版本:
    import tensorflow as tf
    import keras
    print(tf.__version__, keras.__version__)
    
    如果本地版本比模型训练时用的版本低2个以上次版本(比如训练用2.10.x,本地装2.4.x),先升级对应依赖再尝试加载:
    pip install --upgrade tensorflow keras
    
  4. 显式指定加载格式
    确认是完好的h5格式文件的前提下,加载时显式声明格式,避免自动识别错误:
    model = keras.models.load_model(model_path, save_format="h5")
    

内容的提问来源于stack exchange,提问作者abdishakur abdi said

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:54:21