回覆列表
  • 1 # 北航秦曾昌

    深度學習研究的熱潮持續高漲,各種開源深度學習框架也層出不窮:其中包括TensorFlow、Caffe、Keras、Theano等等。然而,最火的還是TensorFlow。

    TensorFlow是由Google Brain開發的深度學習開源框架,也可以理解成是一個相對高階的機器學習庫,使用者能夠以非常簡潔的程式碼設計出複雜的神經網路結構,高效率地進行深度學習演算法的計算。TensorFlow名字來源於本身的原理,Tensor (張量)意味著N維陣列,Flow(流)意味著基於資料流圖的計算。Tensorflow執行過程就是張量從圖的一端流動到另一端的計算過程。張量從圖中流過的直觀影象是這個工具取名為“TensorFlow”的原因。

    首先,我們先來掌握一下Tensor的相關概念,Tensor有三個屬性分別是(1)維數;(2)形狀;(3)資料型別。TensorFlow用張量這種資料結構來表示所有的資料。你可以把一個張量想象成一個n維的陣列或列表。維度要看張量的最左邊有多少個左中括號,有n個,則這個張量就是n維張量。張量的形狀以[D0, D1, … Dn-1]的形式表示,D0到Dn是任意的正整數。如形狀[3,4]表示第一維有3個元素,第二維有4個元素,[3,4]表示一個3行4列的矩陣。具體概念,可以看下圖中的舉例。

    TensorFlow中最基本的單位是常量(Constant)、變數(Variable)和佔位符(Placeholder)。

    常量定義後值和維度不可變,

    變數定義後值可變而維度不可變。

    (在神經網路中,變數一般可作為儲存權重和其他資訊的矩陣,而常量可作為儲存超引數或其他結構資訊的變數。)

    佔位符屬於變數。

    以上是Tensor的介紹,下面我們來理解一下Flow的概念。

    上圖就是tensorflow的基於計算圖的結構,我們在編寫程式碼的時候,首先心裡一定是先有這個網路結構,按照這個結構去碼程式碼,也就是說這個圖結構是蘊含在程式碼的字裡行間的。

    Tensorflow是一個基於圖(Graph)的計算系統。 圖的節點是由操作(Operation)來構成的,圖的各個節點則是由張量(Tensor)作為邊來連線在一起的。所以Tensorflow的計算過程是一個Tensor流向圖。

    使用Tensorflow,一般需要三個步驟:

    建立Tensor;

    新增Operations(Operations輸入Tensor,然後輸出另一個Tensor);執行計算(也就是執行一個可計算的圖)。

    構建好圖結構之後,Tensorflow的圖必須在一個會話 (Session)中來計算。Session提供了Operation執行和Tensor求值的環境。下面是建立Session兩種方法。

    掌握了以上這些TensorFlow的概念之後,就可以在github上動手一個小程式了。

  • 中秋節和大豐收的關聯?
  • 為什麼大學生寧願點外賣都不願意去附近200米的飯堂去吃?