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

前端之家收集整理的这篇文章主要介绍了ubuntu14.04 安装 tensorflow(附一系列报错方案)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

参考资料如下:

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

2.http://www.jb51.cc/article/p-hufaviyg-gz.html

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总结如下:

名称@H_404_6@ 开发语言@H_404_6@ 速度@H_404_6@ 灵活性@H_404_6@ 文档@H_404_6@ 适合模型@H_404_6@ 平台@H_404_6@ 上手@H_404_6@
Caffe@H_404_6@ c++/cuda@H_404_6@ 快@H_404_6@ 一般@H_404_6@ 全面@H_404_6@ CNN@H_404_6@ 所有系统@H_404_6@ 中等@H_404_6@
TensorFlow@H_404_6@ c++/cuda/python@H_404_6@ 中等@H_404_6@ 好@H_404_6@ 中等@H_404_6@ CNN/RNN@H_404_6@ Linux\OSX@H_404_6@ 难@H_404_6@
MXNet@H_404_6@ c++/cuda@H_404_6@ 快@H_404_6@ 好@H_404_6@ 全面@H_404_6@ CNN@H_404_6@ 所有系统@H_404_6@ 中等@H_404_6@
Torch@H_404_6@ c/lua/cuda@H_404_6@ 快@H_404_6@ 好@H_404_6@ 全面@H_404_6@ CNN/RNN@H_404_6@ Linux\OSX@H_404_6@ 中等@H_404_6@
Theano@H_404_6@ python/c++/cuda@H_404_6@ 中等@H_404_6@ 好@H_404_6@ 中等@H_404_6@ CNN/RNN@H_404_6@ Linux\OSX@H_404_6@ 易@H_404_6@

(1)Caffe

第一个主流的工业级深度学习工具。它开始于2013年底,由UC Berkely的 YangqingJia老师编写和维护的具有出色的卷积神经网络实现。在计算机视觉领域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软件包,最著名的包括 BlocksKeras。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,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@H_404_6@

Ubuntu14.04+cuda7.5+cudnnv4+Tensorflow

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

我选择的pip install方式。

@H_301_318@$ sudo apt-get@H_404_6@ install python-pip python-dev

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

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

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

@H_301_318@... SSLError: [SSL: CERTIFICATE_VERIFY_Failed] certificate verify Failed@H_404_6@

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

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

接着测试tensorflow.

Open a terminal and type the following:

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

没有问题。

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

结果如下:

测试运行:

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

出现错误

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

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

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

@H_301_318@sudo chmod 777@H_404_6@ convolutional.py

重新执行:

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

还是出现错误

@H_301_318@E tensorflow/stream_executor/cuda/cuda_dnn.cc:286@H_404_6@] Loaded cudnn library: 5005@H_404_6@ but source was compiled against 4007@H_404_6@. If using@H_404_6@ a binary install,upgrade your cudnn library to match. If building from@H_404_6@ 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。

@H_301_318@tar xvzf cudnn-7.0@H_404_6@-linux-x64-v4.tgz sudo cp cuda@H_404_6@/include/cudnn.h /usr/local/cuda-7.5/include sudo cp cuda@H_404_6@/lib64/libcudnn* /usr/local/cuda-7.5/lib64 sudo chmod a@H_404_6@+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@H_404_6@

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

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

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

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

猜你在找的Ubuntu相关文章