TensorFlow深度學習框架

2021-08-02 08:21:15 字數 2258 閱讀 3191

tensorflow支援python和c++兩種程式語言,再複雜的多層神經網路模型都可以用python來實現,如果業務使用其他程式設計也不用擔心,使用跨語言的grpc或者http服務也可以訪問使用tensorflow訓練好的智慧型模型。        

tensorflow™ 是乙個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的

多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平台上展開計算,例如台式計算機中的乙個或多個cpu(或gpu),伺服器,移動裝置等等。

什麼是資料流圖(data flow graph)?

資料流圖用「結點」(nodes)和「線」(edges)的有向圖來描述數學計算。「節點」 一般用來表示施加的數學操作,但也可以表示資料輸入(feed in)的起點/輸出(push out)的終點,或者是讀取/寫入持久變數(persistent variable)的終點。「線」表示「節點」之間的輸入/輸出關係。這些資料「線」可以輸運「size可動態調整」的多維資料陣列,即「張量」(tensor)。張量從圖中流過的直觀圖像是這個工具取名為「tensorflow」的原因。一旦輸入端的所有張量準備好,節點將被分配到各種計算裝置完成非同步並行地執行運算。

tensorflow**中並沒有實現最小二乘法等演算法,也沒有if-else來控制**邏輯,完全是由資料驅動並且根據梯度下降演算法動態調整loss值學習出來的。這樣我們即使換了其他資料集,甚至換成影象分類等其他領域的問題,無需修改**也可以由機器自動學習,這也是神經網路和tensorflow強大的地方。

使用tensorflow已經封裝好的全連線網路、卷積神經網路、rnn和lstm,我們已經可以組合出各種網路模型,實現inception這樣的多層神經網路如拼湊lego一樣簡單。

tensorflow核心使用技巧?

1、準備訓練資料

一般tensorflow應用**包含graph的定義和session的執行,**量不大可以封裝到乙個檔案中。

訓練前需要準備樣本資料和測試資料,一般資料檔案是空格或者逗號分隔的csv檔案,但tensorflow建議使用二進位制的tfrecords格式,這樣可以支援queurunner和coordinator進行多執行緒資料讀取,並且可以通過batch size和epoch引數來控制訓練時單次batch的大小和對樣本檔案迭代訓練多少輪。如果直接讀取csv檔案,需要在**中記錄下一次讀取資料的指標,而且在樣本無法全部載入到記憶體時使用非常不便。

在data目錄,專案已經提供了csv與tfrecords格式轉換工具convert_cancer_to_tfrecords.py,參考這個指令碼你就可以parse任意格式的csv檔案,轉成tensorflow支援的tfrecords格式。無論是大資料還是小資料,通過簡單的指令碼工具就可以直接對接tensorflow,專案中還提供print_cancer_tfrecords.py指令碼來呼叫api直接讀取tfrecords檔案的內容。

2、接受命令行引數

3、定義神經網路模型

準備完資料和引數,最重要的還是要定義好網路模型,定義模型引數可以很簡單,建立多個variable即可,也可以做得比較複雜,例如使用使用tf.variable_scope()和tf.get_variables()介面。為了保證每個variable都有獨特的名字,而且能都輕易地修改隱層節點數和網路層數,我們建議參考專案中的**,尤其在定義variables時注意要繫結cpu,tensorflow預設使用gpu可能導致引數更新過慢。

4、使用不同的優化演算法

定義好網路模型,我們需要覺得使用哪種optimizer去優化模型引數,是應該選擇sgd、rmsprop還是選擇adagrad、ftrl呢?對於不同場景和資料集沒有固定的答案,最好的方式就是實踐,通過前面定義的命令列引數我們可以很方便得使用不同優化演算法來訓練模型。

在生產實踐中,不同優化演算法在訓練結果、訓練速度上都有很大差異,過度優化網路引數可能效果沒有使用其他優化演算法來得有效,因此選用正確的優化演算法也是hyperparameter調優中很重要的一步,通過在tensorflow**中加入這段邏輯也可以很好地實現對應的功能。

5、online learning與continuous learning

6、使用tensorboard優化引數

tensorflow還整合了乙個功能強大的圖形化工具,也即是tensorboard,一般只需要在**中加入我們關心的訓練指標,tensorboard就會自動根據這些引數繪圖,通過視覺化的方式來了解模型訓練的情況。

另外,歡迎各位從事深度學習、人工智慧及神經網路領域研究、工作的人士加入qq群(121169162),方便交流學習!

TensorFlow 深度學習筆記

google 深度學習筆記 經常總結是個好習慣,筆記目錄奉上。歡迎star,有問題可以到issue區討論 官方教程位址 最近tensorflow團隊出了乙個model專案,和這個課程無關,但是可以參考 框架 tensorflow 谷歌出品的基於python的深度學習工具集 工具 ipython,py...

深度學習 初識TensorFlow

深度學習使用場景 影象理解 語音識別 自然語言處理 機器自主 無人駕駛 深度學習,如深度神經網路 卷積神經網路和遞迴神經網路已被應用計算機視覺 語音識別 自然語言處理 音訊識別與生物資訊學等領域並取得了很好的效果。深度學習在人工智慧領域的地位 深度學習框架 google brain計畫產物 應用於a...

TensorFlow深度學習1

tensorflow基本概念總結 使用圖 graphs 來表示計算任務 在被稱之為會話 session 的上下文 context 中執行圖 使用tensor表示資料 通過變數 variable 維護狀態 使用feed和fetch可以為任意的操作賦值或者從其中獲取資料 tensorflow是乙個程式設...