You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用keras_segmentation的resnet50_segnet时报错keras.utils无get_file属性如何解决

报错原因

AttributeError: module 'keras.utils' has no attribute 'get_file' 由版本不兼容导致:你当前使用的Keras版本过高,第三方库keras_segmentation长期未维护,仍在调用仅旧版Keras提供的keras.utils.get_file接口,该接口在新版Keras中已被迁移或移除。

可行解决方案

按操作成本从低到高排序:

  • 方案1:降级依赖版本(最快生效)
    直接安装和keras_segmentation兼容的Keras、TensorFlow版本,执行命令:
pip install keras==2.4.3 tensorflow==2.4.1

安装完成后重新运行原有代码即可。

  • 方案2:修改库源码适配新版本
    如果不想改动现有环境的TensorFlow、Keras版本,可直接修改库文件逻辑:
  1. 打开报错指向的文件:~/anaconda3/envs/py38/lib/python3.8/site-packages/keras_segmentation/models/resnet50.py
  2. 两种修改方式二选一:
    • 把文件头部的import keras替换为import tensorflow.keras as keras
    • 或者定位到第180行,把keras.utils.get_file修改为tf.keras.utils.get_file,并在文件头部新增一行import tensorflow as tf
  3. 保存文件后重新运行代码即可。
  • 方案3:关闭预训练权重加载
    如果不需要使用ImageNet预训练权重,可在初始化模型时指定不加载预训练权重,绕过接口调用逻辑:
model = resnet50_segnet(n_classes=2, input_height=1440, input_width=1088, pretrained=None)

该方案无需修改环境或源码,缺点是模型没有预训练权重,需要从零开始训练,训练成本更高。

内容的提问来源于stack exchange,提问作者Fatimah Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:54:02