google機器學習框架tensorflow學習筆記(四)
使用TensorFlow的基本步驟
tensorflow是一個可用於構建機器學習模型的平臺,但其實它的用途很廣泛。它是一種基於圖表的通用計算框架,可用來編寫你能想出的任何東西。事實上tensorflow.org的API頁面中提供了可在程式碼中使用的低階tensorflow運算的完整列表。貢獻者們還添加了多個可以讓我們輕鬆的執行常見任務的高階框架。 下圖顯示了 TensorFlow 工具包的當前層次結構: 下表總結了不同層的用途: TensorFlow 由以下兩個元件組成:- 圖協議緩衝區
- 執行(分散式)圖的執行時
tf.estimator API
tf.estimator 與 scikit-learn API 相容。 scikit-learnTensorflow程式設計概念
學習目標:
學習 TensorFlow 程式設計模型的基礎知識,重點了解以下概念:
- 張量
- 指令
- 圖
- 會話
- 構建一個簡單的 TensorFlow 程式,使用該程式繪製一個預設圖並建立一個執行該圖的會話
注意: 請仔細閱讀本教程。TensorFlow 程式設計模型很可能與您遇到的其他模型不同,因此可能不如您期望的那樣直觀。
概念概覽
TensorFlow 的名稱源自張量,張量是任意維度的陣列。藉助 TensorFlow,您可以操控具有大量維度的張量。即便如此,在大多數情況下,您會使用以下一個或多個低維張量:
- 標量是零維陣列(零階張量)。例如,
\'Howdy\'
或5
- 向量是一維陣列(一階張量)。例如,
[2, 3, 5, 7, 11]
或[5]
- 矩陣是二維陣列(二階張量)。例如,
[[3.1, 8.2, 5.9][4.3, -2.7, 6.5]]
TensorFlow 指令會建立、銷燬和操控張量。典型 TensorFlow 程式中的大多數程式碼行都是指令。
TensorFlow 圖(也稱為計算圖或資料流圖)是一種圖資料結構。很多 TensorFlow 程式由單個圖構成,但是 TensorFlow 程式可以選擇建立多個圖。圖的節點是指令;圖的邊是張量。張量流經圖,在每個節點由一個指令操控。一個指令的輸出張量通常會變成後續指令的輸入張量。TensorFlow 會實現延遲執行模型,意味著系統僅會根據相關節點的需求在需要時計算節點。
張量可以作為常量或變數儲存在圖中。您可能已經猜到,常量儲存的是值不會發生更改的張量,而變數儲存的是值會發生更改的張量。不過,您可能沒有猜到的是,常量和變數都只是圖中的一種指令。常量是始終會返回同一張量值的指令。變數是會返回分配給它的任何張量的指令。
要定義常量,請使用 tf.constant
指令,並傳入它的值。例如:
x = tf.constant([5.2])
同樣,您可以建立如下變數:
y = tf.Variable([5])
或者,您也可以先建立變數,然後再如下所示地分配一個值(注意:您始終需要指定一個預設值):
y = tf.Variable([0])
y = y.assign([5])
定義一些常量或變數後,您可以將它們與其他指令(如 tf.add
)結合使用。在評估 tf.add
指令時,它會呼叫您的 tf.constant
或 tf.Variable
指令,以獲取它們的值,然後返回一個包含這些值之和的新張量。
圖必須在 TensorFlow 會話中執行,會話儲存了它所執行的圖的狀態:
將 tf.Session() 作為會話:
initialization = tf.global_variables_initializer()
print y.eval()
在使用 tf.Variable
時,您必須在會話開始時呼叫 tf.global_variables_initializer
,以明確初始化這些變數,如上所示。
注意:會話可以將圖分發到多個機器上執行(假設程式在某個分散式計算框架上執行)。有關詳情,請參閱分散式 TensorFlow。
總結
TensorFlow 程式設計本質上是一個兩步流程:
- 將常量、變數和指令整合到一個圖中。
- 在一個會話中評估這些常量、變數和指令。
建立一個簡單的Tensorflow程式
新增import語句 與幾乎所有 Python 程式一樣,您首先要新增一些import
語句。 當然,執行 TensorFlow 程式所需的
import
語句組合取決於您的程式將要訪問的功能。至少,您必須在所有 TensorFlow 程式中新增
import tensorflow
語句:
import tensorflow as tf
TensorFlow提供了一個
預設圖
。不過,我們建議您明確建立自己的
Graph
,以便跟蹤狀態(例如,您可能希望在每個單元格中使用一個不同的
Graph
)。
import tensorflow as tf
# Create a graph.
g = tf.Graph()
# Establish the graph as the "default" graph.
with g.as_default():
# Assemble a graph consisting of the following three operations:
# * Two tf.constant operations to create the operands.
# * One tf.add operation to add the two operands.
x = tf.constant(8, name="x_const")
y = tf.constant(5, name="y_const")
sum = tf.add(x, y, name="x_y_sum")
# Now create a session.
# The session will run the default graph.
with tf.Session() as sess:
print sum.eval()
更多關於張量程式設計的內容請參考tensorflow張量程式設計補充
點選開啟連結