tensorflow 1.13.1 安装采坑

环境:

win10 x64位,cuda10.1,cudnn 7.5,vs2013,vs2015 distributed ,GTX1060

按照网上的教程安装,如下面博客

https://blog.csdn.net/huanyingzhizai/article/details/89298964

我最后的安装位置:anaconda2下面的虚拟环境py3下面新建虚拟环境:tensorflow-gpu

安装的tensorflow库:

坑:

包括conda安装和pip安装完提示安装成功,但是一旦import tensorflow as tf就会直接报错:

提示dll加载失败,找不到指定的模块。

试过重装很多次,都还是一样,报同样的错误,原因是tensorflow版本和cuda版本不匹配导致的。我的cuda是10.1版本,而tensorflow最新的是1.13.1(今天刚出了1.14.0还没提供下载),只支持到cuda 10.0,因此一直会提示dll加载失败。换cuda版本实在是工作量有点大,牵扯到我的caffe和torch环境,尤其caffe得重新编译,麻烦的很,想想还是算了,找找其他办法能不能解决。

解决办法:

为什么会提示dll加载失败呢?都是那些dll加载失败呢??终于在一篇博客找到了希望,参考的博客:

https://blog.csdn.net/l_mingo/article/details/88110945

按照博客方法打开命令行输入以下命令查看依赖的是哪些dll:

"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe" /dependents C:\Users\username\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd

接下来就会输出目前tensorflow所依赖的dll库:

按照博客中的方法:在命令行中使用:where cublas64_100.dll 的命令来查找这些库是不是在系统的path中,但是我使用了where之后只是显示了下面的这种提示:

这只是提示在系统path中没找到这些dll。但是,我使用一个文件搜索神器(Everything)把这些dll挨个搜了一遍:如下图所示

发现不在C:/windows/system32文件夹下,但是在其他很多文件夹中存在这个文件,然后我就按博客所说的,将搜到的这个dll随便复制一个放在C:/windows/system32文件夹下面就可以了。其他dll文件都找到了,但是有一个文件:cusolver64_100.dll ,搜遍了整个电脑都没有,但有一个cusolver64_10.dll,两个文件名挺像的,应该就是版本不一样吧:

试着将cusolver64_10.dll复制一份,重命名为cusolver64_100.dll,然后放到C:/windows/system32文件夹下,奇迹发生了,输入import tensorflow 没报错,接着输入下面两条命令试试能不能使用GPU:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

竟然成功了,成功的打印了GPU信息,折腾了一天,终于搞定了。

总结:

我没有将cuda10.1换成其他版本,因为我的caffe和torch都是基于cuda10.1的,要是重新将cuda降级,工作量会更大,caffe得重新编译,torch得重装,还好解决了,环境问题真是头疼!

猜你喜欢

转载自blog.csdn.net/sinat_33486980/article/details/92838300