ubuntu14.04 安装 tensorflow(附一系列报错方案)

2024-05-07 16:48

本文主要是介绍ubuntu14.04 安装 tensorflow(附一系列报错方案),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果内容侵权的话,联系我,我会立马删了的~因为参考的太多了,如果一一联系再等回复,战线太长了~~蟹蟹给我贡献技术源泉的作者们~

 

最近准备从理论和实验两个方面学习深度学习,所以,前面装好了Theano环境,后来知乎上看到这个回答,就调研了一下各个深度学习框架,我没有看源码,调研也不是很深入,仅仅是为了选择深度学习框架做的一个大概了解~

1. 如何选择深度学习框架?

参考资料如下:

 1. https://github.com/zer0n/deepframeworks/blob/master/README.md

 2. http://blog.csdn.net/qiexingqieying/article/details/51734347

 3. https://www.zhihu.com/question/41907061

 4. http://www.open-open.com/news/view/1069a70

 5. http://www.kuqin.com/shuoit/20151124/349098.html

博客2总结如下:

库名称开发语言速度灵活性文档适合模型平台上手
Caffec++/cuda一般全面CNN所有系统中等
TensorFlowc++/cuda/python中等中等CNN/RNNLinux\OSX
MXNetc++/cuda全面CNN所有系统中等
Torchc/lua/cuda全面CNN/RNNLinux\OSX中等
Theanopython/c++/cuda中等中等CNN/RNNLinux\OSX

(1)Caffe

第一个主流的工业级深度学习工具。它开始于2013年底,由UC Berkely的 Yangqing Jia老师编写和维护的具有出色的卷积神经网络实现。在计算机视觉领域Caffe依然是最流行的工具包。它有很多扩展,但是由于一些遗留的架构问题,不够灵活且对递归网络和语言建模的支持很差。

(2)TensorFlow

Google开源的其第二代深度学习技术——被使用在Google搜索、图像识别以及邮箱的深度学习框架。是一个理想的RNN(递归神经网络)API和实现,TensorFlow使用了向量运算的符号图方法,使得新网络的指定变得相当容易,支持快速开发。缺点是速度慢,内存占用较大。(比如相对于Torch)

(3)MXNet

是李沐和陈天奇等各路英雄豪杰打造的开源深度学习框架,是分布式机器学习通用工具包 DMLC 的重要组成部分。它注重灵活性和效率,文档也非常的详细,同时强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。
(4)Torch
Facebook力推的深度学习框架,主要开发语言是C和Lua。有较好的灵活性和速度。它实现并且优化了基本的计算单元,使用者可以很简单地在此基础上实现自己的算法,不用浪费精力在计算优化上面。核心的计算单元使用C或者cuda做了很好的优化。在此基础之上,使用lua构建了常见的模型。缺点是接口为lua语言,需要一点时间来学习。
(5)Theano
2008年诞生于蒙特利尔理工学院,主要开发语言是Python。Theano派生出了大量深度学习Python软件包,最著名的包括 Blocks和 Keras。Theano的最大特点是非常的灵活,适合做学术研究的实验,且对递归网络和语言建模有较好的支持,缺点是速度较慢。
知乎用户 杜客回答如下:
斯坦福的CS231n - Convolutional Neural Networks for Visual Recognition(Winter 2016)中的Lecture 12中,由课程讲师@ Justin Johnson详细介绍了他个人对于主流第三方库的实践经历和看法,时间新,干货多:


然后他强调了几个 用例问题
1.Extract AlexNet or VGG features? Use Caffe
2.Fine tune AlexNet for new classes? Use Caffe
3.Image caption with finetuning?

-> Need pretrained models (Caffe, Torch, Lasagne)

-> Need RNNs (Torch or Lasagne)
-> Use Torch or Lasagna

4.Segmentation?(Classify every pixel)

-> Need pretrained model (Caffe, Torch, Lasagna)-> Need funny loss function
-> If loss function exists in Caffe: Use Caffe
-> If you want to write your own loss: Use Torch

5.Object Detection?

-> Need pretrained model (Torch, Caffe, Lasagne)
-> Need lots of custom imperative code (NOT Lasagne)-> Use Caffe + Python or Torch

6.Language modeling with new RNN structure?

-> Need easy recurrent nets (NOT Caffe, Torch)

-> No need for pretrained models
-> Use Theano or TensorFlow

7.Implemente BatchNorm?

-> Don’t want to derive gradient? Theano or TensorFlow

-> Implement efficient backward pass? Use Torch

最后,JJ比较个人化地给出了自己的偏好:

 

第一部分对于这5个框架的介绍讲述了一些概念以及基本优缺点,首先我的使用情况就是文本训练学习,可能需要用到RNN模型,而且我比较熟悉python一些,C++以及lua都不太会,所以基本确定要了解Theano 和 Tensorflow这两个框架,杜客在知乎回答的内容中,选择tensorflow还是Theano,可以看出大牛介绍的主要还是图像领域的一些应用,然后第6点,Language modeling with new RNN structure也可以基本确定我们需要这两个框架。

