使用tf.keras.models.Sequential()时触发AttributeError问题求助
解决Siamese网络复现中的Keras导入错误
问题分析
你遇到的AttributeError: module 'keras.api._v2.keras' has no attribute 'models'错误,本质是TensorFlow与Keras的版本兼容或导入路径冲突问题——TensorFlow 2.x已整合Keras,混用独立Keras和tf.keras会导致模块引用混乱。
具体修复步骤
1. 统一使用tf.keras导入规范
彻底替换所有独立Keras的导入语句,全部从tensorflow.keras引入模块,示例如下:
# 替代原keras.models/keras.layers等导入方式 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
原代码中的keras.Sequential()直接改为tf.keras.Sequential(),或者使用上述导入的Sequential类。
2. 清理环境中的冲突依赖
- 在终端或Jupyter单元格中检查当前环境的依赖情况:
pip list | grep -E "keras|tensorflow" - 如果同时安装了独立
keras包,直接卸载:
TensorFlow 2.x自带完整的Keras实现,无需额外安装独立版本。pip uninstall -y keras
3. 重启Jupyter内核
修改导入语句和依赖后,必须重启Jupyter运行内核,确保新的导入路径生效,避免旧模块缓存导致的错误。
4. 适配示例代码的导入部分
针对你参考的Siamese网络示例,将所有keras.xxx引用替换为tf.keras.xxx,比如原代码中的:
from keras.models import Model from keras.layers import Input, Lambda
改为:
from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Lambda
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

