技術部落格

集結國內外精選文章,掌握最新雲端技術新知與應用

iKala Cloud / AI 與機器學習 / 【GCP 教學】如何在 GCP 上使用 TensorFlow?

【GCP 教學】如何在 GCP 上使用 TensorFlow?

開源機器學習系統 TensorFlow 應用實例

什麼是 TensorFlow?

簡單來說是 Google 開源的機器學習程式庫。除了應用在 AlphaGo 之外,也應用在 Google Photo 等服務上。
2017/12現在版本已經更新至1.4了,在教學文件上可以看到,能夠安裝的作業系統為 Linux 及 Mac OS X,開發語言為 C++ 及 Python 可供選擇。在本篇,作業系統會使用 Ubuntu 14.04 ,開發語言以Python 構築環境。

安裝 TensorFlow 的順序

安裝 TensorFlow 的環境來說,需要準備 Google Compute Engine (GCE)。GCE 的規格如下所示,請參考。

OS Ubuntu14.04LTS
Machine type n1-standard-2 (2 vCPUs, 7.5 GB memory)
CPU platform Intel Ivy Bridge
Boot disk and local disks [Size (GB)] 10
Boot disk and local disks [Type] SSD persistent disk
Boot disk and local disks [Mode] Boot, read/write

另外,主要順序是參考此連結,按照上面的步驟進行:https://www.tensorflow.org/install/

準備實際的環境

• 確認 Python 的版本

TensorFlow僅支援 Python 2.7及 3.3 版本集以上,下面指令可以執行確認:

$ python -V

尚未安裝 Python, 或者非以上支援版本集的情況下請先安裝。

• 安裝 pip 和 virtualenv

先安裝對 Python 使用者來說很習慣的兩個 package。執行以下指令即可安裝 pip 及 virtualenv。

$ sudo apt-get install python-pip python-dev python-virtualenv

*1) pip 為管理 Python 軟體的 package
*2) virtualenv 為建立執行 Python 的虛擬環境的 package

• 實作 virtualenv 虛擬環境

安裝完成 pip 及 virtualenv 之後,現在來建立 virtualenv 的環境。請執行以下指令:

$ virtualenv --system-site-packages ~/tensorflow

執行後,執行 ls 後,就會發現 tensorflow 資料夾。這樣就完成了虛擬環境了。接下來我們會在 tensorflow 資料夾底下作業。

• 啟動讀取虛擬環境

輸入以下指令啟動虛擬環境:

$ source ~/tensorflow/bin/activate

如果啟動正常,就會如以下描述,顯示出作用的資料夾:

(tensorflow)yasue@tensorflow-report:~$

到這裡,最基本的必要環境都建置完成了。以下針對 TensorFlow 開始安裝。

於虛擬環境下安裝 TensorFlow

TensorFlow 的安裝非常簡單。TensorFlow 需要安裝讓 pip 可以動作的 *3) wheel 檔案。這個檔案於官方網站有提供。Wheel 檔案已經以 Python package 的形式包裝起來。最新的 TensforFlow Wheel 檔案的指定方法請參閱:https://www.tensorflow.org/install/install_linux

(tensorflow)yasue@tensorflow-report:~$ pip install --ignore-install

執行完成後,與 TensorFlow 相關的程式庫皆安裝完成。TensorFlow 實際上有分 GPU 與 CPU 兩種版本,這裡我們使用 CPU 版本來安裝。到這裡安裝都完成了。

在 TensorFlow 上說 “Hello, TensorFlow!”

安裝完成後,接下來確認是否能正常運行。

於編輯器執行 Python, 跑以下程式碼:

(tensorflow)yasue@tensorflow-report:~$ python
import tensorflow as tf 
# (1)
hello = tf.constant('Hello, TensorFlow!')
# (2)
sess = tf.Session()
print(sess.run(hello))

Hello, TensorFlow!

有正確表示”Hello, TensorFlow!” 嗎? 如果沒有錯誤就表示沒有問題了。這邊我們想稍微解釋一下程式碼的含意。

(1) 使用 tf.constant() 就能製作 Tensor 類別的物件。這對大家來說或許比較少見,Tensor 類別是處理如多維度矩陣的類別。由於前述產生的「Hello, TensorFlow!」是文字,和矩陣比較無關。試試看輸入 Tensor 類別的變數 hello 看看:

print hello

Tensor("Const:0", shape=(), dtype=string)

代入 hello 內的 「Hello, TensorFlow!」不是文字,於是產生了 Tensor 類別的物件資訊。

產生的結果來看,稱作 hello 的 Tensor 類別內的變數:
• 
「Const」是「常數」
• 
「shape」值為空白,維度為 0 之意
• 
「dtype」為「string」字串,值的資料型態為文字的關係

(2) 接著建立「tf.Session()」,利用「print(sess.run(hello))」將 Tensor 類別的變數 hello 代入 Session 內開始計算。用「print()」將文字列印出來。
再來我們算算加法:

# (3) 
a = tf.constant(10) 
b = tf.constant(32) 
# (4) 
print(sess.run(a + b)) 

42

大家都是算出 42 沒錯吧?到這裡可以確認完成。

順帶一提 – 什麼是 Dataflow Graph?

這裡稍微簡單說明 TensorFlow 的計算處理機制。TensorFlow 計算處理機制是以”dataflow graph”來表示的。什麼意思呢? 官方網站的說法為,「可說是利用節點 (node) 與線 (edge) 相互連結、具有一定方向的數學計算圖」。這樣說明可能還是搞不清楚是如何,我們看下圖:

觀察上圖,Dataflow graph 就是用節點與節點用線連接起來的圖形。資料沿著線到節點上進行計算處理。具體來說,這次我們的「hello」就是成為了節點。補充一下,在 TensorFlow 中,節點又稱為 op (Operation)。以上介紹相信對於 Dataflow graph 應該有多了一層了解。

TensorFlow 的計算可說分為以下 2 個階段處理:
1. 建構 Dataflow graph
2. 將 Dataflow graph 代入 Session 中,開始實際計算

總結

希望透過這篇 TensorFlow 的教學文章能幫助各位深入理解核心的數理及機器學習概念。

 

分享本文:
FacebookLineTwitter
回到頂端