tensorflow基礎概念(計算圖、張量、操作)

1.tensorflow的概念
TensorFlow=Tensor + Flow
Tensor(張量)

  • 數據結構:多維數組
    Flow(流)
  • 計算模型:張量之間通過計算而轉換的過程
    TensorFlow是一個通過計算圖的形式表述計算的編程系統,每一個計算都是計算圖上的一個節點,節點之間的邊描述了計算之間的關係
    2.計算圖(數據流圖)的概念
    計算圖是一個有向圖,由以下內容構成:
  • 一組節點,每個節點都代表一個操作,一種運算
  • 一組有向邊,每條邊打標節點之間的關係(數據傳遞和控制依賴)
    TensorFlow有兩種邊
  • 常規邊(實線):代表數據依賴關係。一個節點的運算輸出成爲另一個節點的輸入,兩個節點之間有tensor流動(值傳遞)
  • 特殊邊(虛線):不攜帶值,表示兩個節點之間的控制相關性。比如,happens-before關係,源節點必須在目的節點執行前完成執行
    在這裏插入圖片描述
    數據流圖優勢
    (1)並行計算快
    (2)分佈式計算快
    (3)預編譯優化(XLA)
    (4)可移植性好
    一個簡單的計算圖
    在這裏插入圖片描述
    生成的計算圖如下:
    在這裏插入圖片描述
    3.張量的概念
    在TensorFlow中,所有的數據都通過張量的形式來表示
  • 從功能的角度,張量可以簡單理解爲多維數組
    零階張量表示標量(scalar),也就是一個數;
    一階張量爲向量(vector),也就是一維數組;
    n階張量可以理解爲一個n維數組;
  • 張量並沒有真正保存數字,它保存的是計算過程

張量的屬性
在這裏插入圖片描述
名字(name):
“node:srv_output”:node 節點名稱,src_output 來自節點的第幾個輸出
形狀(shape):
張量的維度信息,shape=(),表示是標量
類型(type):
每一個張量會有一個唯一的類型
TensorFlow會對參與運算的所有張量進行類型的檢查,發現類型不匹配時會報錯

張量的形狀
三個術語描述張量的維度:階(rank)、形狀(shape)、維數(dimension number)
在這裏插入圖片描述
在這裏插入圖片描述
張量的階
張量的階(rank)表示了張量的維度
在這裏插入圖片描述
獲取張量的元素
階爲1的張量等價於向量;
階爲2的張量等價於矩陣,通過t[i,j]獲取元素;
階爲3的張量,通過t[i,j,k]獲取元素
注意:下標從0開始
在這裏插入圖片描述
張量的類型
TensorFlow支持14種不同的類型
實數 tf.float32,tf.float64
整數 tf.int8,tf.int16,tf.int32,tf.int64,tf.uint8
布爾 tf.bool
複數 tf.complex64,tf.complex128

默認類型:
不帶小數點的數會被默認爲int32
帶小數點的會被默認爲float32
4.操作

  • 計算機中的節點就是操作(Operation)
    一次加法是一個操作
    一次乘法也是一個操作
    構建一些變量的初始值也是一個操作
  • 每個運算操作都有屬性,它在構建圖的時候需要確定下來
  • 操作可以和計算設備綁定,指定操作在某個設備上執行
  • 操作之間存在順序關係,這些操作之間的依賴就是“邊”
  • 如果操作A的輸入是操作B執行的結果,那麼這個操作A就依賴於操作B

在使用tensorflow搭建深度模型基本步驟包括
定義tensorflow輸入節點
定義學習的參數變量
定義運算
優化函數及優化目標
初始化所有變量
迭代更新參數
測試模型
使用模型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章