使用segmentation_models报keras.utils无get_file属性错误如何解决
问题解决方案
报错核心原因
该报错的核心原因是segmentation_models依赖的classification_models库长期未更新,默认调用的独立Keras包接口与当前环境的Keras/TensorFlow版本不匹配,keras.utils.get_file接口在高版本独立Keras中被移除/迁移,而库默认没有适配TensorFlow内置的Keras接口。
解决方案1(优先使用,无需修改依赖包源码)
在导入segmentation_models的代码行之前,添加环境变量指定框架为TensorFlow内置Keras:
import os os.environ["SM_FRAMEWORK"] = "tf.keras" # 注意必须在导入segmentation_models之前设置上面的环境变量 import segmentation_models as sm
修改后重新执行代码即可,库会自动调用tf.keras.utils.get_file接口,该接口在所有TensorFlow 2.x版本中都存在。
解决方案2(手动补丁修复)
如果方案1不生效,可以直接修改库的源码适配:
- 打开报错路径下的文件:
C:\Users\Giulia\PycharmProjects\multiclass_new\venv\lib\site-packages\classification_models\weights.py - 将文件开头的
import keras.utils as keras_utils替换为:
import tensorflow.keras.utils as keras_utils
保存后重新运行代码即可。
解决方案3(版本回退)
如果不想修改代码,可以将对应依赖回退到适配版本:
- 卸载当前的keras、tensorflow
- 安装适配版本:
pip install tensorflow==2.9.0 keras==2.9.0
版本匹配后即可正常运行。
内容的提问来源于stack exchange,提问作者giulia
相关产品推荐
相关产品推荐

