zoukankan      html  css  js  c++  java
  • tensorflow遇到ImportError: Could not find 'cudart64_100.dll'错误解决

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

    python 版本3.6
    tensorflow版本1.14
    1
    2
    ImportError: Could not find 'cudart64_100.dll'
    1
    简答:

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

    搞清自己的tensorflow以及CUDA版本

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

    一. 错误类型原因

    问题是找不到cuda系的dll文件的模块,提示需要下载CUDA10.0,那么首先查看cuda的路径下是否存在该文件:
    通过C:Program FilesNVIDIA GPU Computing ToolkitCUDA路径访问cuda,在其bin目录下查找是否有cudart64_100.dll模块
    如果有,则查看环境变量是否添加;如果没有,可能就是cuda版本和tensorflow版本的匹配问题

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

    进入命令行环境下,首先通过python --version确定自己的python版本是3.6
    再通过pip list查看已经安装好的tensorflow版本,笔者本人的版本是1.14
    通过nvcc --version查看cuda版本,笔者之前的cuda版本是V9.0.176;

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

    可以看到当Tensorflow的版本>=1.13时,CUDA的版本需要是10.0,同时cudnn版本号需要大于7.4.1;
    这里笔者选用了将cuda的版本卸载,以适用tensorflow版本
    直接进入C:Program FilesNVIDIA GPU Computing ToolkitCUDA路径下将文件夹删除,并且将环境变量删除。
    找到了一个高中生搭的服务器下载链接,这里的下载速度会快一些:
    tensorflow相关下载链接

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

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

    ImportError: Could not find 'cudnn64_7.dll'
    1
    此提示表示缺少cudnn模块的dll文件,根据tensorflow文档,对应tensorflow1.13版本以上,cudnn需要是>7.4.1的版本,下载cudnn版本,cudnn的目录结构如下:

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

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

    此时应该是没问题了吧,笔者继续运行import tensorflow, MMP, 并没有顺利运行,出现了提示'descriptor'的错误:

    ImportError: cannot import name 'descriptor'
    1
    stackflow上的tf安装问题汇总

    通过stackflow上查找,发现该错误出现的原因是因为protobuf和tf的版本不对应,因为tf和pro之间存在依赖关系,于是笔者首先uninstall pro, 接着uninstall tf,最后重新install tf ,tf会自动对依赖项pro进行安装。
    中间出现了一点小插曲,笔者是用virtualenv的py虚拟环境,于是安装好了版本后,依然会出现'descriptor'的错误,于是自己在原生py环境中测试了下,发现可以导入tf。那么原因就是可能因为系统找不到py虚拟环境中的sitepackage,将虚拟环境的py-bin下的目录设置为环境变量,即可正常调用。
    ---------------------

  • 相关阅读:
    Interview with BOA
    Java Main Differences between HashMap HashTable and ConcurrentHashMap
    Java Main Differences between Java and C++
    LeetCode 33. Search in Rotated Sorted Array
    LeetCode 154. Find Minimum in Rotated Sorted Array II
    LeetCode 153. Find Minimum in Rotated Sorted Array
    LeetCode 75. Sort Colors
    LeetCode 31. Next Permutation
    LeetCode 60. Permutation Sequence
    LeetCode 216. Combination Sum III
  • 原文地址:https://www.cnblogs.com/ly570/p/11186727.html
Copyright © 2011-2022 走看看