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

运行基于Sentence Transformer-BERT的语义搜索Python脚本时遇keras相关ModuleNotFoundError的原因及解决建议

解决Semantic Search脚本中的Keras相关ModuleNotFoundError

我来帮你拆解这两个报错的原因和修复方案,都是和Keras的安装及版本兼容有关的:

1. ModuleNotFoundError: No module named 'keras'

错误原因

你的Python运行环境中还没有安装Keras库,脚本执行到导入语句时找不到对应的模块。

修复方案

打开终端,激活你的Python虚拟环境(如果用了的话),然后执行以下命令安装Keras:

pip install keras

如果你的系统中同时安装了Python2和Python3,建议用pip3确保安装到Python3环境:

pip3 install keras

2. ModuleNotFoundError: No module named 'keras.backend.tensorflow_backend'

错误原因

这个问题是Keras版本不兼容导致的:在Keras 2.3.0及之后的版本中,keras.backend.tensorflow_backend这个模块路径被移除了——因为从这个版本开始,Keras正式整合进了TensorFlow的官方实现(即tensorflow.keras),旧的独立Keras模块结构不再被维护。另外,很多新版的Sentence Transformer脚本其实已经不再依赖这个旧的导入路径了。

修复方案

推荐两种解决思路,按优先级排序:

方案一:替换导入语句(推荐)

把脚本中的旧导入代码:

import keras.backend.tensorflow_backend as tb

替换为TensorFlow官方Keras的导入路径:

import tensorflow.keras.backend as tb

如果原来导入这个模块是为了设置GPU内存管理(比如tb.set_session()),更推荐用TensorFlow原生的方式实现,代码如下:

import tensorflow as tf

# 启用GPU内存动态增长,避免一次性占满显存
gpus = tf.config.list_physical_devices('GPU')
if gpus:
    try:
        for gpu in gpus:
            tf.config.experimental.set_memory_growth(gpu, True)
    except RuntimeError as e:
        print(e)

方案二:降级Keras到兼容版本

如果你一定要保留原脚本的导入语句,可以降级Keras到2.2.5版本(这个版本还保留keras.backend.tensorflow_backend模块):

pip install keras==2.2.5

⚠️ 注意:降级可能会和其他依赖库(比如TensorFlow、Sentence Transformers)产生版本冲突,需要测试兼容性。

额外提示

如果你的Sentence Transformer是较新版本,其实根本不需要导入Keras——很多旧版示例代码中的Keras导入是冗余的。可以直接删掉那行导入语句,尝试运行脚本,大概率能正常执行,因为Sentence Transformers现在主要依赖transformers库和PyTorch/TensorFlow,不需要单独的Keras包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:47:40