加载Keras模型遇ModuleNotFoundError: No module named 'keras.src'求助
解决Keras模型加载时的
keras.src模块找不到问题 问题原因
出现ModuleNotFoundError: No module named 'keras.src'的核心原因是模型保存时的Keras/TensorFlow版本与当前运行环境的版本不兼容。新版本Keras(如3.x系列)重构了内部模块结构,旧版本保存的模型在加载时会引用已不存在的旧路径,从而触发该错误。此外,直接用pickle加载Keras模型本身就不是官方推荐的方式,容易引发版本兼容问题。
解决方案
1. 对齐Keras/TensorFlow版本
安装与模型保存时完全一致的Keras或TensorFlow版本:
- 若使用独立Keras:
pip install keras==2.15.0 # 替换为你保存模型时的版本号 - 若使用TensorFlow内置的Keras:
pip install tensorflow==2.15.0 # 替换为对应版本
2. 使用Keras官方加载方法
Keras提供了专门的load_model方法,不要用pickle直接加载:
from keras.models import load_model # 直接传入模型文件路径,无需手动打开文件 model = load_model('tomato_model.pkl')
注意:如果模型是用
pickle保存的,说明保存方式有误。正确保存Keras模型应该用:# Keras 2.x推荐格式 model.save('tomato_model.h5') # Keras 3.x推荐格式 model.save('tomato_model.keras')
3. 临时修复模块路径(不推荐,仅应急)
如果无法更换版本,可以手动映射模块路径:
import sys import pickle from keras import src as keras_src # 把keras.src映射到当前的keras.src模块 sys.modules['keras.src'] = keras_src # 再加载模型 with open('tomato_model.pkl', 'rb') as model_file: model = pickle.load(model_file)
内容的提问来源于stack exchange,提问作者SADIQ
相关产品推荐
相关产品推荐

