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

Streamlit应用依赖报错,加载pickle存储的Keras模型运行失败求助

报错原因分析
  • Keras模型序列化方式错误:pickle会完整记录模型类的导入路径、内部依赖对象的结构,而Keras/TensorFlow的模型层、计算图对象本身不兼容pickle序列化规范,无法保证跨环境/跨版本加载的可用性,是这类报错的核心诱因。
  • 依赖版本不匹配:训练模型时使用的Keras、TensorFlow版本和当前运行环境的版本不一致,导致pickle加载时无法找到对应路径的类定义,你遇到的No module named 'keras.engine.sequential'报错就是典型的版本差异导致的类路径变更问题。
  • 运行环境依赖冲突:当前Anaconda环境未正确安装对应版本的Keras/TensorFlow,或者同时安装了独立Keras包和TensorFlow内置的tf.keras,导致导入路径冲突。
解决方案
  1. 改用Keras官方序列化方案(优先推荐)
    完全替换pickle的存储逻辑,使用Keras原生的模型保存加载接口,规避序列化兼容问题:
  • 训练阶段保存模型:
# Keras 3.x 推荐使用原生.keras格式
model.save('model_pose.keras')
# 旧版本Keras/TensorFlow可使用.h5格式
# model.save('model_pose.h5')
  • 应用阶段加载模型:
model = keras.models.load_model(os.path.join(ruta_to_model, 'model_pose.keras'))
  1. 对齐运行环境版本
    如果确实需要保留pickle序列化的模型,需要保证运行环境和训练环境的依赖完全一致:
  • 在训练模型的环境中执行pip freeze > requirements.txt导出依赖清单
  • 在当前运行Streamlit的Anaconda环境中执行pip install -r requirements.txt安装完全匹配的依赖版本,避免类路径变更问题。
  1. 修复依赖冲突
    如果同时安装了独立Keras包和TensorFlow,建议统一使用TensorFlow内置的Keras接口,代码中所有导入keras的语句统一替换为from tensorflow import keras,保证导入路径一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:18:04