小白帶你學(xué)習(xí)移動(dòng)平臺(tái)的深度學(xué)習(xí)
移動(dòng)平臺(tái)的深度學(xué)習(xí)
ARM相關(guān)基礎(chǔ)知識(shí)
工具鏈
體系結(jié)構(gòu)
Neno和內(nèi)存模型
TensorFlow和TensorFlow Life
適用于移動(dòng)平臺(tái)的輕量級(jí)網(wǎng)絡(luò)
首先機(jī)器學(xué)習(xí)框架要適用于移動(dòng)平臺(tái),首先需要了解和深度學(xué)習(xí)的技術(shù)充分利用硬件資源和實(shí)現(xiàn)硬件加速,另一個(gè)方面,還需要深度學(xué)習(xí)的模型本身就是改進(jìn),現(xiàn)在已經(jīng)有很多經(jīng)過改造后適用適用于移動(dòng)平臺(tái)的成熟模型。
眾所周知,在有超巨大數(shù)據(jù)集的情況下,深度學(xué)習(xí)網(wǎng)絡(luò)提升自身準(zhǔn)確度的最好方法的加深網(wǎng)絡(luò),因?yàn)榫W(wǎng)絡(luò)層次越深,理論上我們可以提取的高層特征就越多。除了加深網(wǎng)絡(luò)外,我們還可以增加網(wǎng)絡(luò)的參數(shù)數(shù)量,特征越多,我們可以用來分類或者計(jì)算的參考就越多。深度層網(wǎng)絡(luò)和大量特征也為深度學(xué)習(xí)帶來一個(gè)副作用,速度慢。網(wǎng)絡(luò)層次越深。參數(shù)數(shù)量越多。那么訓(xùn)練和預(yù)測的時(shí)間越來越多。在一個(gè)巨大的分布式集群中,有非常大的資源可以幫助我們巨大的計(jì)算任務(wù)。但在移動(dòng)平臺(tái)上情況就不是這樣。
移動(dòng)平臺(tái)在計(jì)算上非常受限,而我們需要解決的問題有何計(jì)算相關(guān),如果直接將深度網(wǎng)絡(luò)直接移植到移動(dòng)平臺(tái)。勢必移動(dòng)平臺(tái)計(jì)算速度就更慢。甚至無法接受移動(dòng)平臺(tái)的內(nèi)存限制。需要輕量級(jí)的網(wǎng)絡(luò)來代替深度網(wǎng)絡(luò)。盡量使用層次淺,參數(shù)少的網(wǎng)絡(luò)來代替原來的深度網(wǎng)絡(luò)。
SqueezeNet
最早的公開的輕量級(jí)網(wǎng)絡(luò) AlexNet和SqueezeNet具有相同的精確度,模型壓縮,包括奇異值分解,權(quán)值剪枝,系統(tǒng)矩陣和霍爾曼編碼等各類方法。
微觀結(jié)構(gòu):比如初級(jí)的lenet的做手寫數(shù)值識(shí)別5X5卷積核,后來的VGGNet的3X3的卷積核,甚至在Google的inception的1X1卷積核,卷積核可以為1X1和1X3或者1X5 3X1等,選用不同的模塊組成不同的網(wǎng)絡(luò),經(jīng)過不斷的實(shí)驗(yàn),希望通過多個(gè)小卷積來替代大的卷積核,以帶來更好的效果。
宏觀結(jié)構(gòu):宏觀結(jié)構(gòu)調(diào)整就是調(diào)整網(wǎng)絡(luò)的層次數(shù)和模塊的組織方式。例如把第5層和第7層的激活輸入到一個(gè)新層中。這種也可以叫做旁路連接。
核心思路
讓我們看看SqueezeNet是如何做到模型壓縮的。首先SqueezNet采用3個(gè)主要策略以保證網(wǎng)絡(luò)的參數(shù)更少。
使用1X1的卷積核和代替3X3的卷積核,以減少卷積層的參數(shù)數(shù)量,這樣可以使用卷積層參數(shù)數(shù)量減少9倍。
如果3X3的卷積核無法無法替代,那么就減少3X3卷積核的通道數(shù)量,比如將128X3X3的卷積核減少為32X3X3的卷積核減少到32X3X3,那么卷積層的參數(shù)數(shù)量就減少到4倍。
在卷積層后接入降采樣,以得到更大的激活圖,也就是可以將卷積層的步長設(shè)置為大于1,步長越大,卷積運(yùn)算跳過的數(shù)據(jù)就越多。
Squeeze使用的技巧
1)由于1X1和3X3的輸出激活值得高度和寬度不等,因此輸入3X3濾波器的數(shù)據(jù)會(huì)增加1和0的邊界
2)激活層使用Relu代替Sigmoid,ReLu,最常見的形式為f(x)=max(0,x),ReLU的訓(xùn)練收斂速度比Sigmoid和tanh快很多
3)網(wǎng)絡(luò)中不適用全連接層,全連接層的參數(shù)最多的層,需要二層神經(jīng)元完全連接,如果n個(gè)神經(jīng)元的層和m個(gè)神經(jīng)元的層全連接,將會(huì)有m*n個(gè)參數(shù),去掉全連接層會(huì)減少大參數(shù)。
4)訓(xùn)練開始的學(xué)習(xí)率為0.04,隨著訓(xùn)練線性減少學(xué)習(xí)率。