运行Matterport Mask RCNN导入Keras报错兼容性问题咨询
问题根因
你当前遇到的报错本质是版本匹配冲突:
- Matterport/Mask_RCNN官方适配环境为TensorFlow 1.3+、Keras 2.0.8~2.2.4,和你安装的TensorFlow 2.5.0版本完全不兼容
- 环境内同时存在两个冲突的Keras版本(2.2.5正式版 + 2.5.0开发版),独立Keras包尝试调用TensorFlow 2.5内部不存在的属性触发报错
解决方案
方案1:降级依赖到官方适配版本(推荐,改动最小)
适用于可以调整环境版本的场景,无需修改项目源码:
- 先卸载所有冲突的相关包:
pip uninstall -y keras keras-nightly tensorflow tensorflow-estimator tensorboard h5py - 安装官方匹配的依赖版本(注意需要Python 3.6~3.7版本支持TensorFlow 1.x):
pip install tensorflow==1.15.0 keras==2.2.4 h5py==2.10.0 - 验证安装是否正常:
import keras print(keras.__version__)
输出2.2.4即为配置成功。
方案2:适配TensorFlow 2.x环境
适用于无法降级环境的场景,需要少量修改项目源码:
- 先卸载冲突的独立Keras包:
pip uninstall -y keras keras-nightly - 修改Mask_RCNN所有源码文件中的导入语句:把所有
import keras替换为import tensorflow.keras as keras,所有Keras子模块导入(如from keras.layers import *)同步替换为from tensorflow.keras.layers import *格式 - 在你自己的业务代码开头添加兼容配置:
import tensorflow as tf tf.compat.v1.disable_eager_execution()
- 同步修改源码中所有TensorFlow 1.x专属API调用:比如把
tf.placeholder替换为tf.compat.v1.placeholder,其余TF1专属API统一添加tf.compat.v1前缀即可。
内容的提问来源于stack exchange,提问作者Hamza
相关产品推荐
相关产品推荐

