1. 程式人生 > >google機器學習框架tensorflow學習筆記(四)

google機器學習框架tensorflow學習筆記(四)

使用TensorFlow的基本步驟

tensorflow是一個可用於構建機器學習模型的平臺,但其實它的用途很廣泛。它是一種基於圖表的通用計算框架,可用來編寫你能想出的任何東西。事實上tensorflow.org的API頁面中提供了可在程式碼中使用的低階tensorflow運算的完整列表。貢獻者們還添加了多個可以讓我們輕鬆的執行常見任務的高階框架。 下圖顯示了 TensorFlow 工具包的當前層次結構: 下表總結了不同層的用途: TensorFlow 由以下兩個元件組成:
  • 圖協議緩衝區
  • 執行(分散式)圖的執行時
這兩個元件類似於 Java 編譯器和 JVM。正如 JVM 會實施在多個硬體平臺(CPU 和 GPU)上一樣,TensorFlow 也是如此。 較高級別的抽象層更易於使用,但(設計方面)不夠靈活。 如果您希望在某些特殊建模方面能夠更加靈活一些,則可以降低一個級別。請注意,每個級別都是使用低階 API 構建的,因此降低層次結構級別應該比較直觀。

tf.estimator API

tf.estimator 與 scikit-learn API 相容。 scikit-learn  
是極其熱門的 Python 開放原始碼機器學習庫,擁有超過 10 萬名使用者,其中包括許多 Google 員工。在學習如何使用tensorflow之前先了解一下Pandas。Pandas 是用於進行資料分析和建模的重要庫,廣泛應用於 TensorFlow 編碼。

Tensorflow程式設計概念

學習目標:

  • 學習 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 程式設計本質上是一個兩步流程:

  1. 將常量、變數和指令整合到一個圖中。
  2. 在一個會話中評估這些常量、變數和指令。

建立一個簡單的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張量程式設計補充 點選開啟連結