导入segmentation_models报错求助:ModuleNotFoundError与ImportError问题
问题原因及解决方案
问题根源
- TensorFlow 2.12+版本中,官方将Keras拆分为独立库,你同时安装了独立Keras 2.12.0和TensorFlow 2.12.0,两者的Keras实现相互独立。而
segmentation_models的默认版本依赖TensorFlow集成的tensorflow.keras,而非独立Keras,因此触发ModuleNotFoundError: No module named 'tensorflow.keras'。 - 第二个错误
ImportError: cannot import name 'optimizer' from 'keras.optimizers',是因为segmentation_models旧版本的代码导入逻辑和独立Keras 2.x的结构不匹配——Keras 2.x中不存在keras.optimizers.optimizer这个对象,正确的导入路径应为具体优化器(如Adam)或keras.optimizers.legacy模块。
解决方法
方法一:使用TensorFlow自带的tf.keras(推荐)
卸载独立安装的Keras,因为TensorFlow 2.x本身已经集成了完整的Keras功能,无需单独安装:
pip uninstall keras -y
完成后重新尝试导入segmentation_models即可,此时环境中只有TensorFlow的tensorflow.keras,库的导入逻辑可正常运行。
方法二:安装适配独立Keras的分支版本
如果必须保留独立Keras,可安装segmentation_models专门适配独立Keras的分支:
pip install git+https://github.com/qubvel/segmentation_models.git@keras
该分支调整了导入路径,适配独立Keras的结构,可解决两个报错问题。
内容的提问来源于stack exchange,提问作者Rayhan Nuansa
相关产品推荐
相关产品推荐

