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

加载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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:22:39