Tensorflow介紹和安裝

磐石001發表於2018-04-02

歡迎大家關注我們的網站和系列教程: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去執行深度學習的專案等。歡迎大家關注我們的網站。

 

本篇文章出自http://www.tensorflownews.com,對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!


相關文章