热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TensorFlow1.8.0+cuda9.0+cudnn7.1.2

写在前面:tensorflow也可以用conda一条龙安装,如:condainstalltensorflow-gpu2.1.0会自动安装

写在前面:tensorflow也可以用conda一条龙安装,如:

conda install tensorflow-gpu==2.1.0

会自动安装其他依赖包,包括cudatoolkit10.1和cudnn7.6,如果至此问题可以解决,下面的可以不用看了。
————————————————————————————————
记录一个折磨我三天的小(da)问题
很早以前就被cuda、cudnn、显卡驱动、TensorFlow、pytorch等等的版本之类的问题困扰,不同的代码可能会需要不同版本的包,直到有一天我使用了anaconda(见Ubuntu安装Anaconda),按不同代码的版本需求安装不同的包(见cuda、cudnn、pytorch、tensorflow安装)。平静了很久很久以后,又出现了一个新的问题。
有个代码之前能够成功运行,虽然这个环境的cuda、cudnn、TensorFlow版本一直都有问题。下面我记录一下我几个环境的包的版本。
环境A:TensorFlow-gpu1.7.0+cuda8.0+cudnn7.0.5
环境B:TensorFlow-gpu1.7.0+cuda8.0+cudnn7.0.5
环境C:TensorFlow-gpu1.7.0+cuda9.0+cudnn7.6.5
实际上环境A和环境B是一致的,根据TensorFlow、cuda、cudnn的版本对应关系(见cuda、cudnn、pytorch、tensorflow安装)TensorFlow1.7.0配套的应该为cuda9和cudnn7,环境C符合这个规则。
使用环境C运行代码报错:

E tensorflow/stream_executor/cuda/cuda_dnn.cc:396] Loaded runtime CuDNN library: 7650 (compatibility version 7600) but source was compiled with 7005 (compatibility version 7000).
If using a binary install, upgrade your CuDNN library to match.
If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.

这个TensorFlow1.7.0需要的cudnn7的版本为cudnn7.0的,7.6不适用,于是我就装上cudnn7.0,代码如下:

conda install cudnn=7.0.5 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/

但是conda要强行将cuda9.0换成cuda8.0:

The following NEW packages will be INSTALLED:
cudnn: 7.0.5-cuda8.0_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main The following packages will be DOWNGRADED:
cudatoolkit: 9.0-h13b8566_0 --> 8.0-3
Proceed ([y]/n)?

要装cudnn7.0只得选y,这样cuda就变成9.0了,无奈,就这样得到了环境A和B。
虽然这个版本对应有问题,但是可以运行。而且非常奇怪,即使分配了gpu,环境B只能用cpu运行tensorflow。而环境A只能用gpu运行tensorflow,即使我指定用cpu运行,也要找gpu。(确定两个环境的TensorFlow-gpu版本相同)
就这样我一直睁一只眼闭一只眼,没有管他们,直到昨天,环境A突然报错:

ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

好家伙,又突然需要cuda9.0,就像一头沉睡的狮子,小丑在他身上跳了几个月的舞,也不知道被什么突然惊醒了。同样的代码,同样的环境,只隔一天就完全不能跑了。
cuda9.0和cudnn7.0.5又不能在conda环境中同时存在(不在conda环境中应该是可以共存,但是这样安装起来非常不方便也不便于管理),来回装了几遍cuda9.0和cudnn7.0和tensorflow1.7,都无济于事。
将tensorflow退回1.4,则报错:

ImportError: libcublas.so.6.0: cannot open shared object file: No such file or directory

cudnn7.1是conda环境中和cuda9.0兼容的最低版本,但是使用cudnn7.1也报错:

E tensorflow/stream_executor/cuda/cuda_dnn.cc:396] Loaded runtime CuDNN library: 7102(compatibility version 7100) but source was compiled with 7005 (compatibility version 7000).
If using a binary install, upgrade your CuDNN library to match.
If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.

突然注意到tensorflow1.5-1.12这几个版本对应的都是cuda9和cudnn7,想到尝试tensorflow-gpu-1.8:

pip install tensorflow-gpu==1.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

成功,与cudnn7.1完美兼容,问题解决。
最终成功的环境:TensorFlow1.8.0+cuda9.0+cudnn7.1.2


推荐阅读
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • Window10+anaconda+python3.5.4+ tensorflow1.5+ keras(GPU版本)安装教程 ... [详细]
  • 程序分析与优化9附录XLA的缓冲区指派
    本章是系列文章的案例学习,不属于正篇,主要介绍了TensorFlow引入的XLA的优化算法。XLA也有很多局限性,XLA更多的是进行合并,但有时候如果参数特别多的场景下,也需要进行 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • 开发笔记:MyBatis学习之逆向工程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis学习之逆向工程相关的知识,希望对你有一定的参考价值。转载:http://w ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
author-avatar
秦风2502869477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有