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

加载pickle模型报错:No module named 'keras.saving.pickle_utils'求助

问题排查与解决方案

核心原因

Google Colab默认的TensorFlow版本通常比你本地的2.13.0更新,或是Colab中Keras的版本/导入结构和本地存在差异。keras.saving.pickle_utils模块在较新的TensorFlow集成Keras版本中可能已被重命名或迁移到tf.keras.saving.pickle_utils路径,但你的本地TF2.13.0中没有独立的keras模块路径(TF2.x中Keras是作为子模块集成的,而非独立包)。

另外,你的model.pkl大概率是在Colab环境下保存的,当时的环境允许直接导入keras.*,但本地TF2.13.0仅支持tf.keras.*的导入方式,导致加载pickle时找不到对应模块。

解决方案

方案1:调整本地环境的Keras导入路径兼容

在加载模型的代码前添加以下内容,将keras指向tf.keras:

import sys
import tensorflow as tf
sys.modules['keras'] = tf.keras

之后再加载model.pkl,这样pickle寻找keras.saving.pickle_utils时会自动映射到tf.keras.saving.pickle_utils。

方案2:统一本地与Colab的TensorFlow版本

在Colab中运行!pip show tensorflow查看当前使用的版本,然后在本地安装相同版本:

pip install tensorflow==<Colab中的版本号>

版本一致后,模块路径的差异会消除,模型加载即可正常运行。

方案3:重新保存模型(推荐)

避免用pickle保存Keras/TensorFlow模型,官方推荐使用model.save()保存为HDF5(.h5)或SavedModel格式,跨环境兼容性更好:

# 在Colab中重新保存模型
model.save('my_model.h5')  # 或 model.save('my_saved_model') 保存为SavedModel格式

本地加载时使用:

from tensorflow.keras.models import load_model
model = load_model('my_model.h5')  # SavedModel格式用 tf.keras.models.load_model('my_saved_model')

验证步骤

  1. 先尝试方案1,快速验证是否为路径映射问题;
  2. 若方案1无效,检查Colab和本地的TF版本差异,执行方案2;
  3. 长期来看优先使用方案3,遵循官方模型保存规范,避免此类兼容性问题。

内容的提问来源于stack exchange,提问作者Thành Trịnh Văn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:42:08