Keras 2.4环境下升级加载TensorFlow 2模型的路径报错问题
TF2 SavedModel 加载问题排查及解决方案
- API 兼容性问题
你原代码使用的是独立Keras 2.4的keras.models.load_model接口,该接口不兼容TensorFlow 2原生导出的SavedModel格式,必须使用TF2内置的tf.keras.models.load_model接口加载。 - Windows 路径转义问题
你报错找不到已存在的目录,90%以上概率是Python字符串转义导致:Windows路径中的反斜杠\会被Python识别为转义字符,比如\n会被识别为换行,而非路径的一部分。 - 错误指向单个.pb文件
SavedModel格式是完整目录结构,包含saved_model.pb(计算图)、variables(权重参数)、assets(资源文件)三部分,单独加载.pb文件会缺失权重等核心信息,加载失败是预期行为。
正确操作步骤
- 替换导入接口,使用TensorFlow内置的keras模块
- 路径声明为原始字符串(开头加
r),避免转义问题 - 直接传入SavedModel的根目录路径加载
对应代码示例:
import tensorflow as tf # 路径开头加r声明为原始字符串,避免反斜杠转义 saved_model_dir = r"C:\Users\722208\Desktop\Models\WPC_Ox_TF2_112421_Segnet_1_serving_model" # 直接传入根目录路径加载模型 model = tf.keras.models.load_model(saved_model_dir)
异常场景排查
如果按上述操作还是加载失败,检查以下问题:
- 确认导出和加载使用的TensorFlow大版本一致,高版本TF导出的模型无法被低版本TF正常加载
- 确认当前Python进程对目标目录有读取权限,桌面路径在部分Windows权限策略下会限制程序访问
- 如果模型包含自定义层、自定义损失函数,加载时需要传入
custom_objects参数指定对应的自定义对象,示例:
model = tf.keras.models.load_model(saved_model_dir, custom_objects={"MyCustomLayer": MyCustomLayer, "my_loss": my_loss})
内容的提问来源于stack exchange,提问作者James Delles
相关产品推荐
相关产品推荐

