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

部署Keras+Flask模型遇OSError:SavedModel文件不存在的解决求助

解决Keras模型加载时的OSError: SavedModel文件不存在问题

看起来你在跟着Jeff Heaton教授的T81-558《深度神经网络应用》课程部署Flask+Keras表格模型时,碰到了这个让人挠头的文件找不到错误。我来帮你拆解问题根源,一步步解决:

错误原因分析

这个报错OSError: SavedModel file does not exist at: ../dnn/mpg_model.h5/{saved_model.pbtxt|saved_model.pb}的核心问题是:TensorFlow的load_model函数把你的.h5单文件模型当成了SavedModel格式的文件夹来处理。

Keras/TensorFlow有两种主流的模型保存格式:

  • .h5:Keras传统单文件格式,保存后是一个独立的.h5文件,加载时需指向该文件。
  • SavedModel:TensorFlow标准多文件格式,保存后生成一个文件夹,内含saved_model.pb和变量目录,加载时需指向该文件夹路径。

分步解决方案

1. 先确认模型文件路径是否正确

你用的相对路径../dnn/mpg_model.h5是基于当前运行脚本的目录计算的:

  • 从你的命令行输出看,你是在C:\Users\ASUS\t81_558_deep_learning\py目录下运行python mpg_server_1.py,那么../dnn/对应的实际路径是C:\Users\ASUS\t81_558_deep_learning\dnn。
  • 先手动检查这个路径下是否真的存在mpg_model.h5文件,文件名和后缀有没有拼写错误。
  • 可以先用绝对路径测试,排除相对路径的干扰:
    model = load_model("C:/Users/ASUS/t81_558_deep_learning/dnn/mpg_model.h5")
    
    如果绝对路径能加载成功,说明之前的相对路径逻辑不符合你的实际目录结构,调整相对路径即可。

2. 确保模型保存格式与加载方式匹配

如果路径没问题,那大概率是保存和加载的格式不匹配:

  • 如果你当初是用model.save('mpg_model.h5')保存的单文件模型:
    • 检查你的TensorFlow版本是否和保存模型时的版本兼容(比如避免用TF2.x加载TF1.x保存的老模型,或反之)。
    • 尝试在Python交互环境单独加载模型,验证文件完整性:
      from tensorflow.keras.models import load_model
      model = load_model("../dnn/mpg_model.h5")  # 使用和脚本相同的路径
      
  • 如果你当初是用SavedModel格式保存的(比如调用model.save('mpg_model'),没有.h5后缀,生成一个文件夹):
    • 把加载代码里的路径改成指向这个文件夹,去掉.h5后缀:
      model = load_model(os.path.join("../dnn/","mpg_model"))
      

3. 检查文件完整性与权限

  • 如果单独加载模型也报错,说明mpg_model.h5可能损坏,需要重新训练并保存模型。
  • Windows环境下权限问题较少,但可以确认文件没有被其他程序锁定(比如之前的Jupyter进程还在占用模型文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:52:58