01-TensorFlow計算模型(一)——計算圖

TensorFlow計算模型——計算圖

關於TensorFlow

TensorFlow是一個採用數據流圖(data flow graphs),用於數值計算的開源軟件庫。節點(Nodes)在圖中表示數學操做,圖中的線(edges)則表示在節點間相互聯繫的多維數據數組,即張量(tensor)。它靈活的架構讓你能夠在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可普遍用於其餘計算領域python

計算圖是TensorFlow中最基本的一個概念,TensorFlow中的全部計算都會被轉化爲計算圖上的節點。git

計算圖的概念

TensorFlow從其名稱能夠獲取的信息是,其包含了兩個最重要的概念——Tensor和Flow。github

Tensor的概念

Tensor就是張量。張量的概念在數學或物理學中有不一樣的解釋,但在TensorFlow中並不強調它自己的含義,而是將其簡單地理解爲多維數組。算法

Flow的概念

若是說TensorFlow中的Tensor代表了它的數據結構,那麼Flow則體現了它的計算模型。中文將Flow翻譯爲「流」,它直觀的表達了張量之間經過計算相互轉化的過程。編程

TensorFlow中的計算圖

TensorFlow是經過計算圖的形式來表述計算的編程系統。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」做爲模塊名稱,使得整個程序更加簡潔。微信

  • 獲取默認計算圖以及如何查看一個運算所屬的計算圖 # 經過a.graph能夠查看張量所屬的計算圖。由於沒有特地指定,因此這個計算圖應該等於 # 當前默認的計算圖。因此下面這個操做輸出值爲True。 print(a.graph is tf.get_default_graph())

除了使用默認的計算圖,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算法與圖像處理,獲取更多資訊

相關文章
相關標籤/搜索