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

Linux下调用bagnet33报keras.utils无get_file属性问题

问题原因

运行bagnet_model = bagnets.kerasnet.bagnet33()初始化BagNet模型时抛出如下报错:

'keras.utils' has no attribute 'get_file'

该报错和你之前调整segmentation_models运行框架的操作没有关系——sm.set_framework()仅对segmentation_models库自身的导入逻辑生效,BagNet库不会读取该配置,所以修改后不会影响BagNet的运行。
报错核心是BagNet的Keras实现基于Keras 2.x编写,和你当前环境的Keras版本/导入路径不匹配,常见触发场景:

  • TensorFlow 2.16及以上版本默认绑定Keras 3.x,Keras 3对部分API的路径做了调整,老代码直接调用keras.utils.get_file会找不到属性
  • BagNet默认导入独立安装的Keras包,如果你环境里仅安装了TensorFlow内置的tf.keras,或者独立Keras版本和代码要求不匹配,也会触发该报错
修复步骤

按顺序操作即可:

  • 先确认当前环境版本
    执行以下代码打印版本信息:
    import tensorflow as tf
    print(f"TensorFlow版本: {tf.__version__}")
    try:
        import keras
        print(f"独立Keras版本: {keras.__version__}")
    except ImportError:
        print("未安装独立Keras包")
    
    如果TensorFlow版本≥2.16,或者独立Keras版本≥3.0.0,就属于版本不匹配场景。
  • 优先使用无源码修改的兼容方案
    Linux终端直接执行以下命令,安装和BagNet兼容的依赖版本:
    pip uninstall -y keras tf-keras
    pip install tensorflow==2.15.0 keras==2.15.0
    
    安装完成后重启Python内核,重新执行模型初始化代码即可。
  • 如果不想降级TensorFlow版本,可手动修改BagNet源码适配现有环境
    找到Python环境下的bagnets安装路径(一般在site-packages/bagnets/目录下),打开kerasnet.py文件:
    • 将文件头部所有import keras、from keras.xxx import xxx的导入语句,全部替换为from tensorflow import keras、from tensorflow.keras.xxx import xxx
    • 确认文件中get_file的调用路径为keras.utils.get_file,没有拼写错误
      修改完成后保存文件,重启内核即可正常运行。
注意事项
  • 修复完成后执行pip list | grep -E "tensorflow|keras",确认环境里没有多个版本的Keras/TensorFlow共存,避免导入冲突
  • 不需要额外调整segmentation_models的框架配置,该配置不会影响BagNet的运行逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:30:54