TensorFlow2.5.0导入keras与segmentation_models报AttributeError求助
问题根因
报错的核心原因是环境中依赖版本不兼容:
- TensorFlow 2.5.0 内置的
tf.keras版本为 2.5.x,而你单独安装的独立 Keras 版本为 2.3.1,二者接口不匹配 segmentation-models 1.0.1默认调用独立 Keras 的旧接口,populate_dict_with_module_objects是高版本 Keras 才有的方法,在 2.3.1 版本中不存在
可行解决方案
提供两种可落地的方案,二选一即可:
方案1:适配现有TensorFlow 2.5.0环境(无需降级TF,推荐)
- 先卸载不兼容的独立低版本Keras
pip uninstall keras -y
- 调整导入代码,在导入
segmentation_models之前先指定其使用的框架为TF内置的tf.keras,同时将所有Keras相关导入替换为tf.keras下的模块,修改后完整导入代码如下:
import tensorflow as tf import glob import cv2 import os import numpy as np from matplotlib import pyplot as plt # 必须在导入segmentation_models之前设置环境变量 os.environ['SM_FRAMEWORK'] = 'tf.keras' import segmentation_models as sm from tensorflow.keras.utils import normalize from tensorflow.keras.metrics import MeanIoU
方案2:使用兼容的旧版本组合
如果你的业务代码必须依赖独立Keras,可以统一降级到匹配的版本组合:
- 先卸载冲突的依赖包
pip uninstall tensorflow tensorflow-gpu keras segmentation-models efficientnet image-classifiers -y
- 安装经过验证的兼容版本
pip install tensorflow==2.1.0 pip install keras==2.3.1 pip install segmentation-models==1.0.1
你当前环境的numpy版本为1.19.5,刚好符合该版本组合的要求,无需额外调整。
验证
修改完成后重启Python内核,重新运行导入代码即可解决报错。
内容的提问来源于stack exchange,提问作者DevanDev
相关产品推荐
相关产品推荐

