模型壓縮,模型減枝,tf.nn.zero_fraction,統計0的比例,等。

     咱們剛接到一個項目時,一開始並非如何設計模型,而是去先跑一個現有的模型,看在項目需求在現有模型下面效果怎麼樣。當現有模型效果不錯須要深刻挖掘時,僅僅時跑現有模型是不夠的,好比,若是你要在嵌入式裏面去實現,目前大多數模型大小和計算量都不知足,這就產生了模型壓縮和剪枝。算法

     模型壓縮常作的是將模型從float變爲int8,這不只帶來了模型參數空間上的減小,同時,是的不少較小的參數直接變爲0,是的模型壓縮能夠變得比較小(通常是縮小到原來的20),可是這種方式下,壓縮後的模型不必定能work,還得調整。網絡

    模型剪枝,就是以爲算法實現這個任務or功能,不必使用那麼大的模型,可是目前深度學習的模型對咱們來講仍是個「黑盒子」,怎樣剪枝合適?這就可使用tf.nn.zero_fraction統計某個值的0的比例,這個tf.nn.zero_fraction計算出來的值越大,0的比例越高,說明這層網絡種起做用的神經元個數越少。經過這個統計,咱們是否能夠這樣採起策略:學習

    一、網絡層數不變,減小該層網絡的卷積核個數,訓練看效果。設計

    二、咱們將值爲0佔比高的網絡砍掉,再訓練查看效果。若是效果好,ok繼續壓縮,若是效果差,分析緣由:a、是不是網絡減小了一層,致使感覺野變小了?能夠嘗試增大剩下網絡的感覺野。b、是不是模型複雜度不夠了?能夠嘗試增長剩下網絡卷積核和特徵圖個數,適當彌補砍掉網絡帶來的複雜度下降。深度學習

 

固然,還有其餘不少模型壓縮,模型減枝的技巧方式,好比使用mobile net代替傳統卷積神經網絡等。io