TensorFlow是一個採用數據流圖(data flow graphs),用於數值計算的開源軟件庫。節點(Nodes)在圖中表示數學操做,圖中的線(edges)則表示在節點間相互聯繫的多維數據數組,即張量(tensor)。它靈活的架構讓你能夠在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可普遍用於其餘計算領域python
計算圖是TensorFlow中最基本的一個概念,TensorFlow中的全部計算都會被轉化爲計算圖上的節點。git
TensorFlow從其名稱能夠獲取的信息是,其包含了兩個最重要的概念——Tensor和Flow。github
Tensor就是張量。張量的概念在數學或物理學中有不一樣的解釋,但在TensorFlow中並不強調它自己的含義,而是將其簡單地理解爲多維數組。算法
若是說TensorFlow中的Tensor代表了它的數據結構,那麼Flow則體現了它的計算模型。中文將Flow翻譯爲「流」,它直觀的表達了張量之間經過計算相互轉化的過程。編程
TensorFlow是經過計算圖的形式來表述計算的編程系統。TensorFlow中的每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。數組
第一,定義計算圖中的全部的計算bash
第二,執行計算服務器
import tensorflow as tf
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([2.0, 3.0], name="b")
result = a + b
複製代碼
在python中通常會採用「import tensorflow as tf」的形式來載入TensorFlow,這樣子使用「tf」來代替「tensorflow」做爲模塊名稱,使得整個程序更加簡潔。微信
除了使用默認的計算圖,TensorFlow支持經過tf.graph函數來生成新的計算圖。不一樣計算圖上的張量和運算都不會共享。如下代碼示意瞭如何在不一樣計算圖上定義和使用變量。網絡
import tensorflow as tf
g1 = tf.Graph()
with g1.as_default():
# 在計算圖「g1」中定義變量「v」,並設置初始值爲0。
v = tf.get_variable("v",initializer=tf.zeros_initializer()(shape=[1]))
g2 = tf.Graph()
with g2.as_default():
# 在計算圖「g1」中定義變量「v」,並設置初始值爲1。
v = tf.get_variable("v",initializer=tf.ones_initializer()(shape=[1]))
# 在計算圖g1中讀取變量「v」的取值。
with tf.Session(graph=g1) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("",reuse=True):
# 在計算圖g1中,變量「v」的取值一個爲0,因此下面這行會輸出[0.]。
print(sess.run(tf.get_variable("v")))
# 在計算圖g2中讀取變量「v」的取值。
with tf.Session(graph=g2) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("",reuse=True):
# 在計算圖g1中,變量「v」的取值一個爲0,因此下面這行會輸出[1.]。
print(sess.run(tf.get_variable("v")))
複製代碼
以上代碼產生了兩個計算圖,每一個計算圖中定義了一個名字爲「v」的變量。在計算圖g1中,將v初始化爲0;在計算圖g2中,將v初始化爲1。能夠看出來當運行不一樣計算圖時,變量v的值也是不同的。TensorFlow中的計算圖不單單能夠用來隔離張量和計算,它還提供了管理張量和計算的機制。計算圖能夠經過tf.Graph.device函數來制定運行計算的設備。這爲TensorFlow使用GPU提供了機制。如下程序能夠將加法計算泡在GPU上。
g = tf.Graph()
# 指定計算運行的設備。
with g.device('/gpu:0'):
result = a+b
print(result)
複製代碼
github連接:github.com/DWCTOD/AI_s… 歡迎關注個人微信公衆號:AI算法與圖像處理,獲取更多資訊