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總結如下:

庫名稱 開發語言 速度 靈活性 文檔 適合模型 平台 上手
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目錄下,這個在源代碼安裝方式中用到這個配置了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM