在PyCharm中运行Teachable Machines目标识别器时遇报错
解决Teachable Machines模型加载时报错:Unrecognized keyword arguments passed to DepthwiseConv2D: {'groups': 1}
问题场景
在Windows系统的PyCharm中运行从Teachable Machines复制的目标识别脚本,脚本需加载本地keras_Model.h5模型与labels.txt标签文件,实现图片目标识别并输出结果。已安装TensorFlow、NumPy、Pillow、Keras等依赖,但加载模型时触发如下错误:
ValueError: Unrecognized keyword arguments passed to DepthwiseConv2D: {'groups': 1}
报错原因
Teachable Machines导出的.h5模型基于旧版Keras/TensorFlow构建,其中DepthwiseConv2D层包含groups参数;而新版Keras(尤其是Keras 3.x)重构了卷积层实现,DepthwiseConv2D不再支持groups参数,导致模型反序列化失败。
解决方案
方案1:降级到兼容的TensorFlow/Keras版本
卸载当前版本,安装与模型兼容的旧版本(推荐TensorFlow 2.15.x,对应Keras 2.15.x):
pip uninstall keras tensorflow -y pip install tensorflow==2.15.0
注:TensorFlow 2.x会自带对应版本的Keras,无需单独安装Keras包。
方案2:自定义模型加载逻辑过滤无效参数
若不想降级,可自定义DepthwiseConv2D类,加载时自动移除不支持的groups参数:
修改原脚本中的模型加载部分为以下代码,其余代码保持不变:
from keras.models import load_model from keras.layers import DepthwiseConv2D # 自定义DepthwiseConv2D,过滤groups参数 class CustomDepthwiseConv2D(DepthwiseConv2D): def __init__(self, **kwargs): kwargs.pop('groups', None) super().__init__(**kwargs) # 加载模型时指定自定义类 model = load_model("keras_Model.h5", compile=False, custom_objects={'DepthwiseConv2D': CustomDepthwiseConv2D})
方案3:重新导出兼容的模型格式
若条件允许,重新访问Teachable Machines,选择导出TensorFlow SavedModel格式(而非.h5),然后使用TensorFlow原生API加载:
import tensorflow as tf # 加载SavedModel模型 model = tf.saved_model.load("你的SavedModel文件夹路径") # 预测逻辑需调整为SavedModel的调用方式,示例: infer = model.signatures["serving_default"] prediction = infer(tf.convert_to_tensor(data))
验证
修改完成后,替换脚本中的<IMAGE_PATH>为实际图片路径,运行脚本即可正常加载模型并输出识别类别与置信度。
内容的提问来源于stack exchange,提问作者Oliver Schneck
相关产品推荐
相关产品推荐

