TensorFlow 2.16.1调用ResNet50报错:keras模块无__version__属性
问题分析与解决
原因判断
这不是TensorFlow 2.16.1的Bug,而是你的Python环境中Keras模块安装异常或版本不兼容导致的。TensorFlow 2.16+会自动检测独立Keras包的版本,但如果你的Keras模块缺失__version__属性(可能是安装不完整、损坏,或安装了非官方/错误版本的Keras),就会触发这个AttributeError。
修复方案
方案1:重新安装兼容的Keras版本
- 先卸载当前异常的Keras包:
pip uninstall -y keras - 安装与TensorFlow 2.16.1兼容的Keras版本(推荐3.2.1,这是TF2.16.1发布时的稳定兼容版本):
pip install keras==3.2.1 - 重新运行你的代码,问题应该会解决。
方案2:强制TensorFlow使用内置Keras(绕过独立Keras检测)
如果你不想使用独立Keras包,可以通过设置环境变量让TensorFlow切换回内置的旧版Keras实现:
import os # 强制使用TensorFlow作为Keras后端,并启用旧版内置Keras os.environ["KERAS_BACKEND"] = "tensorflow" os.environ["TF_USE_LEGACY_KERAS"] = "1" import tensorflow as tf model = tf.keras.applications.ResNet50(weights="imagenet")
方案3:用Conda重新安装完整环境(适用于Anaconda用户)
如果你的环境是用Conda管理的,直接安装配套的TensorFlow和Keras包更稳妥:
conda install -c conda-forge tensorflow=2.16.1 keras=3.2.1
额外排查步骤
如果以上方案无效,可以先在Notebook中运行以下代码确认Keras模块状态:
import keras # 查看Keras模块的所有属性,确认是否有__version__ print(dir(keras))
如果输出中没有__version__,说明你的Keras模块确实损坏,必须重新安装。
内容的提问来源于stack exchange,提问作者Marcus J S Pereira
相关产品推荐
相关产品推荐

