zoukankan      html  css  js  c++  java
  • 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 FilesNVIDIA GPU Computing ToolkitCUDAv10.1,它应该长这样:

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

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

    有时候安装错误,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放到正确的地方就没问题了。

  • 相关阅读:
    sublime text
    php 实例说明 socket通信机制
    nusaop 关于webService
    vim操作集合
    gitHud设置公钥
    redis在window安装并启动
    百度云api 添加标注
    微信小程序bindTap获取对应值
    Java导出excel表
    linux 常用命令
  • 原文地址:https://www.cnblogs.com/FromATP/p/10854142.html
Copyright © 2011-2022 走看看