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

从keras.backend导入binary_weighted_focal_crossentropy报ImportError求助

TensorFlow/Keras 导入binary_weighted_focal_crossentropy报错排查与解决

错误复现

运行导入相关代码时触发ImportError,完整错误栈如下:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Input In [20], in <cell line: 1>()
----> 1 from tensorflow.keras import layers
      2 import keras.backend as backend
      3 import tensorflow as tf

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\api\_v2\keras\__init__.py:13, in <module>
     10 import sys as _sys
     12 from keras import __version__
---> 13 from keras.api._v2.keras import __internal__
     14 from keras.api._v2.keras import activations
     15 from keras.api._v2.keras import applications

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\api\__init__.py:8, in <module>
      3 """Public API for tf. namespace.
      4 """
      6 import sys as _sys
----> 8 from keras.api import keras
      9 from tensorflow.python.util import module_wrapper as _module_wrapper
     11 if not isinstance(_sys.modules[__name__], _module_wrapper.TFModuleWrapper):

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\api\keras\__init__.py:16, in <module>
     14 from keras.api.keras import activations
     15 from keras.api.keras import applications
---> 16 from keras.api.keras import backend
     17 from keras.api.keras import callbacks
     18 from keras.api.keras import constraints

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\api\keras\backend\__init__.py:24, in <module>
     22 from keras.backend import binary_crossentropy
     23 from keras.backend import binary_focal_crossentropy
---> 24 from keras.backend import binary_weighted_focal_crossentropy
     25 from keras.backend import cast
     26 from keras.backend import cast_to_floatx

ImportError: cannot import name 'binary_weighted_focal_crossentropy' from 'keras.backend' (D:\Users\DGong\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\backend.py)

该问题在多次pip/pip3卸载重装tensorflow、keras后仍未解决,检查源码可见binary_focal_crossentropy与binary_weighted_focal_crossentropy导出写法无明显差异,但仅后者触发导入异常。

核心原因

该问题是独立Keras包与TensorFlow内置Keras版本错配、安装残留文件导致API导出和实际实现不匹配:

  • 环境中同时存在pip单独安装的独立keras包,以及TensorFlow自带的tensorflow.keras模块
  • 独立Keras包的API声明文件中列出了binary_weighted_focal_crossentropy导出项,但当前安装的Keras核心实现文件backend.py中不存在该函数,属于版本碎片残留、版本号不匹配的典型问题
  • 普通pip卸载重装不会自动清理历史版本残留的不匹配文件,因此反复重装无法解决问题

排查方向

  • 执行版本校验命令,确认两个包的实际安装版本:
    pip show tensorflow keras
    
    兼容要求为独立Keras的主版本号必须和TensorFlow版本完全对齐,例如TensorFlow 2.15需搭配Keras 2.15,禁止跨大版本混用
  • 打开错误栈提示路径下的keras/backend.py文件,全局搜索binary_weighted_focal_crossentropy,确认该函数是否真实存在于实现文件中
  • 检查Python环境的site-packages目录,确认是否存在多个版本的Keras残留文件夹、版本号不匹配的.dist-info描述文件

解决方法

按优先级从高到低尝试:

  • 彻底清理残留后重装版本匹配的包
    重复执行卸载命令直到提示对应包不存在,确保卸载完全:
    pip uninstall -y tensorflow keras tf-nightly keras-nightly
    pip3 uninstall -y tensorflow keras tf-nightly keras-nightly
    
    手动进入错误栈提示的site-packages路径(D:\Users\DGong\AppData\Local\Programs\Python\Python310\lib\site-packages\),删除所有名称带keras、tensorflow的文件夹及对应的.dist-info文件,清理完成后重新安装指定版本的包,例如:
    pip install tensorflow==2.15 keras==2.15
    
  • 卸载独立Keras包,统一使用TensorFlow内置Keras
    若无特殊需求必须使用独立发行的Keras,直接卸载独立Keras包即可避免版本冲突:
    pip uninstall -y keras
    
    所有导入语句统一从tensorflow.keras引入,不要单独导入独立Keras的模块:
    from tensorflow.keras import layers
    from tensorflow.keras import backend
    import tensorflow as tf
    
  • 临时应急补丁
    若暂时无法重装,可直接打开报错路径下的keras/api/keras/backend/__init__.py文件,注释掉第24行的from keras.backend import binary_weighted_focal_crossentropy语句,只要业务代码不调用该加权二分类焦点损失函数,就不会影响其他功能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:03:21