寫乙個像Keras的深度學習框架需要學習哪些知識?

時間 2021-05-10 07:57:20

1樓:

首先,Keras是乙個high-level的深度學習框架,將網路結構抽象為layer和node等,後端現在可以使用Theano、tensorflow和CNTK,後端完成具體的計算以及裝置的選擇。據此,想要自己寫類似Keras的框架,有以下幾點基本要求:1.

選擇後端(操作裝置執行具體的計算);2. 熟悉常見的網路結構(CNN、RNN等),這個會影響框架的整體結構;3. 在2的基礎上,抽象出框架的基本元件,合理組織這些元件;4.

可能還需要考慮優化方面的方法,包括訓練效果和訓練速度

2樓:

軟體架構能力

設計框架的模組與各個模組之間的介面,如何分層等深度學習領域知識

知道一些常見的operator(如卷積、pooling、LSTM unit等),以及常見的network(如alexnet、resnet、sequence to sequence等)

編碼實現能力

具體用什麼語言,需要熟練該語言演算法實現類似卷積怎麼實現,怎麼優化等等問題

理解硬體

包括各種CPU的差異,GPU怎麼用等

對於框架實現者來說,前2點最重要。

3樓:

寫過乙個小的toolbox,曾經有和題主一樣的想法,分享一下。

個人看法:keras不能算是框架,只能算是乙個warpper,整合了一些標準化的th/tf函式。

真正的框架應該是th/tf/caffe這樣的。它們在底層實現了io、cpu/gpu管理、張量定義和操作以及symbolic體系,構建了乙個適用於深度學習的科學計算體系。

如果你要做的是keras/tflearn/tensorlayer這樣的high-level的框架(或者說API),那麼最基本的是深入了解乙個底層框架比如tf,你需要用它來寫高效的、標準化的層,寫模組化的介面並整合一些其他元件構成乙個框架。

如果你要做的是th/tf這樣的底層框架,那麼你需要具備手寫dl演算法的能力,包括feedfoward、反向求導、update,各種損失函式、optimizer。你還需要精通cuda程式設計,了解cudnn庫……

實現symbolic應該算是乙個大難點。

4樓:王炳寧

同意@王贇 Maigo的觀點,像keras,lasagne等框架都是在theano或者tensorflow的輪子基礎上造車的過程。如果真正想自己做乙個輪子,建議以自己的任務出發以最小的外部依賴完成乙個神經網路正向傳遞和誤差梯度的反向傳播。比如你自己做影象,那你就自己動手寫乙個最簡單的單層CNN,然後寫乙個最簡單的優化演算法如隨機梯度下降。

如果這個模型做好了,那麼恭喜你就可以繼續下一步了那就是從1到n的過程,即加層,加網路,加優化演算法,加正則演算法。

5樓:王贇 Maigo

其實 Theano 已經替你把真正困難的事情(GPU 操作、符號求導)都幹了,所以 Keras 之類的框架,只是實現了神經網路中常見的模組(feed-forward 層、卷積層、recurrent 層等等)和訓練演算法(梯度下降、RMSProp、Adam 等等)。不過要做框架的話,對通用性的要求特別高。

乙個深度學習中大家都疑惑的問題?

張皓 全連線層有大量引數,而通常情況下,引數越多,過擬合風險越高.卷積層的提出是利用了影象資料的位移不變性,即我們關注的目標可能出現在影象的任意位置,所以我們可以採用卷積這種滑動視窗式的形式提取特徵.相比全連線層,卷積層使用的引數會少很多,而且保留了輸入的空間位置資訊.這使得我們可以堆疊多層卷積層,...

請問如何像乙個古人般學習念書

甲馬道人丨列虛 文字,是文明的載體。書是以文字為體,學習文字,要明白修行的目的。有人覺得,把酒吟詩風月無邊,因而學習了文字,這是衝所謂風雅和詩詞去的。有人為讀古籍而窮經,這是衝經典去的。而有人只是單純喜歡文字,這樣鑽研其中,指不定會在語詞 古文本學有一定造詣。下面的回答是我兩年前寫下的,雖說事過境遷...

如何用深度學習更好的的解乙個短文本相似度計算問題?

Theodore 計算兩道題目的相似度 千萬級別的資料量,題主說的怕不是kaggle上懸賞25000刀的那個競賽 Quora Question Pairs Kaggle 最近正好在乙個人玩這個 弱雞找不到人帶 目前效果比較好的模型基本都是數字特徵 TFIDF word2vec,然後用NN和stack...