缩减网络模型大小
目前常見的神經網絡模型,模型大小差不多都在百M以上,有的甚至有幾G,幾十G的大小。將深度學習的模型運用于移動設備,比如手機輸入法,對圖像做變換做藝術效果的app,效果毋庸置疑是好的,但由于模型的size太大,給深度學習在移動端的應用帶來了困難??梢栽O想一下,如果一個手機的app需要加載一個500M甚至1G以上的模型恐怕不太容易被用戶接受。
因此需要將大模型變成小模型,以供在移動設備上使用。
針對計算機視覺里面的CNN模型,可以做模型壓縮,縮減模型大小。模型壓縮的技術,可以分為四類:
-
剪枝:神經網絡是由一層一層的節點通過邊連接,每個邊上會有權重,所謂剪枝,就是當我們發現某些邊上的權重很小,可以認為這樣的邊不重要,進而可以去掉這些邊。在訓練的過程中,在訓練完大模型之后,看看哪些邊的權值比較小,把這些邊去掉,然后繼續訓練模型;
-
權值共享:就是讓一些邊共用一個權值,達到縮減參數個數的目的。假設相鄰兩層之間是全連接,每層有1000個節點,那么這兩層之間就有1000*1000=100萬個權重參數??梢詫⑦@一百萬個權值做聚類,利用每一類的均值代替這一類中的每個權值大小,這樣同屬于一類的很多邊共享相同的權值,假設把一百萬個權值聚成一千類,則可以把參數個數從一百萬降到一千個。
-
量化:一般而言,神經網絡模型的參數都是用的32bit長度的浮點型數表示,實際上不需要保留那么高的精度,可以通過量化,比如用0~255表示原來32個bit所表示的精度,通過犧牲精度來降低每一個權值所需要占用的空間。
-
神經網絡二值化:比量化更為極致的做法就是神經網絡二值化,也即將所有的權值不用浮點數表示了,用二進制的數表示,要么是+1,要么是-1,用二進制的方式表示,原來一個32bit權值現在只需要一個bit就可以表示,可以大大減小模型尺寸。
總結
- 上一篇: 微软量子计算“天使梦”破碎,扬言的巨大胜
- 下一篇: java配置 path_java中pat