Keras 3.6+TensorFlow 2.18下load_model引用错误及模型加载失败求助
问题解决:Keras加载Teachable Machine模型时的导入与参数兼容错误
问题核心
你遇到的两个问题本质是Keras版本兼容性:
Unresolved reference 'load_model':Keras 3的API路径与旧版存在差异Unrecognized keyword arguments passed to DepthwiseConv2D: {'groups': 1}:Teachable Machine导出的模型基于旧版TensorFlow捆绑Keras保存,而Keras 3已移除DepthwiseConv2D的groups参数
解决方案
方案1:使用TensorFlow内置的Keras(推荐)
Teachable Machine导出的模型原生适配TensorFlow内置的Keras,无需单独安装独立版Keras,步骤如下:
- 卸载独立安装的Keras 3:
pip uninstall keras -y
- 修改导入语句为TensorFlow内置Keras的路径:
from tensorflow.keras.models import load_model # 替换原有的from keras.models import load_model from PIL import Image, ImageOps import numpy as np
- 移除代码中重复的导入块(你的代码里重复导入了两次
load_model、PIL和numpy,需删掉其中一组)
方案2:自定义模型加载逻辑(进阶)
若坚持使用Keras 3,可通过自定义对象处理groups参数的兼容问题:
from keras.models import load_model from keras.layers import DepthwiseConv2D from PIL import Image, ImageOps import numpy as np # 自定义兼容旧版参数的DepthwiseConv2D class CompatDepthwiseConv2D(DepthwiseConv2D): def __init__(self, groups=None, **kwargs): # 忽略groups参数,适配Keras 3的API super().__init__(**kwargs) # 加载模型时指定自定义对象 model = load_model("keras_Model.h5", compile=False, custom_objects={"DepthwiseConv2D": CompatDepthwiseConv2D})
验证修改
完成修改后,替换代码中的<IMAGE_PATH>为实际图片路径,运行代码即可正常加载模型并执行预测。
内容的提问来源于stack exchange,提问作者Duy Nguyen Thanh
相关产品推荐
相关产品推荐

