Keras/TensorFlow无法找到ImageNet权重文件,下载后仍报错求助
针对你在Ubuntu 16.04 + TensorFlow-GPU 1.5.0环境下遇到的Xception权重加载问题——即便重新下载了权重文件仍报错的情况,我整理了几个实用的排查方向和解决办法:
1. 确认权重文件的存放路径是否正确
Keras默认会把预训练权重存储在~/.keras/models/目录下。你手动下载的xception_weights_tf_dim_ordering_tf_kernels.h5文件,必须确保被放到这个目录里,且文件名要完全匹配(注意大小写、后缀都不能出错)。
如果不确定默认路径,也可以用代码打印Keras的配置路径来确认:
from keras import utils print(utils.get_file())
这个命令会输出默认的权重存储目录,把下载好的文件移过去即可。
2. 修复目录/文件的权限问题
Ubuntu环境下,~/.keras/目录可能因为之前的安装操作(比如用sudo执行过pip)导致权限异常,使得Keras无法读取里面的权重文件。你可以执行以下命令修复权限:
sudo chown -R $USER:$USER ~/.keras/
这会让当前用户拥有该目录及其所有文件的读写权限。
3. 手动指定权重文件路径加载
绕开Keras的自动查找逻辑,直接在代码里指定你下载好的权重文件路径,这样可以避免路径识别的bug。示例代码如下:
from tensorflow.keras.applications.xception import Xception # 替换成你实际的权重文件路径 model = Xception(weights='/home/your_username/Downloads/xception_weights_tf_dim_ordering_tf_kernels.h5')
4. 清理Keras的缓存文件
有时候Keras会缓存权重文件的状态,即使你重新下载了文件,旧的缓存仍然会干扰加载。你可以删除~/.keras/models/目录下除了权重文件之外的缓存文件(比如带有.cache后缀的文件),然后重新运行代码。
5. 确认Keras与TensorFlow的版本兼容性
TensorFlow 1.5.0对应的Keras版本应该是2.1.6左右,如果你的Keras版本过高或过低,都可能出现权重加载的兼容性问题。你可以先查看当前Keras版本:
pip3 show keras
如果版本不匹配,执行以下命令安装对应版本:
pip3 install keras==2.1.6
内容的提问来源于stack exchange,提问作者Tobias Hermann

