ubuntu16+python3.7+tensorflow-gpu安装过程_pu扑朔迷离的博客-程序员秘密

技术标签: Tensorflow  python  ubuntu  服务器  Pyhton  tensorflow-gpu  

安装情况

配置一台ubuntu16的命令行服务器,无脑conda安装tensorflow-gpu后,测试时我只是import tensorflow,看没有问题就没继续管了。结果后来发现服务器无法启动gpu跑模型,本文记录下崎岖的解决问题的过程。

出现错误

在我用conda和pip移除了所有tensorflow依赖以后,验证gpu时出现以下错误:

tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version

当时傻傻的准备卸载1.14改装1.13,后来证明依然不行

判定我的CUDA版本有问题(这里花费了不少时间在弄服务器的网)
本机cuda9 cudnn7.1.3
我的tensorflow版本是1.14.0,找不到与cuda对应关系
在这里插入图片描述
tensorflowgpu与各个版本需要的CUDA版本以及Cudnn的对应关系如上表

这里基本确定自己是要更新cuda了

列计划

干货
给了我很大启发,我很多步骤都是从此来的。
我直接从安装cuda10.0开始操作
在这里插入图片描述
这里第二步有个是需要自己填写的

cd /var
ls -a

看到cuda-repo的文件夹,把名字拷贝过来代替version即可

cuda安装问题

1 dpkg的问题

W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise/InRelease  

W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-updates/InRelease  

W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-backports/InRelease 

这里是因为当时我用迅雷下载东西导致网速变慢,连不上ubuntu服务器了

-----------------------(这里有误,大家看看就好)-----------------------------------------------------------------------------------------------
后来添加阿里云的ubuntu源和dns

sudo gedit /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ raring main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ raring-security main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ raring-updates main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ raring-proposed main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ raring-backports main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ raring main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ raring-security main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ raring-updates main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ raring-proposed main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ raring-backports main restricted universe multiverse  

sudo vi /etc/resolv.conf
#阿里云的DNS服务器
nameserver 223.5.5.5  
nameserver 223.6.6.6

结果更加悲剧,出现找不到指定源的问题。

E: Failed to fetch http://mirrors.aliyun.com/ubuntu/dists/raring/main/source/Sources  404  Not Found

-------------------------------------(雾)-------------------------------------------------------------------------------------------------------------
后来我关了迅雷后,把所有东西恢复,即可安装。
期间出现了

/sbin/ldconfig.real: /usr/local/lib is not a known library type

的问题,事实证明不影响后面的结果,我就没管。

2 安装包的问题
期间由于自己的愚昧,把系统版本记成18了 结果先下载了18的cuda10.0
后来重新下载16的cuda后,dpkg时出现了

dpkg: error processing archive xxx.deb (--unpack):
 trying to overwrite 'xxx', which is also in packagexxx

左思右想,明明把之前的解压包删除了,但还是出这个错,最后莽夫做法,直接强制安装,解决问题,命令如下:

sudo dpkg -i --force-overwrite xxx.deb

重启系统

shutdown -r now 立刻重启(root用户使用)

cudnn

安装比较正常。

tensorflow-gpu

最后没有用conda,而是用pip解决问题

pip install tensorflow-gpu==1.13.1

结果出现了一屏幕红字

最后更新pip

 pip install --upgrade pip

再安装就没问题了

验证

import tensorflow as tf
# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

后续(一周后)

使用tensorflow1.13跑网络时,会莫名出现错误

ValueError: None values not supported.

