1. 程式人生 > >簡述 TensorFlow 計算模型——計算圖

簡述 TensorFlow 計算模型——計算圖

Tensorflow 是一個通過計算圖的形式來表述計算的程式設計系統,計算圖也叫資料流圖,可以把計算圖看做是一種有向圖,Tensorflow 中的每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。

一個計算圖例項:

這裡寫圖片描述

relu = tf.nn.relu(tf.matmul(w, x) + b)

TensorFlow 的計算機制

TensorFlow 中的 Tenso r表示張量(多維陣列),TensorFlow 中的 Flow 表示張量之間通過計算流相互轉換的過程。TensorFlow 的每一個計算都是圖上的一個節點,節點之間的邊描述了節點之間的依賴關係。

TensorFlow 程式一般分為兩個階段:

  1. 構建過程:會構建出一個圖(graph),即所謂的計算圖(computation graph);
  2. 執行過程:使用 session 執行構建過程中生成的圖中的操作。

程式碼示例:

import tensorflow as tf
#定義兩個常量向量a b
a = tf.constant([1.0,2.0],name="a")
b = tf.constant([2.0,3.0],name="b")
#將兩個向量加起來
result = a+b
#生成一個會話
sess = tf.Session()
#通過會話來計算結果
xxx = sess.run(result
) print(result) #Tensor("add:0", shape=(2,), dtype=float32) print(xxx) #[ 3. 5.] sess.close()

這裡寫圖片描述

從程式執行截圖可輔助理解 TensorFlow的 計算模型機制。張量中並沒有真正的儲存數字,它儲存的只是如何得到這些數字的計算過程。例如例項程式碼中的 result 輸出結果為Tensor(“add:0”, shape=(2,), dtype=float32)–add:0表示 result 這個張量是計算節點“add”輸出的第一個結果;shape=(2,) 標識張量的維度資訊,說明了張量 result 是一個一維陣列,陣列長度為2;dtype=float32 標識張量的型別為浮點型。

Tensorflow 是惰性求值,先構建好結構圖(定義計算的過程),當需要知道結構圖中具體的值時,才執行具體的計算。