論文筆記——PRUNING FILTERS FOR EFFICIENT CONVNETS

論文地址:https://arxiv.org/abs/1608.08710網絡

主要思想

這篇文章主要講了對filters的裁剪,裁剪方法是計算L1範數,而後裁剪掉較少的,多少取決於加速比。ide

實現效果

  1. VGG-16 34%加速
  2. ResNet-110 38%加速

具體實現

  1. 對於每個kernel matrix按列絕對值求和
  2. 對求和結果排序
  3. 裁剪掉m個filters(對應內核矩陣的列),以及對應的輸出(Xi+1層中),它又是下一層的輸入,因此也得去掉對應的輸入filters(對應內核矩陣的行)
  4. 剩餘的kernel weights保留

實現細節


在跨越多層裁剪的過程當中,可能出現kernel matrix裁剪交叉的狀況,兩種處理方法:blog

  1. Independent pruning 假設藍色是肯定要裁剪的,而後計算綠色的L1時,要考慮黃色的值,跟以前的裁剪無關。
  2. Greedy pruning 也就是計算綠色的L1時,不考慮已經被裁剪的黃色值
    結果:
    第二種的準確率輝更高。

殘差網絡的處理:排序

  1. 第一層隨意裁剪(根據需求),由於它只會影響Xi+1的輸入,可是不會影響最後的輸出。
  2. residual block裏面的裁剪須要注意,由於裁剪須要和shortcut layer保持一致,才能累加。
  3. 由於identical feature maps比added residual maps更重要,因此後者的裁剪結果應該由前者決定。

Prune and Retrain 方法

  1. 裁剪全部層後再繼續訓練網絡
  2. 裁剪一層,從新訓練一下 結果: 顯然第二種好啊,第一種太暴力了,可能形成沒法修復的裁剪
相關文章
相關標籤/搜索