发现是在算梯度时出现的错误
上网查到的解决办法都不能解决我的错误(参考链接

/Users/laox1ao/anaconda/lib/python2.7/site-packages/keras/engine/training.pyc in _make_train_function(self)
    988                     training_updates = self.optimizer.get_updates(
    989                         params=self._collected_trainable_weights,
--> 990                         loss=self.total_loss)
    991                 updates = self.updates + training_updates
    992                 # Gets loss and metrics. Updates weights at each call.

是由于网络存在ops的梯度为None,导致图的梯度流断裂(disconnected),检查发现是keras.backend.switch操作在以tensorflow为backend的情况下无法计算梯度,tf.gradients()返回结果为None

做了些对比实验,发现同样的数据源和同样的代码tensorflow1.14和1.12都不会报错,推测可能是该版本没有对这个场景做特殊处理。

于是着手安装1.14
经过无数弯路,最终安装了cuda10.1+tensorflow-gpu1.14.0
证实结果可行。

结论

别贪图简单就用conda安装tensorflow-gpu
首先应该搞清楚cuda版本再确定tensorflow版本
其次pip更加靠谱一些
最后再次感谢博主指路! 链接

纪念啥都没干,光配置环境的一天

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bluehatihati/article/details/101314362

智能推荐

使用迭代器来遍历HashMap_坚持学习的猿的博客-程序员秘密

通过迭代器来遍历HashMap,演示一下迭代器Iterator的使用Map<Integer, String> map = new HashMap<>();map.put(1, "java");map.put(2, "c++");map.put(3, "php");Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();while (iterator.hasN

(一)ORBSLAM2主要配置_weixin_30729609的博客-程序员秘密

  (1)ORBSLAM2文件夹里面有个build.sh文件,里面主要是编译时终端需要执行的命令,这里把它们放到.sh文件中统一执行。  (2)阅读ORBSLAM2的CmakeList可以知道运行ORBSLAM2需要相关的依赖库,具体如下: Eigen Pangolin OpenCV g2o(ORBSLAM2自带) DBoW2(ORBSLAM2自带)...

思科 CCNA2 第八章测验答案_下列哪项陈述描述了 lan 的物理拓扑?_香菜cookie的博客-程序员秘密

1.以下哪种功能会在网络中发送模拟数据并测量多个网络位置之间的性能?选择一项:LLDPIP SLA系统日志SPAN反馈Refer to curriculum topic: 8.2.1IP SLA 使用生成的流量来测量两个位置、两个网络设备之间或通过多个网络路径的网络性能。IP SLA 可用于提供与网络性能相关的数据和排除拥塞相关故障。正确答案是:IP SLA2.哪个命令运行其他 show 命令来生成许多页详细的故障排除信息?选择一项:show ip cacheshow protoc

微软官方卸载Office 2003、2007、2010专用套件下载_weixin_34185320的博客-程序员秘密

无法通过“控制面板”卸载 Office 2003、Office 2007 或 Office 2010 套件的情况下,如何才能将其卸载? 虽然 Windows 安装程序清理实用程序(Windows Installer Clean Up)解决了一些安装问题,但有时它会损坏计算机上安装的其他组件。因此,已从 Microsoft 下载中心删除该工具。本文中的修复问题解决方案能够...

在游戏上第3部分完美的信息游戏_weixin_26642481的博客-程序员秘密

Previous article 上一篇文章 The economics literature distinguishes the quality of a game’s information (perfect vs. imperfect) from the completeness of a game’s information (complete vs. incomplete). Perf...

关于selenium在爬虫中的应用_程序猿的冒险谭的博客-程序员秘密

这是笔者在selenium中爬取哔哩哔哩鬼畜区的一个案例,注释十分清晰,基本上每一个函数都有注释。希望对学习这一块的同志有帮助。import reimport osimport sysimport you_getfrom selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsfrom multiprocessing.dummy import Poolfrom lxml import etre

随便推点

关于Oracle TNS_ADMIN环境变量_liuyuhua0066的博客-程序员秘密

转自:http://blog.csdn.net/pan_tian/article/details/7699599 前言:这两天安装了另外的一个Oracle产品,重启后,发现监听Listener起不来,重装后正常了,配置网络服务和监听后,在 X:\oracle\product\10.2.0\db_1\NETWORK\ADMIN目录下却找不到listener.ora和tnsnames.or

SDNU 1221_sdnu第1082题_Xiao-wei1998的博客-程序员秘密

戳一戳 --> 拦截导弹最长不上升序列Description某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截...

CSS 居中之text-align与margin的区别_text-align和_卑微小童的博客-程序员秘密

区分 text-align与margin两种对齐的方式text-aligntext-align 属性规定元素中的文本的水平对齐方式。注意:其文本内容也包括其所有子孙元素中的文本margin:0 auto我们先理解一下auto,其含义因元素类型和上下文而异,在边距中,auto可以表示两种情况:占用可用空间或0 px。这两个将为元素定义不同的布局。“自动”占用可用空间**这是我们利用auto最常见的用法。通过分配auto元素的左右边距,它们可以平等地占据元素容器中的可用水平空间 - 因此

信息学奥赛一本通 1039:判断数正负 | OpenJudge NOI 1.4 01_一本通1039_君义_noip的博客-程序员秘密

【题目链接】ybt 1039:判断数正负OpenJudge NOI 1.4 01:判断数正负【题目考点】1. if…else if…else语句if(判表达式1){语句段1}else if(判断表达式2){语句段2}…else{语句段n}如果判断表达式1的值为true,运行语句段1。否则,看判断表达式2的值是否为true,若是,则运行语句2,否则再看下一个判断表达式。如果所有的判断表达式的值都是false,运行else下的语句段。【题解代码】解法1:#include<bi

cfl3d linux 编译,CMake build system for cfl3d_weixin_39794340的博客-程序员秘密

@@ -0,0 +1,379 @@---title: cfl3d+openmpi+gfortran编译和安装---#简介cfl3d用intel的编译器和mpi会比较容易编译,不再详述。本文主要讲述用gfortran的情况cfl3d依赖于cgns, fortran编译器和mpi- mpi:只要是符合mpi1.1的标准的MPI应该都可以的,mpich, openmpi, intelmpi都可以- fo...

e语言mysql怎么放在超级列表框,『易语言怎么将超级列表框的内容保存到excel或者Access!』..._今日温度适宜的博客-程序员秘密

易语言把编辑框里的内容保存到Excel里个人建议:1、建议选据库成你要的修改、添加、查作2、添加一个列表框,可以轻松直观的处理数据3、如果有使用Excel的需求,那就弄一个导出按键这样才能是一个完整的软件,你用Excel直接做,肯定没有用数据库来的快,来得稳定。具体代码没法提供,因为功能太多,需要斟酌的地方也多,太花时间了。个人建议希望对你有帮助易语言怎么将超级列表框的内容保存到excel或者Ac...

推荐文章

热门文章

相关标签