Tensorflow 介紹和安裝
歡迎大家關注我們的網站和系列教程:http://www.tensorflownews.com/,學習更多的機器學習、深度學習的知識!
作者:AI小昕
本系列教程將手把手帶您從零開始學習Tensorflow,並最終通過Tensorflow實現一些經典的項目。歡迎您持續關注我們的教程,關注更多機器學習、深度學習相關的優質博文。
Tensorflow是由谷歌大腦團隊於2015年11月開發的第二代開源的機器學習系統。Tensorflow支持python、C++、java、GO等多種編程語言,以及CNN、RNN和GAN等深度學習演算法。Tensorflow除可以在Windows、Linux、MacOS等操作系統運行外,還支持Android和iOS移動平台的運行、以及適用於多個CPU/GPU組成的分散式系統中。
Tensorflow是目前最火的深度學習框架,廣泛應用於自然語言處理、語音識別、圖像處理等多個領域。不僅深受全球深度學習愛好者的廣泛歡迎,Google、eBay、Uber、OPenAI等眾多科技公司的研發團隊也都在使用它。
相較於其它的深度學習框架,如:Caffe、Torch、Keras、MXnet、Theano等,Tensorflow的主要優勢有以下幾點:高度的靈活性、支持python語言開發、可視化效果好、功能更加強大、運行效率高、強大的社區。
本節將從Tensorflow的安裝配置、Tensorflow的核心——計算圖模型開始講起,帶大家走進Tensorflow的世界。好了,隨小編一起進入正文吧。
1.Tensorflow安裝與配置
目前,Windows、Linux和MacOS均已支持Tensorflow。文章將以Windows系統的安裝為例。
在安裝Tensorflow前,我們要先安裝Anaconda,因為它集成了很多Python的第三方庫及其依賴項,方便我們在編程中直接調用。
Anaconda下載地址為:https://www.anaconda.com/download/。(分為python3.6版本和python2.7版本,本書使用的是python3.6版本。)
下載好安裝包後,一步步執行安裝過程,直到出現如圖1-1所示的界面,完成Anaconda的安裝:
圖1-1 Anaconda安裝成功截圖
安裝好Anaconda後,我們便可以打開命令提示符,輸入pip install Tensorflow完成Tensorflow的安裝。
之後我們進入python可執行界面,輸入import tensorflow as tf來檢驗Tensorflow是否安裝成功。如果沒有報任何錯,可以正常執行,則說明Tensorflow已經安裝成功。
Jupyter Notebook是一款非常好用的互動式開發工具,不僅支持40多種編程語言,還可以實時運行代碼、共享文檔、數據可視化、支持markdown等,適用於機器學習、統計建模數據處理、特徵提取等多個領域。尤其在Kaggle、天池等數據科學競賽中,快捷、實時、方便的優點深受用戶歡迎。本書後邊的章節中,均將以Jupyter Notebook作為開發環境,運行Tensorflow程序。
2.計算圖模型
Tensorflow是一種計算圖模型,即用圖的形式來表示運算過程的一種模型。Tensorflow程序一般分為圖的構建和圖的執行兩個階段。圖的構建階段也稱為圖的定義階段,該過程會在圖模型中定義所需的運算,每次運算的的結果以及原始的輸入數據都可稱為一個節點(operation ,縮寫為op)。我們通過以下程序來說明圖的構建過程:
程序1:
程序1定義了圖的構建過程,「import tensorflow as tf」,是在python中導入tensorflow模塊,並另起名為「tf」;接著定義了兩個常量op,m1和m2,均為1*2的矩陣;最後將m1和m2的值作為輸入創建一個矩陣加法op,並輸出最後的結果result。
我們分析最終的輸出結果可知,其並沒有輸出矩陣相加的結果,而是輸出了一個包含三個屬性的Tensor(Tensor的概念我們會在下一節中詳細講解,這裡就不再贅述)。
以上過程便是圖模型的構建階段:只在圖中定義所需要的運算,而沒有去執行運算。我們可以用圖1-1來表示:
圖1-2 圖的構建階段
第二個階段為圖的執行階段,也就是在會話(session)中執行圖模型中定義好的運算。
我們通過程序2來解釋圖的執行階段:
程序2:
程序2描述了圖的執行過程,首先通過「tf.session()」啟動默認圖模型,再調用run()方法啟動、運行圖模型,傳入上述參數result,執行矩陣的加法,並列印出相加的結果,最後在任務完成時,要記得調用close()方法,關閉會話。
除了上述的session寫法外,我們更建議大家,把session寫成如程序3所示「with」代碼塊的形式,這樣就無需顯示的調用close釋放資源,而是自動地關閉會話。
程序3:
此外,我們還可以利用CPU或GPU等計算資源分散式執行圖的運算過程。一般我們無需顯示的指定計算資源,Tensorflow可以自動地進行識別,如果檢測到我們的GPU環境,會優先的利用GPU環境執行我們的程序。但如果我們的計算機中有多於一個可用的GPU,這就需要我們手動的指派GPU去執行特定的op。如下程序4所示,Tensorflow中使用with…device語句來指定GPU或CPU資源執行操作。
程序4:
上述程序中的「tf.device(「/gpu:2」)」是指定了第二個GPU資源來運行下面的op。依次類推,我們還可以通過「/gpu:3」、「/gpu:4」、「/gpu:5」…來指定第N個GPU執行操作。
關於GPU的具體使用方法,我們會在下面的章節結合案例的形式具體描述。
Tensorflow中還提供了默認會話的機制,如程序5所示,我們通過調用函數as_default()生成默認會話。
程序5:
我們可以看到程序5和程序2有相同的輸出結果。我們在啟動默認會話後,可以通過調用eval()函數,直接輸出變數的內容。
有時,我們需要在Jupyter或IPython等python互動式環境開發。Tensorflow為了滿足用戶的這一需求,提供了一種專門針對互動式環境開發的方法InteractiveSession(),具體用法如程序6所示:
程序6:
程序6就是互動式環境中經常會使用的InteractiveSession()方法,其創建sess對象後,可以直接輸出運算結果。
綜上所述,我們介紹了Tensorflow的核心概念——計算圖模型,以及定義圖模型和運行圖模型的幾種方式。接下來,我們思考一個問題,為什麼Tensorflow要使用圖模型?圖模型有什麼優勢呢?
首先,圖模型的最大好處是節約系統開銷,提高資源的利用率,可以更加高效的進行運算。因為我們在圖的執行階段,只需要運行我們需要的op,這樣就大大的提高了資源的利用率;其次,這種結構有利於我們提取中間某些節點的結果,方便以後利用中間的節點去進行其它運算;還有就是這種結構對分散式運算更加友好,運算的過程可以分配給多個CPU或是GPU同時進行,提高運算效率;最後,因為圖模型把運算分解成了很多個子環節,所以這種結構也讓我們的求導變得更加方便。
好了,相信讀到這裡,大家對Tensorflow這一高深莫測的技術有了基本的了解,在接下來的內容中我們將持續為您講解Tensorflow的變數、常量,以及如何使用Tensorflow去運行深度學習的項目等。歡迎大家關注我們的網站。
最後,對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!http://www.tensorflownews.com。以及知乎專欄:https://zhuanlan.zhihu.com/TensorFlownews
推薦閱讀:
※PyTorch和TensorFlow到底哪個更好?看看研究者們怎麼說
※學習筆記TF022:產品環境模型部署、Docker鏡像、Bazel工作區、導出模型、伺服器、客戶端
※TF Boys (TensorFlow Boys ) 養成記(二): TensorFlow 數據讀取
※tensorflow的共享變數,tf.Variable(),tf.get_variable(),tf.Variable_scope(),tf.name_scope()聯繫與區別
※Google 開發技術周刊 088 期
TAG:TensorFlow |