MobileNets(V1)简介及两个初步的代码实验

人工智能69

总论(这是我的总结可以不看直接看下面的安装)

1、 不用看那些版本对应表啊!!!!

记录那些年自己掉过的坑,自己也是看了其他人好多博客,总结下来一个核心问题是要求版本对应,发现大家都是这样教的,以这样一个顺序来建立版本对应关系,显卡型号—>cuda版本—>cudnn版本—>tensorflowgpu版本,就是先看你的显卡型号,找到后再找对应的(或者说兼容的)cuda版本再。。。我就因此查看我的是 GeForce GTX 1050,看了发现他们安的是CUDA9.0,我就依次进行了安装,最后就在pycharm中运行时出现了一些dll没有的情况(注意此时我的tensorflow-gpu是2.4与他们的1.几的不一样),所以判断出问题应该是tensorflow版本过新与cuda、cudnn的版本相对比较旧不匹配的问题(并且我也此时看到一位博客说的,tensorflow2.0版本只能用cuda10.0以后的),我为了排查错误,又安了cuda10.1,发现还是找不到一些dll,其中有cudart64_110.dll,全是以_11.dll结尾的,难道说这是要我安cuda11???最后我又安了cuda11.1最后发现确实如此(当然我还做了其他尝试自己搜了找不到的dll准备复制到bin下,来缺啥补啥,但有些就是找不到)。

2、 版本逻辑链tensorflowgpu版本—>cuda版本—>cudnn版本

最后得出的结论是版本对应的逻辑不应是上面那个,应该先看tensorflowgpu版本,再找到兼容的cuda版本到cudnn,而显卡型号我觉得也不用看,因为后出现的cuda一定会兼容之前的显卡,虽说我这个笔记本的1050已经较老了,但理论仍然能兼容最新的cuda对吧,不然不就成废物了?!(或许我的理解有错,欢迎评论区探讨)说这些我主要是看到好多博客列了很大的表来展示显卡版本及其版本对应关系,然而并没有什么用,可能对于那些过于老旧的GPU,新的CUDA是不会支持的,然后再让安装稍微旧点的CUDA,这可能是唯一的作用吧。而对于大多数人来说,GPU都较新的,你CUDA安装的稍微旧点,但tensorflow-gpu你难道也安装个旧的?特别是现在2.0是一个新的大版本,你pip或conda安装一定是最新的啊(当然你离线下载旧的whl用当我没说),可最新的tensorflow和稍旧点的CUDA、cuDNN匹配时就很容易出问题,比如我的就是,我看之前的博客说1050怎样怎样所以就安CUDA9.0?(这不瞎说嘛)然后pip 安了最新的tensorflow-gpu导致不匹配,一些dll就没有,所以安了三遍。

3 、安装最新的就行!

最后就是由于你的tensorflow是安最新的,所以CUDA也安最新并支持你的显卡的,只要不是太太太太老旧都会支持的,然后找相应这个CUDA的cuDNN。

链接

cudnn-11.1-windows-x64-v8.0.4.30
链接:https://pan.baidu.com/s/1aqedvmiMXANVQqV5NPm7Yw
提取码:3ccj

cuda_11.1.0_456.43_win10
链接:https://pan.baidu.com/s/1KnhrYxptLQohVQ5Atql4sA
提取码:1td5
复制这段内容后打开百度网盘手机App,操作更方便哦

CUDA安装

最好先自己更新一下显卡驱动,这样就不用CUDA的显卡驱动了
1、执行cuda.exe
MobileNets(V1)简介及两个初步的代码实验
2.不要改路径就默认
MobileNets(V1)简介及两个初步的代码实验
3.

MobileNets(V1)简介及两个初步的代码实验
4.

MobileNets(V1)简介及两个初步的代码实验
5.如果你的卡是新的,比CUDA出的迟,那么找不到也正常没关系的
MobileNets(V1)简介及两个初步的代码实验
6.点自定义
MobileNets(V1)简介及两个初步的代码实验
7.不点VS那个选项,并且取消勾选Driver comonents,Display Driver这一行,前面显示的是Cuda本身包含的驱动版本是411.31,如果你电脑目前安装的驱动版本号新于Cuda本身自带的驱动版本号,那一定要把这个勾去掉。否则会安装失败(相同的话,就不用去取勾了)

MobileNets(V1)简介及两个初步的代码实验
MobileNets(V1)简介及两个初步的代码实验
8.安装位置默认,大约要10G空间
9.完成后关闭,这两项不用管,不用点
MobileNets(V1)简介及两个初步的代码实验

; 配置环境变量

电脑-》属性-》高级系统设置-》环境变量
在系统变量里多了这两项
MobileNets(V1)简介及两个初步的代码实验
1.但是这还不够,我们还需要再添加五个系统变量(根据实际安装版本和路径添加,一样版本和默认路径的可直接复制粘贴)前面是变量名字后面是路径:

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1

CUDA_LIB_PATH = %CUDA_PATH%\lib\x64

CUDA_BIN_PATH = %CUDA_PATH%\bin

CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64

CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