然后选择谁?虽然Caffe的作者贾扬清老师说“都是基于Python的符号运算库,TensorFlow显然支持更好,Google也比高校有更多的人力投入。Theano的主要开发者现在都在Google,可以想见将来的工程资源上也会更偏向于TF一些”。知乎用户张昊说“ 1. 看你做什么application 2. 看哪个framework能够提供给你最多与你所做的问题相关的资源。举个例子,比如做language相关,在小数据上跑跑实验的话我觉得theano不错,网上能找到的相关资源(比如其他相关paper的实现,model)很多。如果做视觉相关的那theano的资源跟caffe和torch比就少多了,所以caffe和torch可能会是更好的选择。TF也不错,最近Google promote的很厉害,估计随着用的人越来越多在一两年内资源也会越来越多。”鉴于我目前只是学习一下,所以决定使用Theano ,但是今天还是花了蟹时间安装Tensorflow。

 

2.安装Tensorflow

Ubuntu14.04+cuda7.5+cudnnv4+Tensorflow

基本根据官方给的教程就可以安装了https://www.tensorflow.org,然后学校有时候打不开界面,所以也可以参考这里。

我选择的pip install方式。

$ sudo apt-get install python-pip python-dev

其实这些工具前面好像安装过了,但是怕有问题就再执行一遍,选择符合自己情况的命令执行下去。

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl

出现错误,在教程里的common problems中说:

...
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

Solution: Download the wheel manually via curl or wget, and pip install locally.所以使用wget命令下载再执行安装。

wget https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl
sudo pip install tensorflow-0.9.0-cp27-none-linux_x86_64.whl

接着测试tensorflow.

Open a terminal and type the following:

复制代码
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>
复制代码

没有问题。

$ python -c 'import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))'

结果如下:

测试运行:

$ python -m tensorflow.models.image.mnist.convolutional

出现错误:

复制代码
lvxia@kde:~$ python -m tensorflow.models.image.mnist.convolutional
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally
Extracting data/train-images-idx3-ubyte.gz
Traceback (most recent call last):File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main"__main__", fname, loader, pkg_name)File "/usr/lib/python2.7/runpy.py", line 72, in _run_codeexec code in run_globalsFile "/usr/local/lib/python2.7/dist-packages/tensorflow/models/image/mnist/convolutional.py", line 316, in <module>tf.app.run()File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 30, in runsys.exit(main(sys.argv))File "/usr/local/lib/python2.7/dist-packages/tensorflow/models/image/mnist/convolutional.py", line 128, in maintrain_data = extract_data(train_data_filename, 60000)File "/usr/local/lib/python2.7/dist-packages/tensorflow/models/image/mnist/convolutional.py", line 75, in extract_databuf = bytestream.read(IMAGE_SIZE * IMAGE_SIZE * num_images)File "/usr/lib/python2.7/gzip.py", line 261, in readself._read(readsize)File "/usr/lib/python2.7/gzip.py", line 308, in _readself._read_eof()File "/usr/lib/python2.7/gzip.py", line 347, in _read_eofhex(self.crc)))
IOError: CRC check failed 0xe1d362ba != 0x90dd462eL
复制代码

 https://github.com/tensorflow/tensorflow/issues/1319中的解决方式:

因此,进入convolutional.py所在目录,修改文件权限,然后将WORK_DIRECTORY的data修改为 /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/mnist/data 即可。

sudo chmod 777 convolutional.py

重新执行:

python -m tensorflow.models.image.mnist.convolutional

还是出现错误

E tensorflow/stream_executor/cuda/cuda_dnn.cc:286] Loaded cudnn library: 5005 but source was compiled against 4007. If using a binary install, upgrade your cudnn library to match. If building from sources, make sure the library loaded matches the version you specified during compile configuration.

可以看到是cudnn版本不一致的问题导致的。

然后官网上有这么一句“Download cuDNN v4 (v5 is currently a release candidate and is only supported when installing TensorFlow from sources).”,所以我就下载了cuDNN v4。

tar xvzf cudnn-7.0-linux-x64-v4.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-7.5/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-7.5/lib64
sudo chmod a+r /usr/local/cuda-7.5/include/cudnn.h /usr/local/cuda-7.5/lib64/libcudnn*

我忘记以前怎么操作的了,我的/esr/local文件夹下有两个cuda文件,一个是cuda一个是cuda-7.5.这里我把他放在cuda7.5文件夹下面。

然后执行上述命令就没有问题了。

 

中间晕晕呼呼还尝试了一遍源代码安装方式,就是官网上的install from sources,基本步骤也按照上面来,结合 博客 博客 就可以了,碰到蟹问题,基本google能找出解决办法的。

这篇博客讲述了tensorflow源码目录结构的一些知识。

 

 

这里记录几个小问题和解决方法:

(1)OSError - Errno 13 Permission denied 

chown -R user-id:group-id /path/to/the/directory

(2)AttributeError: type object 'NewBase' has no attribute 'is_abstract'

sudo pip install six --upgrade --target="/Library/Python/2.7/site-packages/"

(3)./configure 在 tensorflow目录下,这个在源代码安装方式中用到这个配置了。

这篇关于ubuntu14.04 安装 tensorflow(附一系列报错方案)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967863

相关文章

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日