本文结合现有方案,提供GPU版本Tensorflow的
踩雷容易排雷难,一排就是一整天=-=
排雷基于个人遇到的问题,由于实际产生错误的方式不尽相同,解决具体问题还请查阅对应资料。
电脑配置参考 intel corei7 7700HQ + GTX1050Ti + 8G DDR4 (标准2017笔记本/游戏本配置 )
无Anaconda
←表示已配置好的环境,本文不再赘述
Win10
python 3.6
Visual Studio 2017
CUDA
cuDNN
Windows Installer Redistributables
提供的链接是本人实际安装经过测试可用的版本(CUDA8.0+cuDNN6 比较老的版本),更高版本的安装过程都类似。
整体安装流程大致思路如下:
安装CUDA X.X版本[^1] → 安装cuDNN → 安装WIR[^2] → 添加环境变量 → 安装tensorflow-gpu → 重启电脑
这个操作流程大致是固定且正确的,如果最后出现安装失败则应该是安装过程中少了某些步骤,重新按照流程操作一遍就行,以下有几点:
安装之前一定要参考 CUDA - cuDNN - tensorflow-gpu 之间的对应版本!
在网上查阅了很多资料,发现版本不对应的问题没有被提出来,这也是为什么我总是安装失败的原因,天坑。在安装CUDA和cuDNN之前需要到tensorflow官网查询最新的对应关系,或者也可以参阅此文: Tensorflow不同版本要求与CUDA及CUDNN版本对应关系 作者:LoveWeeknd,选择自己想要的版本并下载安装
详细安装流程可参考Tensorflow(GPU) 在Win10+Cuda8.0环境下安装以及Cudnn包配置 图文详细教程 作者:小鹅鹅,写得很详细,本人就是参考此文安装。值得一提的是,不需要一定安装CUDA8.0的版本,只需要满足三者版本之间的对应条件就行,其余的配置流程一样。
目前(截止至2019.2.18元宵节前一天 )通过pip 安装的 tensorflow-gpu 版本即最新的版本是1.12,而NVIDIA官网上提供的最新的版本 CUDA10 和 cuDNN7.4 的组合似乎并不兼容这个版本的 tensorflow-gpu,这就导致了按照网络教程安装会导致安装失败。如果安装了错误版本的 CUDA 需要卸载 CUDA 组件,操作流程可参考windows 7 下cuda 9.0 卸载、cuda8.0 安装 作者:shuiyuejihua 一文中的第二部分(2.卸载),即可卸载CUDA。这里提一下,CUDA被卸载后会在C:\Program Files\NVIDIA Corporation\Installer2
目录下留下此版本的残留文件(带有版本号的都是),可删除此目录下对应版本的残留文件释放硬盘空间
雷路千万条 版本第一条 排雷不规范 亲人两行泪
本人在按照网络教程按部就班地配置环境并确定没有问题后,进入pycharm运行文件准备训练模型,不料突然遇到如下报错:
Traceback (most recent call last):
File “D:\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py”, line 18, in swig_import_helper
return importlib.import_module(mname)
File “D:\Python\Python36\lib\importlib__init__.py”, line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
……
ImportError: DLL load failed: 找不到指定的模块。
During handling of the above exception, another exception occurred:
……
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
此即宣布配置环境失败。我在网上尝试了众多方法,均没有对症下药,前前后后花了将近两天的时间尝试各种方法。最后根据某篇文章中提供的线索找到了这次操作中踩到的最大的雷:版本支持问题(即前文强调的版本对应关系)。当然,如果你版本对应关系正确还是出现报错的话,说明你问题不在这,还需要参考其他解决方案(劫数未尽)
为防止意外的错误,我将tensorflow-gpu、CUDA9.0、 cuDNN一并卸载掉后,按照对应的版本关系重新依次安装了CUDA8.0、cuDNN6、tensorflow1.4,最后成功通过编译,成功完成模型训练。
自此,tensorflow的GPU版本配置成功,现在可以使用GPU对深度学习进行加速。我配置的环境是 CUDA8.0,受限于它,只能安装2017年的版本老版本 tensorflow-gpu 1.4,虽然能够成功运行,但是缺少很多在后续版本的库中加入的新方法,原本的代码是基于1.12版本,有一些方法在1.4中不兼容需要更换。但是老版本毕竟是老版本,还是需要与时俱进的,后续CUDA9.0,10.0版本还没有尝试过,日后根据需要会进行更换。