深度學習框架五個核心組件介紹

                         深度學習框架五個核心組件

名稱

原理

 

張量(Tensor)

張量是所有深度學習框架中最核心的組件,因爲後續的所有運算和優化算法都是基於張量進行的。幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,我們可以將標量視爲零階張量,矢量視爲一階張量,那麼矩陣就是二階張量。

基於張量的各種操作 

其實,整個神經網絡都可以簡單視爲爲了達到某種目的,針對輸入張量進行的一系列操作過程。而所謂的“學習”就是不斷糾正神經網絡的實際輸出結果和預期結果之間誤差的過程。這裏的一系列操作包含的範圍很寬,可以是簡單的矩陣乘法,也可以是卷積、池化和LSTM等稍複雜的運算。

計算圖(Computation Graph) 

計算圖首次被引入人工智能領域是在2009年的論文《Learning Deep Architectures for AI》。當時的圖片如下所示,作者用不同的佔位符(*,+,sin)構成操作結點,以字母x、a、b構成變量結點,再以有向線段將這些結點連接起來,組成一個表徵運算邏輯關係的清晰明瞭的“圖”型數據結構,

自動微分(Automatic Differentiation)工具 

計算圖帶來的另一個好處是讓模型訓練階段的梯度計算變得模塊化且更爲便捷,也就是自動微分法。

BLAS、cuBLAS、cuDNN等拓展包

解決運算效率的

由於此前的大部分實現都是基於高級語言的(如Java、Python、Lua等),而即使是執行最簡單的操作,高級語言也會比低級語言消耗更多的CPU週期,更何況是結構複雜的深度神經網絡,因此運算緩慢就成了高級語言的一個天然的缺陷。

 

第一種方法模擬傳統的編譯器。

第二種方法利用腳本語言實現前端建模,用低級語言如C++實現後端運行,這意味着高級語言和低級語言之間的交互都發生在框架內部

第三中方法:由於低級語言的最優化編程難度很高,而且大部分的基礎操作其實也都有公開的最優解決方案,因此另一個顯著的加速手段就是利用現成的擴展包。

 

一般的BLAS庫只是針對普通的CPU場景進行了優化,但目前大部分的深度學習模型都已經開始採用並行GPU的運算模式,因此利用諸如NVIDIA推出的針對GPU優化的cuBLAScuDNN等更據針對性的庫可能是更好的選擇。

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