在用 tensorflow + keras 训练模型时,启用 GPU 失败。
**发生错误的原因:**加载动态库失败。其背后的根本原因可能是 tensorflow 和 cuda版本不匹配。
解决思路
- 首先查看安装的 tensorflow 版本和电脑已装的 Cuda、Cudnn 版本是否匹配;
- 若匹配,则直接看解决方法;若不匹配,则重新下载和 Cuda、Cudnn 版本匹配的 tensorflow。
Cuda和tensorflow对应关系
查看网址:
如何查看自己的Cuda和Cudnn版本
查看 Cuda 版本
win+R
打开 cmd- 输入
nvidia-smi
即可查看 Cuda 版本,如下所示:
查看Cudnn版本
- 进入目录
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
。 - 找到
cudnn.h
的头文件,可以选择用文本编辑器打开,会看到如下定义:
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 5
解决方法
如果你的 tensorflow 版本安装与 Cuda 和 Cudnn 不匹配,则应当卸载现有 tensorflow 后重装 tensorflow,安装合适的版本。
如果你的 tensorflow 版本安装正确,可是还是不能正确启用 GPU,可以先查看报错,找到具体缺少哪一个动态库,然后在自己的动态库中找到类似的库改名后再放入文件夹中。具体操作如下,仅供参考:
- 找到安装的 Cuda 下的 bin 目录,例如:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
。 - 在该目录下找到和缺少的.dll文件类似的文件。例如,我缺少的是
'cusolver64_10.dll'
,而我的 bin 文件夹里存在的是cusolver64_11.dll
。 - 复制
cusolver64_11.dll
到桌面,将其重命名为cusolver64_10.dll
。 - 最后,将
cusolver64_10.dll
移动到 bin 目录下。
至此,可以成功启用 GPU。