tensorflow遇到ImportError的解决方法

  

在安装tensorflow的时候,使用导入   tensorflow出现了找不到dll文件的错误,参考了很多博客和stackflow的解决方案,发现其中只说了版本号不匹配,但是没有具体说明什么样的版本才是适配正确的,因此手写此避坑指南。再次感谢函数兄的指导帮助。

笔者环境:python版

3.6本tensorflow版本1.14

ImportError:找不到cudart64_100。dll '

简答:

仔细分析错误的类型,原因

搞清自己的tensorflow以及CUDA版本

换用对应版本进行解决,完成CUDA与tf的适配,cudnn与CUDA的适配,protobuf与tf的适配

一。错误类型原因

问题是找不到cuda系的dll文件的模块,提示需要下载CUDA10.0,那么首先查看cuda的路径下是否存在该文件:

通过C: \ Program Files \ NVIDIA GPU计算   工具箱\ CUDA路径访问CUDA,在其本目录下查找是否有cudart64_100。dll模块

如果有,则查看环境变量是否添加,如果没有,可能就是cuda版本和tensorflow版本的匹配问题

二。搞清自己的tensorflow及CUDA版本

进入命令行环境下,首先通过python——版本确定自己的python版本是3.6

再通过pip名单查看已经安装好的tensorflow版本,笔者本人的版本是1.14

通过学校网站查——版本看CUDA版本,笔者之前的CUDA版本是V9.0.176;

通过Tesnsorflow官网查找对应版本信息如下:

可以看到当tensorflow的版本祝辞=1.13时,CUDA的版本需要的是10.0,同时cudnn版本号需要大于7.4.1;

这里笔者选用了将CUDA的版本卸载,以适用tensorflow版本

直接进入C: \ Program Files \ NVIDIA GPU计算   工具箱\ CUDA路径下将文件夹删除,并且将环境变量删除。

找到了一个高中生搭的服务器下载链接,这里的下载速度会快一些:

tensorflow相关下载链接

三。匹配对应的cudnn对应cuda版本

将cuda版本安装后,再次打开jupyter运行导入   tensorflow,发现并没有成功,出现了找不到cudnn64_7。dll的的错误:

ImportError:找不到“cudnn64_7。dll '

此提示表示缺少cudnn模块的dll文件,根据tensorflow文档,对应tensorflow1.13版本以上,cudnn需要是祝辞7.4.1的版本,下载cudnn版本,cudnn的目录结构如下:

<中心>  tensorflow遇到ImportError的解决方法


将cudnn目录下的文件对应放在cuda目录下即可

四。匹配对应的protobuf对应tf版本

此时应该是没问题了吧,笔者继续运行导入tensorflow, MMP并没有顺利运行,出现了提示“描述符”的错误:

ImportError:不能进口的名字“描述符”

stackflow上的tf安装问题汇总

通过stackflow上查找,发现该错误出现的原因是因为protobuf和tf的版本不对应,因为特遣部队和专业之间存在依赖关系,于是笔者首先卸载   pro,接着卸载tf,最后重新安装助教,助教会自动对依赖项专业进行安装。

中间出现了一点小插曲,笔者是用virtualenv的py虚拟环境,于是安装好了版本后,依然会出现的描述符的错误,于是自己在原生py环境中测试了下,发现可以导入tf。那么原因就是可能因为系统找不到py虚拟环境中的sitepackage,将虚拟环境的py-bin下的目录设置为环境变量,即可正常调用。

最后结果导入成功:

<中心>  tensorflow遇到ImportError的解决方法


tensorflow遇到ImportError的解决方法