MobileNets(V1)简介及两个初步的代码实验
2.在系统变量Path里添加变量,双击Path添加如下变量(同样根据实际路径填)

%CUDA_LIB_PATH%

%CUDA_BIN_PATH%

%CUDA_SDK_LIB_PATH%

%CUDA_SDK_BIN_PATH%

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\common\lib\x64

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\bin\win64

如图:
MobileNets(V1)简介及两个初步的代码实验
3.点完三个确定就ok了
4.多版本cuda问题
由于我安了三个版本的cuda,CUDA文件夹下有三个版本,它们可以兼容安装。
MobileNets(V1)简介及两个初步的代码实验
由于安装的了旧的版本cuda后有问题,所以你想安装新的cuda,安装后,需要把旧版本的环境变量其中包括CUDA_PATH更改为新版本的环境变量,比如把之前的9.0全改为11.1,然后PATH里的把新版本的放到旧版本的上面。并且,NVCUDASAMPLES_ROOT改成CUDA11.1(即新版本)的路径。
最后你可以到cmd中输入nvcc --version来查看是否更改过来,这个命令之所以可用就是因为你已经配置了环境变量。

5.检查是否成功
在cmd中,切换到这个目录下执行两个exe

cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\extras\demo_suite

分别 运行

bandwidthTest.exe
deviceQuery.exe

如果得到两个PASS就证明成功了,如图:
MobileNets(V1)简介及两个初步的代码实验
MobileNets(V1)简介及两个初步的代码实验

CUDNN安装

把压缩包解压后打开,出现这样的目录
MobileNets(V1)简介及两个初步的代码实验

之后全选复制到你的CUDA目录下,(有时得复制两次)以管理员身份:
MobileNets(V1)简介及两个初步的代码实验
复制过去这便完成了,注意的是cudnn与cuda的版本对应
MobileNets(V1)简介及两个初步的代码实验
比如这个显然这个cudnn版本是8.0,对应的是cuda11.1,以及windows系统。cudnn自己的版本可以随便,但对应11.1这个是必须要求的。

; tensorflow-gpu2.0安装

安这些最好先安好anaconda便于管理
1.打开Anaconda Prompt
MobileNets(V1)简介及两个初步的代码实验
2.在命令窗口输入命令创建环境
我的是python3.7,你可以自己看自己的python版本

conda create -n tf-gpu python=3.7

这里如果出现了HTTP000或404啥的错误就是得把conda的源改为国内源的问题
进入到这个目录下C:\Users\26503下,26503是我的名字,你进入你自己的目录下便好找到一个叫 .condarc的文件用记事本打开,换成下面的内容便好:


channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
show_channel_urls: true
ssl_verify: false

这里也可用conda命令来设置,就不多说了。
3.激活tf-gpu环境,进行安装

activate tf-gpu

4.pip安装

pip install --ignore-installed --upgrade tensorflow-gpu

这里如果很慢是你pip源的问题,改为国内的就好,中间缺啥安啥就好。可以多执行几遍命令 ,安装成功后会出现:
MobileNets(V1)简介及两个初步的代码实验
5.验证
输入python
输入 import tensorflow as tf
输入 tf.__version__查看版本
MobileNets(V1)简介及两个初步的代码实验
输入 tf.test.is_gpu_available()查看tensorflow-gpu是否可用
MobileNets(V1)简介及两个初步的代码实验MobileNets(V1)简介及两个初步的代码实验

返回了True从便证明可用

6.小插曲
我在pycharm中运行时,虽然大部分dll都找到了,但有一个没有,如下图这个cusolver64_10.dll,我正纳闷明明我这有cusolver64_11.dll,他为啥要cusolver64_10.dll呢,这个显然是旧版CUDA才有的库,于是我到我安装过的10.1中找,果然找到了,然后便复制过来到执行便成功了。
MobileNets(V1)简介及两个初步的代码实验

pycharm配置

由于之前已经配置过cpu版的tensorflow,现在只是重新加载新的python解释器
点File ->Settings
MobileNets(V1)简介及两个初步的代码实验
点向下的小三角,再show all,点加号添加
由于我pycharm是用的conda环境解释的,点conda environment,然后点下面的existing environment,再选择anaconda下的envs的tf-gpu中的python,最后apply但完成了。
MobileNets(V1)简介及两个初步的代码实验

; 总结

1.如果遇到下图这种
MobileNets(V1)简介及两个初步的代码实验
好多dll都找不到,说明CUDA版本不对,下载安装更新的便好,而且要找的这些dll的名字里下划线后面是11开头,应该是CUDA11.0以后版本才有的,如果是10开头,则是CUDA10.0以后版本才有的。

2.如果遇到这个问题:无法定位程序输入点OPENSSL_sk_new_reserve于动态链接库libcrypto-1_1-x64.dll上
参考这个博客,这里不再多说
https://blog.csdn.net/weixin_42182599/article/details/104796878

3.参考链接:
https://www.jianshu.com/p/4ebaa78e0233
https://blog.csdn.net/zqxdsy/article/details/103152190
https://blog.csdn.net/u010618587/article/details/82940528
https://blog.csdn.net/dou3516/article/details/102970983