树莓派4加载Colab训练Keras模型报groups参数不识别TypeError
问题成因
- 模型配置不兼容:
groups是TensorFlow 2.x版本为卷积层新增的参数,用于实现分组卷积逻辑。在TensorFlow 2.6环境下训练导出的模型会自动带上这个参数配置,而树莓派上的TensorFlow 1.14版本的卷积层实现没有该参数定义,加载模型解析配置时就会抛出未知关键字参数的错误。 - 树莓派无法识别TensorFlow 2.x的核心原因:使用的大概率是32位版本的树莓派操作系统,官方从TensorFlow 2.x开始已经停止提供32位ARM架构的预编译安装包,直接通过pip安装默认只会拉取适配32位系统的最后一个版本1.14.0,和是否使用虚拟环境无关。
另外开头的Hadoop文件系统加载报错是无关警告,是TensorFlow 1.14编译时默认包含了Hadoop文件系统支持,本地没有对应依赖就会触发该提示,不影响模型的正常加载和运行,可以直接忽略。
可行解决方案
- 方案1:对齐训练侧和部署侧的框架版本
在Google Colab中把TensorFlow和Keras版本降级到和树莓派一致的1.14.0、2.2.4-tf,重新训练后导出模型,再放到树莓派上加载即可,该方案适配成本最低,没有额外兼容性问题,适合重新训练成本不高的场景。 - 方案2:树莓派侧安装适配的TensorFlow 2.x版本
更换树莓派操作系统为64位版本的Raspberry Pi OS,64位ARM架构有官方维护的TensorFlow 2.x预编译包,可以直接通过pip安装和训练侧一致的2.6.0版本,版本对齐后模型可以直接加载。如果不想更换系统,也可以下载社区预编译的32位ARM架构TensorFlow 2.x离线安装包,手动本地安装即可。 - 方案3:转换为TensorFlow Lite格式部署
将训练好的h5模型转换为TensorFlow Lite通用边缘部署格式,不需要对齐完整TensorFlow版本,资源占用也远低于完整版TensorFlow,非常适合树莓派这类边缘设备使用。转换代码如下:
# Google Colab侧执行模型转换 import tensorflow as tf model = tf.keras.models.load_model('lane_navigation_final.h5', compile=False) converter = tf.lite.TFLiteConverter.from_keras_model(model) tflite_model = converter.convert() with open('lane_navigation_final.tflite', 'wb') as f: f.write(tflite_model)
树莓派侧仅需要安装tflite-runtime包就可以加载运行转换后的模型。
内容的提问来源于stack exchange,提问作者Vico Lays
相关产品推荐
相关产品推荐

