剪枝系列1:AutoPruner

剪枝系列1:AutoPruner

这是此系列第一篇博客,也是我的第一篇博客,可能许多地方写的简略。主要目的是记录一下看过的论文,以后自己要用到的时候可以快速了解这篇论文的主要思想。

AutoPruner: An End-to-End Trainable Filter Pruning Method for Efficient Deep Model Inference是2018年南京大学的一篇文章,算是比较新的剪枝算法吧。这几年在剪枝方面出了很多思路,比如三阶段法(train-prune-finetune),边训练边剪法,逐层剪还是所有层同时剪,一次性剪还是每次剪,或者有人直接质疑剪枝的必要性,认为直接训练小模型效果并不差。但是总体来说,主要还是围绕着channel pruning(filter pruning)来展开。最传统的也是最简单的方法是,根据每一层自己的卷积核的参数,设计准则去掉被判断为不重要的channel,有L1准则,泰勒展开准则,GM和RePr准则;其他做法比如ThiNet是根据下一层的输出来判断本层的重要性;还有的剪枝算法关注每层剪枝率的设置,用了强化学习的方法来找出最佳剪枝率;也有的希望在训练时通过修改损失函数来训练出冗余卷积核的。

本篇论文,是一个通道剪枝+边剪枝边finetune+逐层剪枝+非人工准则的方法。(两阶段,训练阶段还是要的,只是剪枝和finetune结合到一起了)

方法如下:对每一层,添加一层编码层,设置损失函数来使得编码层输出为0,1的向量,并且1的数量满足剪枝率。编码层的输出会和原来的层相乘,训练结束后,0对应的通道被直接拿掉,不用再另外finetune。
结构图
但是这个方法有一个控制收敛到0,1的参数 α \alpha α特别不好设置。每种网络、每个层的 α \alpha α都不一样。特别不方便。而损失函数是用来控制稀疏程度的。还有编码层的初始化也比较难搞。

实验结果

VGG16 on CUB200-2011
在这里插入图片描述
ImageNet
在这里插入图片描述
总之,可以借鉴的地方是编码层0,1来代表剪枝与否的思想,以及用损失函数控制稀疏度的思想,还有把finetune和剪枝合到一起的思想。但是逐层剪真的不提倡。

好像没有开源代码。

模型轻量化是指通过减少模型的大小和计算量,以达到模型压缩和加速的效果的技术。其中,剪枝和蒸馏是常用的模型轻量化方法之一。 剪枝(Pruning)是一种深度学习模型压缩技术,通过去除神经网络中不必要的参数和连接来减少模型的大小和计算量。剪枝的目标是保持模型的性能不受太大影响的情况下,减少模型的存储和运行成本。剪枝可以根据不同的策略和准则进行,例如根据参数的大小或梯度的大小等进行选择。剪枝之后的模型可能会变得更加复杂,难以解释和理解。[1,2] 蒸馏(Distillation)是另一种模型轻量化方法,它通过将一个复杂模型(教师模型)的知识传递给一个简化版本的模型(学生模型)来减少模型的大小和计算量。蒸馏的目标是在保持模型性能的同时,减少模型的复杂性。蒸馏可以通过训练学生模型使其输出与教师模型的输出尽可能接近来实现。通过蒸馏,学生模型可以学习到教师模型的知识和决策能力,从而达到模型轻量化的效果。 剪枝和蒸馏可以相互结合使用,以进一步提高模型的轻量化效果。剪枝可以先对模型进行压缩,然后使用蒸馏的方法将压缩后的模型与原始模型进行知识传递,以提高轻量化模型的性能。具体步骤中,剪枝通常是在训练完成后进行,去除不必要的参数和连接,然后进行重新训练(Finetune)以得到可用的最优模型。[1,3]<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [模型轻量化-网络剪枝专栏(一)网络剪枝概述](https://blog.csdn.net/KANG157/article/details/130450717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [《模型轻量化-剪枝蒸馏量化系列》YOLOv5无损剪枝(附源码)](https://blog.csdn.net/qq_46098574/article/details/125174256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值