工程優化 — 一樣的參數數量更加有效率bash
深層網絡遇到的問題網絡
V1結構優化
分組卷積spa
相對於一個普通3*3的卷積核,在inception-net中採用了多種卷積核,每種卷積核均可以進行擴展(多加一些層)造成一個組,組和組之間計算就不相互交叉了。不相互交叉就能下降計算量(至關於每一個組的輸入都不包含其餘組的輸入)code
Inception優點cdn
卷積計算量blog
((kw*kh)*Ci)((oW*Oh)*Co)
kw:卷積核的寬
kh:卷積核的高
ow:輸出圖像的寬
oh:輸出圖像的高
ci:輸入的通道數
co:輸出的通道數
複製代碼
咱們能夠繼續優化Inception的參數數目和計算量,這裏Inception比較高仍是由於有一個5*5的卷積核,那麼咱們能夠用1*1的卷積核去優化他,先使用1*1作非線性變換,將輸入通道數減少(好比從100通道變成25通道),而後再作5*5的卷積,由於輸入通道數變小了,因此參數數目和計算量確定也就變小了圖片
用V1結構組裝網絡結構ip
[圖片上傳失敗...(image-6736d9-1538918313502)]ci
V2結構
引入3*3視野同等卷積替換
v3結構
- 3\*3不是最小卷積
- 3\*3 = 1\*3 和 3\*1
- 參數下降33%
複製代碼
v4結構
引入skip connection
就是殘差連接(inceptionnet和resnet組合)
可以保證精度損失在可控制範圍以內,能夠大幅度下降參數數目和計算量
模型結構
引入深度可分離卷積
下左圖是普通的神經網絡結構,下右圖是深度可分離的神經網絡結構,其中BN是歸一化,後面會講
回顧InceptionNet
分到極致
首先使用1*1 的卷積核將輸入變成多通道,而後一個卷積核只關注其中的一個通道,關注某個通道後生成一個通道,在將全部輸出通道拼接,下降了全部卷積覈對輸入的一個範疇
計算量對比
優化比例:
(Kw*Kh*Co*OW*Oh + Ci*Co*Ow*Oh) / (Kw*Kh*Ci*Co*OW*Oh) = 1/Ci+1/(Kw*Kh)
複製代碼
深度可分離卷積能夠大幅度下降參數數目和計算量,固然這麼大幅度的下降確定可以會帶來精度的損失,可是通過試驗代表,這個損失是可控的,能夠控制在百分之10之內
效果分析
效果層次分析
效果計算量分析
橫座標:計算量
縱座標:精準率
圓圈大小:參數量多少