ubuntu14.04 安裝 tensorflow

若是內容侵權的話,聯繫我,我會立馬刪了的~由於參考的太多了,若是一一聯繫再等回覆,戰線太長了~~蟹蟹給我貢獻技術源泉的做者們~html

 

最近準備從理論和實驗兩個方面學習深度學習,因此,前面裝好了Theano環境,後來知乎上看到這個回答,就調研了一下各個深度學習框架,我沒有看源碼,調研也不是很深刻,僅僅是爲了選擇深度學習框架作的一個大概瞭解~python

1. 如何選擇深度學習框架?linux

參考資料以下:c++

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

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

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

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

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

博客2總結以下:架構

庫名稱 開發語言 速度 靈活性 文檔 適合模型 平臺 上手
Caffe c++/cuda 通常 全面 CNN 全部系統 中等
TensorFlow c++/cuda/python 中等 中等 CNN/RNN Linux\OSX
MXNet c++/cuda 全面 CNN 全部系統 中等
Torch c/lua/cuda 全面 CNN/RNN Linux\OSX 中等
Theano python/c++/cuda 中等 中等 CNN/RNN Linux\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軟件包,最著名的包括 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, 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_code exec code in run_globals File "/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 run sys.exit(main(sys.argv)) File "/usr/local/lib/python2.7/dist-packages/tensorflow/models/image/mnist/convolutional.py", line 128, in main train_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_data buf = bytestream.read(IMAGE_SIZE * IMAGE_SIZE * num_images) File "/usr/lib/python2.7/gzip.py", line 261, in read self._read(readsize) File "/usr/lib/python2.7/gzip.py", line 308, in _read self._read_eof() File "/usr/lib/python2.7/gzip.py", line 347, in _read_eof hex(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目錄下,這個在源代碼安裝方式中用到這個配置了。

相關文章
相關標籤/搜索