使用EfficientNet遇AttributeError: keras.utils无get_file属性如何解决
AttributeError: module 'keras.utils' has no attribute 'get_file' 报错解决方案
报错原因
该错误由Keras版本迭代导致API位置变更引发:TensorFlow 2.10+及独立Keras 2.10+版本中,get_file接口已从keras.utils模块迁移至其他子模块,旧代码/旧依赖直接调用原路径就会触发该报错。
报错参考截图


解决步骤
方案1:调整导入路径(无需改动环境,最快生效)
把原有调用keras.utils.get_file的代码替换为对应版本的正确导入路径:
- 若使用独立Keras包:
# 替换原有导入语句 from keras.utils.data_utils import get_file
- 若使用TensorFlow内置的tf.keras:
from tensorflow.keras.utils import get_file
方案2:修复segmentation-models兼容问题
你已安装的segmentation-models默认适配旧版Keras,需要安装适配新版本的分支并配置环境变量:
- 执行命令安装最新版分支:
pip install git+https://github.com/qubvel/segmentation_models.git@master - 在代码开头导入segmentation_models前添加环境变量配置:
import os os.environ['SM_FRAMEWORK'] = 'tf.keras' import segmentation_models as sm
方案3:版本回退(适配老项目无代码修改需求)
直接安装API匹配的版本组合即可:pip install keras==2.9.0 tensorflow==2.9.0
注意事项
不要直接导入tensorflow.python目录下的模块,该目录下为TensorFlow内部私有API,无版本兼容性保障,版本更新时会随意调整路径和逻辑,正式代码禁止使用该类导入方式。
内容的提问来源于stack exchange,提问作者A_galaxy
相关产品推荐
相关产品推荐

