文章标题:Pruning Convolutional Neural Networks for Resource Efficient Inference
link
论文中文讲解的链接:
https://blog.csdn.net/hsqyc/article/details/84890718
阅读目的:
查看其中的neuron prune的具体做法
更具体来说:
- 如何找被prune掉的neuron
- prune掉neuron之后要不要drop channel,如何drop channels
参考链接:
https://www.youtube.com/watch?v=zTzBSYdXKxk
阅读笔记:
本文针对通道裁剪提出了一种基于泰勒展开式(Taylor expansion)的通道重要程度评价方法。
以公式和方法为单元阅读文章:
公式1
L0范数是指向量中非0元素的个数。Prune就是使得W中某些元素变为0。
对公式1的理解,W'是W(原始参数)的子集。最理想的prune是找到的子集得出的cost和原本的一样。因此,这里用cose的改变量作为判断剪枝结果好坏的标准。
但是一般的如果我们一个通道一个通道的都去裁剪一遍,然后比对前后cost然后判断这个通道要不要裁剪是不太现实的,因为太费时间了,要2的w次单通道裁剪比对,w是网络通道总数。所以这里我们用如图1所示的迭代裁剪方式。
图1 公式2
公式2中z表示feature map,*代表卷积操作,公式中右下角标代表layer层数,右上角标k代表通道数。这个R不知道什么意思。g不是1就是0,代表当前l层的第k个通道是否需要被裁剪。
Oracle pruning:
还是就是公式1的问题,只不过作者又提到那个差要不要加绝对值的问题。但是这种oracle评价通道重要性的方式操作起来太费时,所以作者自己提出了基于泰勒展开的新的评价方式。
泰勒展开如何应用在通道评价上
网友评论