Tensorflow 基礎知識

Tensorflow 基於資料流圖的原理工作。要執行一些計算,有兩個步驟:

  1. 將計算表示為圖形。
  2. 執行圖表。

表示: 與任何有向圖一樣,Tensorflow 圖由節點和有向邊組成。

節點:節點也稱為 Op(代表操作)。一個節點可以有多個傳入邊但只有一個傳出邊。

邊緣:指示節點的傳入或傳出資料。在這種情況下,一些節點(Op)的輸入和輸出。

每當我們說資料時,我們指的是一個稱為 Tensor 的 n 維向量。Tensor 有三個屬性: Rank,Shape 和 Type

  • 等級表示張量的維數(立方體或框具有等級 3)。
  • 形狀表示這些尺寸的值(框可以具有形狀 1x1x1 或 2x5x7)。
  • Type 表示 Tensor 的每個座標中的資料型別。

執行: 即使構建了圖形,它仍然是一個抽象實體。在我們執行它之前,實際上沒有計算。要執行圖形,我們需要將 CPU 資源分配給圖形內的 Ops。這是使用 Tensorflow 會話完成的。步驟是:

  1. 建立一個新會話。
  2. 在圖表中執行任何 Op。通常我們執行最終的 Op,我們期望計算的輸出。

Op 上的傳入邊緣就像是另一個 Op 上的資料依賴。因此,當我們執行任何 Op 時,它上面的所有傳入邊都被跟蹤,另一邊的 ops 也被執行。

注意: 也可以使用稱為資料來源或接收器的播放角色的特殊節點。例如,你可以有一個 Op,它給出一個常數值,因此沒有傳入的邊緣(在下面的例子中參考值’matrix1’)和類似的 Op 沒有傳出邊緣的結果被收集(參見下面例子中的’product’值)。

例:

https://i.stack.imgur.com/2rIm0.jpg

import tensorflow as tf

# Create a Constant op that produces a 1x2 matrix.  The op is
# added as a node to the default graph.
#
# The value returned by the constructor represents the output
# of the Constant op.
matrix1 = tf.constant([[3., 3.]])

# Create another Constant that produces a 2x1 matrix.
matrix2 = tf.constant([[2.],[2.]])

# Create a Matmul op that takes 'matrix1' and 'matrix2' as inputs.
# The returned value, 'product', represents the result of the matrix
# multiplication.
product = tf.matmul(matrix1, matrix2)

# Launch the default graph.
sess = tf.Session()

# To run the matmul op we call the session 'run()' method, passing 'product'
# which represents the output of the matmul op.  This indicates to the call
# that we want to get the output of the matmul op back.
#
# All inputs needed by the op are run automatically by the session.  They
# typically are run in parallel.
#
# The call 'run(product)' thus causes the execution of three ops in the
# graph: the two constants and matmul.
#
# The output of the op is returned in 'result' as a numpy `ndarray` object.
result = sess.run(product)
print(result)
# ==> [[ 12.]]

# Close the Session when we're done.
sess.close()