<u>版權所有,轉載請注明出處</u>
其它相關文章:
tensorflow學習筆記系列(一):前言
tensorflow學習筆記系列(三):tensorflow入門/基本使用
tensorflow學習筆記系列(四):tensorflow實現自動編碼機
tensorflow學習筆記系列(五):tensorflow實現多層感知機
tensorflow學習筆記系列(六):tensorflow實現卷積神經網絡
tensorflow學習筆記系列(七):神經網絡的一些理論知識
tensorflow學習筆記系列(八):TensorBoard介紹
tensorflow學習筆記系列(九):tensorflow源碼解析
- <u>說明:</u>
- 目前已完成(一)~(三)
- 該內容為本人學習tensorflow過程中的筆記,皆為個人理解,難免會存在各種問題,有不當之處請大家批評指正!
一. tensorflow簡介
TensorFlow是谷歌基于DistBelief進行研發的第二代人工智能學習系統,其命名來源于本身的運行原理。Tensor(張量)意味著N維數組,Flow(流)意味著基于數據流圖的計算,TensorFlow為張量從流圖的一端流動到另一端計算過程。TensorFlow是將復雜的數據結構傳輸至人工智能神經網中進行分析和處理過程的系統。(摘自百度百科)
TensorFlow可被用于語音識別或圖像識別等多項機器深度學習領域,對2011年開發的深度學習基礎架構DistBelief進行了各方面的改進,它可在小到一部智能手機、大到數千臺數據中心服務器的各種設備上運行。TensorFlow將完全開源,任何人都可以用。(摘自百度百科)
以下內容引用自TensorFlow中文社區。
-
關于 TensorFlow
TensorFlow? 是一個采用數據流圖(data flow graphs),用于數值計算的開源軟件庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯系的多維數據數組,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬于Google機器智能研究機構)的研究員和工程師們開發出來,用于機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可廣泛用于其他計算領域。 -
什么是數據流圖(Data Flow Graph)?
數據流圖用“結點”(nodes)和“線”(edges)的有向圖來描述數學計算。“節點” 一般用來表示施加的數學操作,但也可以表示數據輸入(feed in)的起點/輸出(push out)的終點,或者是讀取/寫入持久變量(persistent variable)的終點。“線”表示“節點”之間的輸入/輸出關系。這些數據“線”可以輸運“size可動態調整”的多維數據數組,即“張量”(tensor)。張量從圖中流過的直觀圖像是這個工具取名為“Tensorflow”的原因。一旦輸入端的所有張量準備好,節點將被分配到各種計算設備完成異步并行地執行運算。
- TensorFlow的特征
二. tensorflow安裝
相比于caffe的眾多第三方依賴包,tensorflow的安裝簡直不要太簡單。不好意思,又忍不住吐槽caffe的安裝了,不過據說賈揚清在做caffe2,這種情況應該會得到改善吧。caffe的安裝可以參考以前寫的一個筆記caffe安裝。言歸正傳,tensorflow的官網其實給出了很詳細的安裝教程,細分包括:
Pip install: Install TensorFlow on your machine, possibly upgrading previously installed Python packages. May impact existing Python programs on your machine.
Virtualenv install: Install TensorFlow in its own directory, not impacting any existing Python programs on your machine.
Anaconda install: Install TensorFlow in its own environment for those running the Anaconda Python distribution. Does not impact existing Python programs on your machine.
Docker install: Run TensorFlow in a Docker container isolated from all other programs on your machine.
Installing from sources: Install TensorFlow by building a pip wheel that you then install using pip.
甚至還針對Windows/Ubuntu/MacOS的環境設置進行的說明,非常的詳細。一般來說按照官方說明進行安裝基本不會出現問題。
為了有些讀者方便,我這里簡單整理下安裝過程。
官方教程列的條目很多,但是其實綜合來說就只有兩大類安裝方法:
- 一是直接利用官方或第三方編譯好的release版本進行安裝;
- 二是利用官方的源代碼編譯生成包后安裝。
第一種方法最簡單,其實就相當于官方幫我們把源代碼進行編譯得到安裝包然后提供給我們直接安裝,不需要我們自己再做這個事情。當然,如果你用官方編譯后的包安裝失敗,或者你自己修改的源代碼需要重新編譯就可以采用第二種方法。此外,還可以根據個人情況選擇安裝cpu版本和gpu版本,二者的區別不大,主要區別在選擇的編譯包不同、gpu版本需要安裝好cuda和cudnn,這個大家如果以前安裝過其它深度學習框架應該都很清楚了,如果不了解的可以參考該文章個人深度學習環境搭建(四):顯卡驅動、CUDA、cudnn及常用軟件安裝。
下面我將分別進行介紹。
1. Requirements
依賴環境只需要python,python2.7和python3.5均可。(是不是很簡單啊)。ubuntu和Mac應該都是自帶python的吧,可以在終端輸入python
查看是否已安裝。如果沒有安裝的話我強力建議安裝anaconda這個軟件,anaconda集合了很多常用的python庫,而且可以通過conda進行python庫管理,非常的好用(即使已安裝了python也強烈建議安裝anaconda)。提供兩個簡單的anaconda使用教程以供參考——Anaconda使用總結和Anaconda多環境多版本python配置指導。
如果要安裝gpu版本的話還需要安裝cuda和cudnn,上面已經說了,不再贅述。
2. release版本安裝
直接利用官方發布的release版本進行安裝。這里主要介紹pip安裝和anaconda安裝兩種方式,其它幾種方式我暫時沒有機會接觸,所以在此不介紹了。
- <big>Pip install</big>
利用pip工具進行安裝。Pip install官方參考文檔。
需要安裝pip。如果安裝了anaconda的話,pip就已經一起安裝了。如果沒有安裝,安裝如下方式安裝:
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
# Mac OS X
$ sudo easy_install pip
$ sudo easy_install --upgrade six
Mac OS X需要安裝有軟件安裝工具easy_install,這里不再具體介紹了,請自行google。
安裝完成后,利用pip安裝tensorflow:
$ pip install tensorflow #cpu版本
$ pip install tensorflow-gpu #gpu版本
如果安裝失敗,就直接從官方庫里下載release包進行安裝。先從下面選擇自己對應的系統與環境:
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp27-none-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp27-none-linux_x86_64.whl
# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0rc1-py2-none-any.whl
# Mac OS X, GPU enabled, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0rc1-py2-none-any.whl
# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp35-cp35m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp35-cp35m-linux_x86_64.whl
# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0rc1-py3-none-any.whl
# Mac OS X, GPU enabled, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0rc1-py3-none-any.whl
之后再利用pip進行安裝:
# Python 2
$ sudo pip install --upgrade $TF_BINARY_URL
# Python 3
$ sudo pip3 install --upgrade $TF_BINARY_URL
上面編譯好的二進制安裝包可以在官網tensorflow的Download and Setup頁面查看,這里提供的主要是r0.12版本,實際上我們將TF_BINARY_URL里的0.12.0rc1
簡單替換成1.0.0rc1
就可以得到最新的tensorflow1.0.0版本。下面還有一個官方的“嘗鮮”版本:
People who are a little more adventurous can also try our nightly binaries:
Linux CPU-only: Python 2 (build history) / Python 3.5 (build history)
Linux GPU: Python 2 (build history) / Python 3.5 (build history)
Mac CPU-only: Python 2 (build history) / Python 3 (build history)
Mac GPU: Python 2 (build history) / Python 3 (build history)
Windows CPU-only: Python 3.5 64-bit (build history)
Windows GPU: Python 3.5 64-bit (build history)
Android: demo APK, native libs (build history)
右鍵鏈接,然后拷貝鏈接,然后替換上面的TF_BINARY_URL地址即可。
- <big>Anaconda installation</big>
利用anaconda提供的工具conda也可以安裝tensorflow,而且conda可以創建虛擬環境,從而與其他python環境進行隔離。官方參考教程查看。
如果要創建虛擬的環境,可以采用如下指令,比如創建名為tensorflow的虛擬換件:
# Python 2.7
$ conda create -n tensorflow python=2.7
# Python 3.4
$ conda create -n tensorflow python=3.4
# Python 3.5
$ conda create -n tensorflow python=3.5
-n
即-name
,控制虛擬環境的名字,后面的python=2.7
表示使用的python版本。
之后,激活環境。
$ source activate tensorflow
(tensorflow)$ # Your prompt should change
之后按照前面pip安裝的方法進行tensorflow的安裝。另外也可以直接利用管理工具conda進行安裝,不過conda安裝只有Linux/Mac OS X的CPU版本:
(tensorflow)$ conda install -c conda-forge tensorflow
3. 利用源碼編譯安裝
利用源碼編譯安裝相比與前面的方法就是多了一個源碼編譯的過程。tensorflow的編譯需要用到谷歌官方的一個工具bazel。由于window下的 Bazel on Windows 只是實驗性支持,所以這里我就只介紹Ubuntu下的編譯方法。
(1) Clone the TensorFlow repository
首先需要從官方Github上把最新的源碼clone下來:
$ git clone https://github.com/tensorflow/tensorflow
(2) Prepare environment for Linux
安裝一些依賴包,包括bazel、python-numpy、python-dev、python-wheel等,重點是bazel的安裝。
** 安裝 bazel **
安裝方法可以參考官方教程Installing Bazel.
官方提供了三種安裝方式:
Install Bazel on Ubuntu using one of the following methods:
Using our custom APT repository
Using binary installer
Compiling Bazel from source
官方推薦的方式是第一種,這里就介紹下第一種的安裝。
- Install JDK 8
如果你是Ubuntu Wily (15.10)以上系統的話,可以跳過該步,但是對于 Ubuntu Trusty (14.04 LTS) 系統,需要安裝Oracle JDK 8:
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
- Add Bazel distribution URI as a package source (one time setup)
$ echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
$ curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
- Install and update Bazel
$ sudo apt-get update && sudo apt-get install bazel
其它依賴包
# For Python 2.7:
$ sudo apt-get install python-numpy python-dev python-wheel
# For Python 3.x:
$ sudo apt-get install python3-numpy python3-dev python3-wheel
如果需要使用GPU請自行安裝CUDA和cudnn,這里不再介紹了。
(3) Configure the installation
在安裝完bazel和一些依賴包之后,開始編譯tensorflow源碼。
進入下載的tensorflow源碼文件夾,然后配置:
cd tensorflow-1.0.0-rc0
./configure
之后會出現各種選項,依次要求選擇:python路徑、是否支持谷歌云平臺、是否支持GPU、gcc路徑、CUDA的版本和路徑、cuDNN的版本和路徑等,大家根據個人情況進行設置即可。下面是一個參考:
Please specify the location of python. [Default is /usr/bin/python]:
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N
Do you wish to build TensorFlow with GPU support? [y/N] y
Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:
Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 8.0
Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
Please specify the cuDNN version you want to use. [Leave empty to use system default]: 5
Please specify the location where cuDNN 5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
(由于版本不同,編譯過程中出現的設置可能會存在差異,這里只是個參考)
之后就配置完成了。之后就是編譯并生成pip包了。
(3)Create the pip package and install
采用bazel進行編譯:
$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
# To build with GPU support:
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
編譯結束后進行打包生成pip安裝包:
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
這樣就得到了我們在第一種安裝方法里用到的whl安裝包,和前面方法一樣,直接采用pip進行安裝即可。
# The name of the .whl file will depend on your platform.
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.0.0rc0-py2-none-any.whl
上面安裝包的名字根據實際得到的文件修改。
4. GPU環境配置
如果是通過前面方法安裝了GPU版本,還需要對GPU的CUDA環境進行配置,需要設置LD_LIBRARY_PATH和CUDA_HOME這兩個環境變量。只需要在文件~/.bash_profile中添加下面兩行即可
這里假設CUDA安裝在/usr/local/cuda路徑下,如果不是,請修改:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
如果文件/.bash_profile不存在,也可以添加到/.bashrc中。
最后補充說明下,我還是建議大家在Ubuntu系統下進行深度學習的開發,應為目前的主流深度學習框架在Ubuntu下功能最完整,而且一般都使用NVIDIA的CUDA和cudnn。我個人是在寢室的臺式機上安裝的Ubuntu系統,我自己的MacBook安裝了cpu版本tensorflow,有時去圖書館或者辦公室就先在筆記本上編代碼,然后遠程到臺式機上運行。
<div align = center>-END-</div>
<u>版權所有,轉載請注明出處</u>