导入imageai报No module named 'keras.layers.advanced_activations'如何修复
报错原因
ModuleNotFoundError: No module named 'keras.layers.advanced_activations'触发的核心原因是版本适配错位:
- 你安装的imageai 2.0.2是针对Keras 2.4及更早版本开发的,旧版Keras将高级激活层放在独立的
keras.layers.advanced_activations子模块下 - 你当前环境安装的Keras 2.9.0已经废弃了这个独立子模块,所有高级激活层已经直接并入
keras.layers路径,导入路径不匹配就会抛出模块不存在的错误 - 你本地记录的imageai版本为2.1.5,但实际安装的是2.0.2的whl包,版本记录和实际安装包不一致也会增加适配问题概率
可行解决方案
按操作成本从低到高排序:
- 方案1:安装适配新版TF/Keras的imageai正式版本
不要使用旧的2.0.2离线whl包,直接执行以下命令安装适配TF2.9的版本,官方已经修复了所有导入路径问题:
安装完成后重新执行导入语句即可正常运行。pip uninstall -y imageai pip install imageai==3.0.3 - 方案2:降级依赖到imageai 2.0.2适配版本
如果必须使用2.0.2版本的imageai,直接将相关依赖降到官方验证过的适配版本即可:pip uninstall -y tensorflow keras keras-preprocessing imageai pip install tensorflow==2.4.1 keras==2.4.3 keras-preprocessing==1.1.2 pip install imageai-2.0.2-py3-none-any.whl - 方案3:手动修改本地imageai源码适配新版Keras
如果既不想降级TF/Keras,也不想升级imageai版本,可以手动修正导入路径:- 进入Python环境的第三方包目录,找到
imageai/Detection文件夹下的所有.py文件 - 全局搜索替换:将所有
from keras.layers.advanced_activations import替换为from keras.layers import - 同步修正其他旧版导入路径:比如将
from keras.utils import plot_model替换为from keras.utils.vis_utils import plot_model - 保存文件后重新执行导入即可。
- 进入Python环境的第三方包目录,找到
内容的提问来源于stack exchange,提问作者Shay ril
相关产品推荐
相关产品推荐

