Win10+Tensorflow-gpu1.13.1+cuda10.1+cudnn7.5疯狂踩坑记

写在前面?

ATP曾经,曾经,曾经,拥有过一台装好了tensorflow-gpu的电脑。当初的ATP使用的还是tensorflow1.7.1,还在煞笔兮兮地用tf.matmul手写卷积神经网络。

后来,ATP运行某代码时出了问题,告诉ATP它用的tensorflow版本太低了。那么ATP显然需要升级一下。

据说升级tensorflow需要同时升级cuda和cudnn,那么ATP就把旧的卸了。

然后,它装不上新的了。

在ATP用CPU训练了若干模型后,ATP在一个不想学习的下午又打开了安装教程。在安装了一个下午以后ATP陷入了自闭,然后它让npy陪它去食堂吃了两串烤面筋和四串烤鱿鱼,然后晚上回来又装,然后装上了,似乎是成功的装上了。

为了防止其他有类似境遇的程序猿陷入像ATP一样不得不在晚上摄入额外热量的境地,ATP决定把它的坑罗列出来供大家参考。

毕竟这类踩坑博文虽然网上有很多,但总是少正好适合自己的那一篇,就像ATP的零食箱子里总是少一件零食一样。

以下内容假设你已经安装了Anaconda并且明白它的基本使用。否则可以去百度一下,这一部分实际上都大同小异。

先把旧的卸了

如果你的电脑纯洁得像一张白纸那么资瓷忽略这一部分。

实际上主要是要卸掉旧的cuda。像这样打开开始菜单里的设置:

找到“应用”,点进去,然后在列表上方的下拉菜单里选择按安装日期排序,像这样:

然后可以发现里面有一堆带着cuda这四个字母的东西,把它们全卸了。换句话说,假设你的旧版本是9.2,那么就把名字里带着9.2的全卸了。

别的东西没必要动,也最好别动。有些人可能为了图省事把安装日期是当天的东西全给卸了,但cuda的安装程序可能会对以前就有的一些驱动进行更改。ATP有一次失败的时候就一口气把所有全卸了,包括一个叫GeForce的东西,然后它打游戏的时候发现它的游戏帧数从70帧每秒掉到了15帧每秒,吓得ATP赶紧重新安装了显卡驱动,结果因祸得福把游戏帧数提到了90帧每秒。

安装cuda

首先要确定你可以安装哪个版本的cuda。查询方法是打开控制面板(运行+control),打开“硬件和声音”,找到一个叫“NVIDIA控制面板”的东西。

如果你的这个东西点不开,那可能需要重新装一遍显卡驱动。ATP的就是重装了GeForce以后才能点开的。

打开以后是下图这样:

然后打开帮助->系统信息,在对话框里的小标签里点“组件”。有一个叫“NVCUDA.DLL”的东西,后面跟着一串版本号,大概意思就是你的显卡能支持哪个版本的cuda。亲测版本低了可以,高了不行。如下图:

然后可以查一下你想安装的cuda版本对应哪个版本的tensorflow和cudnn。这个可以很方便地百度到。

反正总之注意一定要按照对应关系安装!要不然会乱七八糟的。

ATP打算装的是tensorflow1.13,对应cuda10.1和cudnn7.5。

从这个地方下载cuda:https://developer.nvidia.com/cuda-downloads

按照你自己的系统一步步选,最后选exe(local)即可。下载完了双击exe,选择“精简”安装就可以了,不需要自定义什么东西。

安装cudnn

从这个地方下载cudnn:https://developer.nvidia.com/rdp/cudnn-download

它需要登录,但不需要特别去注册一个账号,用QQ都可以登录。

按照你的cuda版本下载对应的cudnn。一定要下载对应的!不然系统乱了都不知道咋乱的。。

它第一页只有最新版本cudnn,如果要下载旧一点的版本可以点下面的Archived Cudnn Releases,ATP下载的是7.5.0 for cuda10.1。

下载下来以后是个压缩包。解压开里面有bin、lib和include三个文件夹和一个文本文件。

接下来是重点!ATP在这个地方卡了好久。

打开目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1,它应该长这样:

把刚才那三个文件夹和一个文本文件直接复制到这个地方。实际上就是让cudnn的bin文件夹里的东西在这个cuda的bin文件夹里,lib文件夹里的东西在cuda的lib文件夹里,这样。

实际上,如果你打开cudnn的bin文件夹, 可以发现只有一个文件叫做cudnn64_7.dll。刚才做的事情等价于把这个文件复制粘贴到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin目录下。

有时候安装错误,tensorflow会报错,意思是缺少“cudnn64_7.dll”这个文件,问题就在于可能你没有让这个dll文件呆在cuda目录的bin文件夹里面。

这个也弄完了以后就okk了!就可以用Anaconda新建一个环境,然后pip安装tensorflow-gpu了。

注意在新建环境的时候要确保python是3.7,pip是19.1。然后pip install tensorflow-gpu,它就会自动装上最新的1.13版本了。

如果安装完了以后还是有奇怪的问题,也可以试试这个安装源:
https://github.com/fo40225/tensorflow-windows-wheel

一些问题

如果import tensorflow的时候报一个叫做“ImportError”的错,很有可能是cuda的版本跟显卡目前的支持不对应。

如果想把显卡弄得支持最高版本的cuda,ATP的方式是重新下载显卡驱动。因为ATP一开始的显卡只支持到9.2,但重新下了驱动以后突然神奇地变成了支持10.2。

顺便,ATP的显卡是1050Ti。

另外,要查看目前的tensorflow是支持CPU还是GPU,可以输入这一段代码:

import os
from tensorflow.python.client import device_lib
os.environ["TF_CPP_MIN_LOG_LEVEL"]="99"

if __name__=="__main__":
    print(device_lib.list_local_devices())

然后,没了。ATP要是哪天再把它现在的版本卸了然后遇到了新的坑再来补。

反正关键问题就是找好对应的cuda版本,然后把cudnn放到正确的地方就没问题了。

posted @ 2019-05-12 23:32  FromATP  阅读(1210)  评论(0编辑  收藏  举报