TensorFlow 起飛之旅 · 安裝 · demo

jasperyang發表於2017-07-06

為什麼要寫

一開始以為安裝tensorflow是一件很方便的事,等裝完了之後已經花費了我兩天的時間,除了粗心意外沒有別的解釋了,不要說我智商低,我自己知道就好。。。

tensorflow更新之後確實是強大了許多,在各種方面都超過了caffe,mxnet等一系列深度學習框架,在這裡我不想去吹捧,懶得貼資料了。

開始安裝

準備階段

為了方便起見,事先安裝一個Anaconda是很好的~怎麼裝很簡單,google it.

這個階段我們需要安裝好tensorflow所需的各種環境,眾所周知,tensorflow是基於cuda程式設計的,依賴於cudNN,並且大部分框架都是這個套路,應為基座都是NVIDIA大佬,所以在硬體的計算能力以及記憶體分配上各種框架差別不大。至於AMD現在支援的openCL還沒有很流行,我還是挺喜歡農民卡的。

以上所講,就是為了讓大家理解為什麼需要安裝下面的這種前置配置。

官網提示:

  • CUDA® Toolkit 8.0. For details, see NVIDIA`s documentation. Ensure that you append the relevant Cuda pathnames to the LD_LIBRARY_PATH environment variable as described in the NVIDIA documentation.

  • The NVIDIA drivers associated with CUDA Toolkit 8.0.

  • cuDNN v5.1. For details, see NVIDIA`s documentation. Ensure that you create the CUDA_HOME environment variable as described in the NVIDIA documentation.

  • GPU card with CUDA Compute Capability 3.0 or higher. See NVIDIA documentation for a list of supported GPU cards.

  • The libcupti-dev library, which is the NVIDIA CUDA Profile Tools Interface. This library provides advanced profiling support. To install this library, issue the following command:

    $ sudo apt-get install libcupti-dev

    挺好理解的,一共其實也就三個部分:

1. 安裝Cuda

CUDA是NVIIDA推出的使用GPU資源進行通用計算的SDK,CUDA的安裝包裡一般整合了顯示卡驅動,我們直接去官網下載 http://developer.nvidia.com/c…

在安裝前,我們需要暫停當前NVIDIA驅動的X server

sudo init 3

之後

chmod u+x cuda_8.0.44_linux.run
sudo ./cuda_8.0.44_linux.run

接下來是CUDA安裝過程。
基本都很好理解我就不細說了。奉勸你最好不要改預設的安裝路徑,不然後面好多需要修改!~

2.安裝cuDNN

這是NVIDIA推出的深度學習中CNN和RNN的高度優化的實現。
連結: http://developer.nvidia.com/r…

cd /usr/local  先進這個目錄,前提是你之前安裝的cuda在這個目錄下,應為等等就是向cuda的lib裡新增東西
sudo tar -xzvf ~/downloads/cudnn-8.0-linux-x64-v5.1.tgz

這樣就完成了安裝,接下來修改環境變數

vim ~/.bashrc 
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-8.0
export PATH=/usr/local/cuda-8.0/bin:$PATH
source ~/.bashrc

tips: 如果你使用的是zsh,那麼需要修改的是~/.zshrc

3. 好了,第三步很簡單,就是執行一個命令

$ sudo apt-get install libcupti-dev


正式開始

準備工作做完了,現在我們開始編譯安裝 tensorflow

確認你電腦裡有gcc和bazel,如果沒有就apt-get一下。

下載Tensorflow 1.0.0-rc0的程式碼,然後 ./configure 編譯安裝,一路綠燈直到:

Please note that each additional compute capability significantly increases your build time and binary size.
[Default is: "3.5,5.2"]

這裡不同的GPU可能有不同的compute capability,我們可以在官網查到具體樹枝,比如GTX 1080和新Titan X是6.1 ,而GTX 980 和舊版的GTX Titan X 是 5.2

耐心等待…

結束之後輸入下面命令。

bazel build --copt=-match=native -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip install /tmp/tensorflow_pkg/tensorflow-1.0.0rc0-cp35-cp35m-linux_86_64.whl

如果你是python2上面就是cp27-cp27m

大功告成!!!

如果安裝過程中出現什麼問題查不到解決辦法,可以向我詢問,也許能提供幫助~

Test

下面我們就去jupyter裡跑兩個例子。

拉普拉斯變換

import tensorflow as tf
import numpy as np
x=np.array([[1,1,1],[1,-8,1],[1,1,1]])
w=tf.Variable(initial_value=x)
sess=tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(w))

相乘

import tensorflow as tf 
a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)
add = tf.add(a, b)
mul = tf.mul(a, b)

with tf.Session() as sess:
    print(`a+b=`,sess.run(add, feed_dict={a: 2, b: 3}))
    print(`a*b=`,sess.run(mul, feed_dict={a: 2, b: 3}))
    

“/cpu:0”: 機器的 CPU.

“/gpu:0”: 機器的第一個 GPU, 如果有的話.

“/gpu:1”: 機器的第二個 GPU, 以此類推.

給個非常好的連結,tensorflow的官方文件 http://docs.pythontab.com/ten…

此外,nvidia-smi 來看顯示卡執行啊,配置啊之類的有個很好的說明:http://www.microway.com/hpc-t…

that`a all

相關文章