解决tensorflow-gpu安装过程中出现的tf.test.is_gpu_avaiable()返回false的一部分解决方法
说起安装tensorflow-gpu的时候出现的一些坑就有点郁闷写个博客记录一下这一些坑,也算给后人一点解决方法
Question Ⅰ
第一种出现在import tensorflow as tf
的时候,看截图!
这玩样我一开始安装的时候看别人的教程里貌似也有这问题,就没管它,以为没事情,后来最后的最后,我才发现是我想多了,这玩样解决方法其实很简单也很暴力,不就是没找到cudart64_101.dll
这个文件嘛,直接搜索,然后找到你电脑里的cudart64_101.dll
,一般在这个目录下C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
会有这样的一个文件,然后Ctrl-C
,进入C:\Windows\System32
目录,来个Cril-V
,over,解决!再来一次你就会发现,哎,他好了
Question Ⅱ
接下来就是那万恶的GPU问题了
测试的时候输入 tf.test.is_gpu_available()
,然后出现
得嘞,一大堆东西,前面一个waring不用管,出现这个警告的原因是TF2里面这行语句改了,不用管,他自动帮你转换了,直接看最后一行,好家伙,False
,毫无疑问,没连上GPU啊
噢,插句题外话,有些教程里会让你输入
tf.Session()
来测试,然后你会发现,他会出现这样的一个报错
这是因为这句话是tensorflow1.*
的一个语法,在tensorflow2.*
把这句话改成了tf.compat.v1.Session()
,输入这个以后就会显示对应的信息了
这里有几种可能,我主要讲一下我遇到的,其他的我也就给个其他博主的链接了,毕竟没遇到嘛
CUDA、cuDNN、tensorflow版本不一致
对应版本的话,可以看这位博主整理的,还是目前比较的全的https://blog.csdn.net/K1052176873/article/details/114526086
当然也可以直接上官网https://tensorflow.google.cn/install/source_windows?hl=en#gpu
这个问题其实我很久以前遇到的,那时候我在装Pytorch
,那次以后我就把这玩样全部配好了,这次出现的也不是这个问题,我这里就给出我当时的几种解决思路。
- 第一种是看看这三个版本对不对应,如果不对应的话可能就需要重新安装一下cuda,主要是CUDA版本,貌似cuDNN版本高一点没啥太大关系,我电脑上的cuDNN也是8.0的而不是表里的7.4。这个的话我就不给链接了,百度一搜太多了,基本上都是讲这个问题的,我也没有看哪个比较的好,所以就自行搜一下吧。
- 第二种也是我当初遇到的问题,显卡驱动版本过低了,我当初可是被这个坑的不轻,我一直在找CUDA的问题,最终确实驱动的锅。这种的话,你可以下载一个
GeForce Experience
,官网:https://www.nvidia.cn/geforce/drivers/,它会自动给你更新驱动,不过这东西它需要登录,首次登录要验证邮箱,验证邮件发过来呢又非常的慢,甚至出现一个周才到也是有可能的(别怀疑,我真的遇到过),so,可以选择手动下载安装驱动,在官网里也有,选择对应的信息就好了 - 第三种是PATH内配置的的问题,在PATH里有两条是需要手动配的,如下,如果没有配的话,也是有可能出现这个问题的
Could not load dynamic library 'cudnn64_7.dll'; dlerror: cudnn64_7.dll not found
yes,各位看到的是一条报错信息,就是这条报错导致我输出False
,我当时最后发现这玩样然后改完后有点想口吐芬芳,就说啊,其他框架可以调用GPU,咋就你TF不行。这段报错出现在 tf.test.is_gpu_available()
的输出里,可以仔细悄悄,如果有的话,那解决方法......前面说了复制粘贴的事情,请看Question I
当我改完这个以后,它就....True
了????
没安装GPU版本
这个问题,enmm......,也不是不可能出现,如果装的是CPU版本的话,那肯定是调用不了GPU的,乖乖卸了重装吧
验证方法的话,进入tensorflow环境,python下运行下面这些代码
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
看看输出(图片来自于https://blog.csdn.net/qq_37902216/article/details/89556068)
这种的话是CPU版本
如果是GPU版本的话,应该会有这样的一段
(因为这个是我写这篇博客时候想到的,那时候我已经解决那个False
问题了,但应该在输出里也会有明显的GPU字样,或者反向思维,不是CPU版本那肯定就是GPU版本了)
卸载
pip uninstall tensorflow
安装
pip install tensorflow-gpu==版本号
然后重新验证一下
主要应该就这些了,如果还有其他的其实可以看一看那一大段输出,或许在里面就会找到答案,我其他的也没遇到过,也不好在此谈论,希望这篇博客对大家能有所帮助。
如有错误,欢迎指正!
同时发布在CSDN:https://blog.csdn.net/tangkcc/article/details/120510152