移除Keras中InceptionV3最后一层时遇ModuleNotFoundError问题求助
问题:移除InceptionV3最后一层时出现ModuleNotFoundError错误
问题场景
尝试移除Keras中InceptionV3模型的最后一层,运行代码如下:
from keras.src.applications.inception_v3 import InceptionV3 from keras.models import Model model = InceptionV3(weights='imagenet') model_new = Model(inputs=model.input, outputs=model.layers[-2].output)
执行后出现如下错误:
ModuleNotFoundError Traceback (most recent call last) Cell In[90], line 2 1 # Tạo model mới, bỏ layer cuối từ inception v3 ----> 2 model_new = Model(inputs=model.input, outputs=model.layers[-2].output) File ~\anaconda3\envs\myenv\lib\site-packages\keras\engine\training.py:193, in __new__(cls, *args, **kwargs) File ~\anaconda3\envs\myenv\lib\site-packages\keras\engine\training.py:195, in __new__(cls, *args, **kwargs) File ~\anaconda3\envs\myenv\lib\site-packages\keras\utils\version_utils.py:49, in __new__(cls, *args, **kwargs) File ~\anaconda3\envs\myenv\lib\site-packages\keras\utils\generic_utils.py:1318, in __getattr__(self, item) File ~\anaconda3\envs\myenv\lib\site-packages\keras\utils\generic_utils.py:1309, in _load(self) File ~\anaconda3\envs\myenv\lib\site-packages\importlib\__init__.py:127, in import_module(name, package) 125 break 126 level += 1 --> 127 return _bootstrap._gcd_import(name[level:], package, level) File <frozen importlib._bootstrap>:1030, in _gcd_import(name, package, level) File <frozen importlib._bootstrap>:1007, in _find_and_load(name, import_) File <frozen importlib._bootstrap>:984, in _find_and_load_unlocked(name, import_) ModuleNotFoundError: No module named 'keras.engine.base_layer_v1'
已尝试重新安装Keras和TensorFlow,但问题仍存在。
解决方案
1. 统一使用TensorFlow内置的Keras导入路径
当前Keras已整合到TensorFlow中,混合使用独立Keras包和TensorFlow内置Keras会导致版本冲突。修正代码如下:
from tensorflow.keras.applications.inception_v3 import InceptionV3 from tensorflow.keras.models import Model model = InceptionV3(weights='imagenet') model_new = Model(inputs=model.input, outputs=model.layers[-2].output)
2. 彻底清理并重新安装TensorFlow
- 先卸载所有相关包:
pip uninstall -y keras tensorflow - 安装稳定版本的TensorFlow(推荐2.15.x系列,兼容性较好):
注意:安装TensorFlow后无需单独安装Keras,TensorFlow已包含完整的Keras模块。pip install tensorflow==2.15.0
3. 确认虚拟环境使用正确
检查当前终端是否激活了目标虚拟环境(如示例中的myenv),避免全局安装的包干扰虚拟环境内的依赖。
错误原因
该错误源于混合使用独立Keras包与TensorFlow内置Keras,两者版本不兼容。keras.engine.base_layer_v1是旧版独立Keras的模块路径,而新版TensorFlow内置的Keras已调整了模块结构,导致找不到该模块。
内容的提问来源于stack exchange,提问作者thanh phan van
相关产品推荐
相关产品推荐

