【综述】结构化剪枝

news/2024/11/28 9:42:44/

目录

摘要

分类

1、依赖权重

2、基于激活函数

3、正则化

3.1 BN参数正则化

3.2 额外参数正则化

3.3 滤波器正则化

4、优化工具

5、动态剪枝

6、神经架构搜索

 性能比较


摘要

深度卷积神经网络(CNNs)的显著性能通常归因于其更深层次和更广泛的架构,这可能会带来巨大的计算成本。剪枝神经网络有效地降低了存储和计算成本,因此引起了人们的兴趣。与导致非结构化模型的权重剪枝相比,结构化剪枝通过生成对硬件实现友好的模型,提供了现实加速的好处。结构化剪枝的特殊要求导致了许多新挑战的发现和创新解决方案的发展。本文综述了深度CNN的结构化剪枝的最新进展。我们总结和比较了最新的结构化剪枝技术,包括过滤器排序方法、正则化方法、动态执行、神经结构搜索、彩票假设和剪枝的应用。在讨论结构化剪枝算法时,我们简要介绍了非结构化剪枝对等物,以强调它们的区别。

分类

1、依赖权重

与权重相关的准则基于过滤器的权重来评估过滤器的重要性。与基于激活的方法相比,依赖于权重的方法不涉及输入数据。因此,依赖于权重的方法被认为是简单的,并且需要更低的计算成本。与权重相关的准则有两个子类别:滤波器范数和滤波器相关性。

2、基于激活函数

激活映射是输入数据和滤波器的卷积结果。除了使用过滤器的权重外,激活映射还可以用于过滤器剪枝。激活通道剪枝是过滤器剪枝的另一个名称,因为删除激活映射的通道相当于删除过滤器。除了当前层的影响外,过滤器剪枝还会通过特征映射影响下一层的过滤器。

3、正则化

正则化可以通过添加不同的稀疏正则化器Rs(·)来学习结构化的稀疏网络。如果网络包含批处理归一化层,则稀疏性正则化器可以应用于BN参数。为了实现结构稀疏性,BN参数用于表示结构,如通道或滤波器的剪枝决策。引入了额外的参数作为可学习门的工作来指导修剪。有了这些额外的参数,网络就不再需要批处理规范化层了。稀疏性正则化器也可以直接应用于滤波器。群套索正则化通常用于以结构化的方式稀疏滤波器。

3.1 BN参数正则化

BN层在许多现代神经网络中被广泛应用,以提高模型泛化。通过对每个小批训练进行归一化,解决了内部协变量移位问题。

3.2 额外参数正则化

3.3 滤波器正则化

4、优化工具

5、动态剪枝

动态剪枝可以在训练和推理过程中进行。动态修剪在训练过程中的目的是通过在训练过程中保持动态剪枝掩模来保持模型的代表性能力。它也被称为软剪枝,以确保不适当的修剪决策可以稍后恢复。另一方面,硬修剪永久去除与一个固定的面具的重量。推理过程中的动态修剪表明,网络是根据不同的输入样本进行动态修剪的。例如,与一个复杂的图像相比,一个包含清晰目标的简单图像需要更少的模型容量。因此,动态推理提供了更好的资源-准确性的权衡。

6、神经架构搜索

由于手动确定与剪枝相关的超参数很麻烦,如分层剪枝比率,因此提出了神经结构搜索(NAS)[25]来自动查找剪枝结构。

 性能比较

最新剪枝方法性能比较

 参考资料:Structured Pruning for Deep Convolutional Neural Networks: A survey


http://www.ppmy.cn/news/68978.html

相关文章

【改进粒子群优化算法】自适应惯性权重粒子群算法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

网络安全这条路到底该怎么走?

我之前就写过一篇文章专门解答了这个问题。但是还是有很多小伙伴并不清楚这条路该怎么走下去! 不同于Java、C/C等后端开发岗位有非常明晰的学习路线,网路安全更多是靠自己摸索,要学的东西又杂又多,难成体系。 网络安全虽然是计算…

4. JVM内存管理

JVM是什么? JVM是一种规范. JVM用来干什么? Java虚拟机将字节码文件(.class)编译成操作系统可以识别的机器码. Java程序的执行过程 java程序首先经过javac编译成.class文件,然后jvm将其翻译成操作系统可以识别的机器码. JVM、JRE、JDK之间的关系 JVM只是一个翻译,将字节码…

尚硅谷JUC

文章目录 1. 什么是JUC1.1 JUC简介1.2 进程和线程基本概念2.1 Synchronized2.1.1 Synchronized关键字2.1.2 synchronized实现三个线程卖30张票 2.2 Lock2.2.1 什么是Lock2.2.2 使用Lock实现买票功能2.2.3 两者的区别 3. 线程间通信及定制化通信3.1 使用synchronized实现线程之间…

Nginx总结

目录 Nginx介绍 Nginx的作用 反向代理 项目架构 实战:访问nginx服务器反向代理到另一台虚拟机上的tomcat服务器 负载均衡 项目架构 实战:访问nginx服务器,是否反向代理到集群中的任意一台tomcat服务器,停止一台tomcat服务器&…

Redisson锁的分析

文章目录 一、分布式锁概念1、实现思路2、出现死锁问题如何避免死锁问题 锁过期和释放当前不属于当前线程的锁解决不是加锁线程释放锁锁的过期时间如何解决 二、Redisson分布式锁Redis的部署方式对锁的影响集群模式Redlock实现高可靠的分布式锁 三、代码分析V1代码无锁V2代码单…

基于AT89C51单片机的电子密码锁设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87779960?spm=1001.2014.3001.5503 源码获取 主要内容: 设计一个单片机电子密码锁,根据输入的数值判断是否正确,正确显示密码正确;错误时报警器发出蜂鸣。由单片机系统…

RabbitMQ养成记 (6. spingboot 集成 rabbitMQ,生产者/消费者)

Springboot集成 搞springboot的那群人 不喜欢造轮子,就喜欢搞各种集成。 首先创建一个springboot项目: 之前我们在方法中 创建工厂类配置, 现在直接在application.yml 中配置即可: spring:rabbitmq:host: **********username:…