<u>版權(quán)所有目木,轉(zhuǎn)載請(qǐng)注明出處</u>
其它相關(guān)文章:
tensorflow學(xué)習(xí)筆記系列(一):前言
tensorflow學(xué)習(xí)筆記系列(三):tensorflow入門/基本使用
tensorflow學(xué)習(xí)筆記系列(四):tensorflow實(shí)現(xiàn)自動(dòng)編碼機(jī)
tensorflow學(xué)習(xí)筆記系列(五):tensorflow實(shí)現(xiàn)多層感知機(jī)
tensorflow學(xué)習(xí)筆記系列(六):tensorflow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)
tensorflow學(xué)習(xí)筆記系列(七):神經(jīng)網(wǎng)絡(luò)的一些理論知識(shí)
tensorflow學(xué)習(xí)筆記系列(八):TensorBoard介紹
tensorflow學(xué)習(xí)筆記系列(九):tensorflow源碼解析
- <u>說(shuō)明:</u>
- 目前已完成(一)~(三)
- 該內(nèi)容為本人學(xué)習(xí)tensorflow過(guò)程中的筆記舌菜,皆為個(gè)人理解再芋,難免會(huì)存在各種問(wèn)題,有不當(dāng)之處請(qǐng)大家批評(píng)指正!
一. tensorflow簡(jiǎn)介
TensorFlow是谷歌基于DistBelief進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng)五鲫,其命名來(lái)源于本身的運(yùn)行原理塞帐。Tensor(張量)意味著N維數(shù)組,F(xiàn)low(流)意味著基于數(shù)據(jù)流圖的計(jì)算腰涧,TensorFlow為張量從流圖的一端流動(dòng)到另一端計(jì)算過(guò)程韧掩。TensorFlow是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)傳輸至人工智能神經(jīng)網(wǎng)中進(jìn)行分析和處理過(guò)程的系統(tǒng)紊浩。(摘自百度百科)
TensorFlow可被用于語(yǔ)音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域,對(duì)2011年開(kāi)發(fā)的深度學(xué)習(xí)基礎(chǔ)架構(gòu)DistBelief進(jìn)行了各方面的改進(jìn)疗锐,它可在小到一部智能手機(jī)坊谁、大到數(shù)千臺(tái)數(shù)據(jù)中心服務(wù)器的各種設(shè)備上運(yùn)行。TensorFlow將完全開(kāi)源滑臊,任何人都可以用口芍。(摘自百度百科)
以下內(nèi)容引用自TensorFlow中文社區(qū)。
-
關(guān)于 TensorFlow
TensorFlow? 是一個(gè)采用數(shù)據(jù)流圖(data flow graphs)雇卷,用于數(shù)值計(jì)算的開(kāi)源軟件庫(kù)鬓椭。節(jié)點(diǎn)(Nodes)在圖中表示數(shù)學(xué)操作颠猴,圖中的線(edges)則表示在節(jié)點(diǎn)間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)小染。它靈活的架構(gòu)讓你可以在多種平臺(tái)上展開(kāi)計(jì)算翘瓮,例如臺(tái)式計(jì)算機(jī)中的一個(gè)或多個(gè)CPU(或GPU),服務(wù)器裤翩,移動(dòng)設(shè)備等等资盅。TensorFlow 最初由Google大腦小組(隸屬于Google機(jī)器智能研究機(jī)構(gòu))的研究員和工程師們開(kāi)發(fā)出來(lái),用于機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究踊赠,但這個(gè)系統(tǒng)的通用性使其也可廣泛用于其他計(jì)算領(lǐng)域呵扛。 -
什么是數(shù)據(jù)流圖(Data Flow Graph)?
數(shù)據(jù)流圖用“結(jié)點(diǎn)”(nodes)和“線”(edges)的有向圖來(lái)描述數(shù)學(xué)計(jì)算】鸫“節(jié)點(diǎn)” 一般用來(lái)表示施加的數(shù)學(xué)操作今穿,但也可以表示數(shù)據(jù)輸入(feed in)的起點(diǎn)/輸出(push out)的終點(diǎn),或者是讀取/寫(xiě)入持久變量(persistent variable)的終點(diǎn)伦籍∪俑希“線”表示“節(jié)點(diǎn)”之間的輸入/輸出關(guān)系。這些數(shù)據(jù)“線”可以輸運(yùn)“size可動(dòng)態(tài)調(diào)整”的多維數(shù)據(jù)數(shù)組鸽斟,即“張量”(tensor)拔创。張量從圖中流過(guò)的直觀圖像是這個(gè)工具取名為“Tensorflow”的原因。一旦輸入端的所有張量準(zhǔn)備好富蓄,節(jié)點(diǎn)將被分配到各種計(jì)算設(shè)備完成異步并行地執(zhí)行運(yùn)算剩燥。
- TensorFlow的特征
二. tensorflow安裝
相比于caffe的眾多第三方依賴包,tensorflow的安裝簡(jiǎn)直不要太簡(jiǎn)單立倍。不好意思灭红,又忍不住吐槽caffe的安裝了,不過(guò)據(jù)說(shuō)賈揚(yáng)清在做caffe2口注,這種情況應(yīng)該會(huì)得到改善吧变擒。caffe的安裝可以參考以前寫(xiě)的一個(gè)筆記caffe安裝。言歸正傳寝志,tensorflow的官網(wǎng)其實(shí)給出了很詳細(xì)的安裝教程娇斑,細(xì)分包括:
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.
甚至還針對(duì)Windows/Ubuntu/MacOS的環(huán)境設(shè)置進(jìn)行的說(shuō)明,非常的詳細(xì)材部。一般來(lái)說(shuō)按照官方說(shuō)明進(jìn)行安裝基本不會(huì)出現(xiàn)問(wèn)題毫缆。
為了有些讀者方便,我這里簡(jiǎn)單整理下安裝過(guò)程乐导。
官方教程列的條目很多苦丁,但是其實(shí)綜合來(lái)說(shuō)就只有兩大類安裝方法:
- 一是直接利用官方或第三方編譯好的release版本進(jìn)行安裝;
- 二是利用官方的源代碼編譯生成包后安裝物臂。
第一種方法最簡(jiǎn)單旺拉,其實(shí)就相當(dāng)于官方幫我們把源代碼進(jìn)行編譯得到安裝包然后提供給我們直接安裝产上,不需要我們自己再做這個(gè)事情。當(dāng)然蛾狗,如果你用官方編譯后的包安裝失敗蒂秘,或者你自己修改的源代碼需要重新編譯就可以采用第二種方法。此外淘太,還可以根據(jù)個(gè)人情況選擇安裝cpu版本和gpu版本姻僧,二者的區(qū)別不大,主要區(qū)別在選擇的編譯包不同蒲牧、gpu版本需要安裝好cuda和cudnn撇贺,這個(gè)大家如果以前安裝過(guò)其它深度學(xué)習(xí)框架應(yīng)該都很清楚了,如果不了解的可以參考該文章個(gè)人深度學(xué)習(xí)環(huán)境搭建(四):顯卡驅(qū)動(dòng)冰抢、CUDA松嘶、cudnn及常用軟件安裝。
下面我將分別進(jìn)行介紹挎扰。
1. Requirements
依賴環(huán)境只需要python翠订,python2.7和python3.5均可。(是不是很簡(jiǎn)單白窬搿)尽超。ubuntu和Mac應(yīng)該都是自帶python的吧,可以在終端輸入python
查看是否已安裝梧躺。如果沒(méi)有安裝的話我強(qiáng)力建議安裝anaconda這個(gè)軟件,anaconda集合了很多常用的python庫(kù)似谁,而且可以通過(guò)conda進(jìn)行python庫(kù)管理,非常的好用(即使已安裝了python也強(qiáng)烈建議安裝anaconda)掠哥。提供兩個(gè)簡(jiǎn)單的anaconda使用教程以供參考——Anaconda使用總結(jié)和Anaconda多環(huán)境多版本python配置指導(dǎo)巩踏。
如果要安裝gpu版本的話還需要安裝cuda和cudnn,上面已經(jīng)說(shuō)了续搀,不再贅述塞琼。
2. release版本安裝
直接利用官方發(fā)布的release版本進(jìn)行安裝。這里主要介紹pip安裝和anaconda安裝兩種方式禁舷,其它幾種方式我暫時(shí)沒(méi)有機(jī)會(huì)接觸彪杉,所以在此不介紹了。
- <big>Pip install</big>
利用pip工具進(jìn)行安裝榛了。Pip install官方參考文檔在讶。
需要安裝pip煞抬。如果安裝了anaconda的話霜大,pip就已經(jīng)一起安裝了。如果沒(méi)有安裝革答,安裝如下方式安裝:
# 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战坤,這里不再具體介紹了曙强,請(qǐng)自行g(shù)oogle。
安裝完成后途茫,利用pip安裝tensorflow:
$ pip install tensorflow #cpu版本
$ pip install tensorflow-gpu #gpu版本
如果安裝失敗碟嘴,就直接從官方庫(kù)里下載release包進(jìn)行安裝。先從下面選擇自己對(duì)應(yīng)的系統(tǒng)與環(huán)境:
# 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進(jìn)行安裝:
# Python 2
$ sudo pip install --upgrade $TF_BINARY_URL
# Python 3
$ sudo pip3 install --upgrade $TF_BINARY_URL
上面編譯好的二進(jìn)制安裝包可以在官網(wǎng)tensorflow的Download and Setup頁(yè)面查看兰伤,這里提供的主要是r0.12版本瘦锹,實(shí)際上我們將TF_BINARY_URL里的0.12.0rc1
簡(jiǎn)單替換成1.0.0rc1
就可以得到最新的tensorflow1.0.0版本泪勒。下面還有一個(gè)官方的“嘗鮮”版本:
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可以創(chuàng)建虛擬環(huán)境刃麸,從而與其他python環(huán)境進(jìn)行隔離。官方參考教程查看司浪。
如果要?jiǎng)?chuàng)建虛擬的環(huán)境泊业,可以采用如下指令,比如創(chuàng)建名為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
啊易,控制虛擬環(huán)境的名字吁伺,后面的python=2.7
表示使用的python版本。
之后租谈,激活環(huán)境箱蝠。
$ source activate tensorflow
(tensorflow)$ # Your prompt should change
之后按照前面pip安裝的方法進(jìn)行tensorflow的安裝。另外也可以直接利用管理工具conda進(jìn)行安裝垦垂,不過(guò)conda安裝只有Linux/Mac OS X的CPU版本:
(tensorflow)$ conda install -c conda-forge tensorflow
3. 利用源碼編譯安裝
利用源碼編譯安裝相比與前面的方法就是多了一個(gè)源碼編譯的過(guò)程宦搬。tensorflow的編譯需要用到谷歌官方的一個(gè)工具bazel。由于window下的 Bazel on Windows 只是實(shí)驗(yàn)性支持劫拗,所以這里我就只介紹Ubuntu下的編譯方法间校。
(1) Clone the TensorFlow repository
首先需要從官方Github上把最新的源碼clone下來(lái):
$ git clone https://github.com/tensorflow/tensorflow
(2) Prepare environment for Linux
安裝一些依賴包,包括bazel页慷、python-numpy憔足、python-dev、python-wheel等酒繁,重點(diǎn)是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)以上系統(tǒng)的話揭绑,可以跳過(guò)該步,但是對(duì)于 Ubuntu Trusty (14.04 LTS) 系統(tǒng),需要安裝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請(qǐng)自行安裝CUDA和cudnn他匪,這里不再介紹了菇存。
(3) Configure the installation
在安裝完bazel和一些依賴包之后,開(kāi)始編譯tensorflow源碼邦蜜。
進(jìn)入下載的tensorflow源碼文件夾依鸥,然后配置:
cd tensorflow-1.0.0-rc0
./configure
之后會(huì)出現(xiàn)各種選項(xiàng),依次要求選擇:python路徑悼沈、是否支持谷歌云平臺(tái)贱迟、是否支持GPU、gcc路徑絮供、CUDA的版本和路徑关筒、cuDNN的版本和路徑等,大家根據(jù)個(gè)人情況進(jìn)行設(shè)置即可杯缺。下面是一個(gè)參考:
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]:
(由于版本不同蒸播,編譯過(guò)程中出現(xiàn)的設(shè)置可能會(huì)存在差異,這里只是個(gè)參考)
之后就配置完成了萍肆。之后就是編譯并生成pip包了袍榆。
(3)Create the pip package and install
采用bazel進(jìn)行編譯:
$ 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
編譯結(jié)束后進(jìn)行打包生成pip安裝包:
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
這樣就得到了我們?cè)诘谝环N安裝方法里用到的whl安裝包,和前面方法一樣塘揣,直接采用pip進(jìn)行安裝即可包雀。
# 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
上面安裝包的名字根據(jù)實(shí)際得到的文件修改。
4. GPU環(huán)境配置
如果是通過(guò)前面方法安裝了GPU版本亲铡,還需要對(duì)GPU的CUDA環(huán)境進(jìn)行配置才写,需要設(shè)置LD_LIBRARY_PATH和CUDA_HOME這兩個(gè)環(huán)境變量。只需要在文件~/.bash_profile中添加下面兩行即可
這里假設(shè)CUDA安裝在/usr/local/cuda路徑下奖蔓,如果不是赞草,請(qǐng)修改:
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中吆鹤。
最后補(bǔ)充說(shuō)明下厨疙,我還是建議大家在Ubuntu系統(tǒng)下進(jìn)行深度學(xué)習(xí)的開(kāi)發(fā),應(yīng)為目前的主流深度學(xué)習(xí)框架在Ubuntu下功能最完整疑务,而且一般都使用NVIDIA的CUDA和cudnn沾凄。我個(gè)人是在寢室的臺(tái)式機(jī)上安裝的Ubuntu系統(tǒng),我自己的MacBook安裝了cpu版本tensorflow知允,有時(shí)去圖書(shū)館或者辦公室就先在筆記本上編代碼撒蟀,然后遠(yuǎn)程到臺(tái)式機(jī)上運(yùn)行。
<div align = center>-END-</div>
<u>版權(quán)所有温鸽,轉(zhuǎn)載請(qǐng)注明出處</u>