TensorFlow加载SavedModel提示文件不存在但对应目录文件齐全问题
报错原因
- 工作目录不匹配:你使用的是相对路径加载模型,相对路径的基准是当前运行脚本的工作目录,而非模型保存脚本的运行目录。两个脚本运行时的工作目录不一致,会导致拼接出的模型实际路径和预期不符,TensorFlow找不到对应文件。
- 路径空格解析异常:模型路径中存在空格(
AAPL saved model中间的空格),部分系统、编码环境下可能出现路径解析错误,导致TensorFlow无法正确定位文件。 - 版本不兼容:保存模型和加载模型所用的TensorFlow大版本差异过大,低版本TensorFlow无法识别高版本生成的SavedModel格式文件。
- 权限不足:运行加载脚本的用户没有模型目录及内部文件的可读权限,导致TensorFlow无法读取模型文件。
解决方法
- 优先使用绝对路径加载模型
首先在加载脚本中执行以下代码确认当前工作目录:
import os print(os.getcwd())
确认工作目录和模型路径的相对关系后,优先改用绝对路径加载,或者通过项目根目录拼接生成可靠路径:
# 示例:提前定义项目根目录 PROJECT_ROOT = "/your/project/root/path" model_path = os.path.join(PROJECT_ROOT, "static/mysite/saved_model_weights/AAPL saved model") loaded_model = load_model(model_path)
- 移除路径中的空格
修改模型保存逻辑,将路径中的空格替换为下划线等安全字符,避免路径解析问题:
# 保存时修改命名规则 model.save('static/mysite/saved_model_weights/' + symbols[i] + '_saved_model') # 加载时对应修改路径 loaded_model = load_model('static/mysite/saved_model_weights/AAPL_saved_model')
- 对齐TensorFlow版本
确保保存模型、加载模型两个环境的TensorFlow大版本一致,避免跨版本兼容问题。 - 检查文件权限
确认运行加载脚本的用户对模型目录、目录内所有文件都有可读权限,Linux环境下可通过chmod -R 644 static/mysite/saved_model_weights/授予可读权限。
内容的提问来源于stack exchange,提问作者Mason Choi
相关产品推荐
相关产品推荐

