网络模型剪枝-论文阅读-《Channel Pruning for Accelerating Very Deep Neural Networks》

上篇对卷积核进行剪枝不同,本篇论文主要是对特征通道进行剪枝。

Introduction

其实这一篇论文的立意和上篇类似,都是说在剪枝后不需要产生稀疏网络,不同的是,该篇论文是剪枝的冗余的特征通道来达到目的。其剪枝方法是:对于一个训练好的网络,通道剪枝是通过最小化其剪枝前后的输出特征图之间的重建误差来完成的:首先是进行通道选择和特征图重建,在该过程中使用LASSO回归找到冗余的特征图并剪枝;然后使用最小二乘优化对剩余的特征通道进行输出重建。

方法

该论文首先对单层卷积层剪枝方法进行说明,然后是多层和多分枝网络的剪枝。

公式

在这里插入图片描述

上图是文章所提出的通道剪枝算法在单层卷积层的示意图。该算法的目的就是减少特征图B的通道数的同时保持C的输出尽量不变。一旦B中有通道被剪枝了,对A层进行卷积的相应卷积核(图中标记为虚线的卷积核)也会相应移除,以及对B层进行卷积的卷积核的相应通道也会被移除。所以,通道剪枝包括两点:首先是通道选择,因为需要选择合适的通道组合以保留丰富的信息;然后是重建,需要使用选择的通道对下一层的输出进行重建。

文章首先以最简单的卷积示例来说明文章提出的算法:

对于一个大小为 [ n × c × k h × k w ] [n \times c \times {k}_h \times {k}_w] [n×c×kh×kw]的卷积核W、 [ N × c × k h × k w ] [N \times c \times {k}_h \times {k}_w] [N×c×kh×kw]的输入特征图X和 [ N × n ] [N \times n] [N×n]的输出矩阵Y,其中N是batch size、c是输入通道、n是输出通道、kh和kw是卷积核宽高。为了剪枝输入通道c到目标c’( 0 ≤ c ′ ≤ c 0 \leq c' \leq c 0cc)的同时最小化重建误差,目标方程定义为:

在这里插入图片描述

其中||·||F是Frobenius norm,Xi是属于X第i个通道的维度为 N × k h k w N \times {k}_h{k}_w N×khkw的矩阵(i = 1,…,c),Wi是属于W的第i个通道的大小为 n × k h k w n \times {k}_h{k}_w n×k

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
代码修剪卷积神经网络用于资源高效推理,是一种优化模型的方法,旨在减小模型的尺寸和计算量,从而实现在资源受限的设备上进行高效推理。 修剪是指通过删除模型中的一些参数或神经元来减小模型的复杂性。在卷积神经网络中,修剪通常包括删除一些卷积核或通道,以及减少连接权重的数量。这可以通过一些算法和技术来实现,例如剪枝算法、稀疏矩阵和低秩近似等。 修剪卷积神经网络可以带来多个好处。首先,它可以大大减小模型的尺寸,从而降低了存储模型所需的内存空间。其次,修剪可以减少模型的计算量,使得模型可以更快地进行推理。这对移动设备和嵌入式系统等资源受限的设备非常重要。此外,修剪还可以提高模型的泛化能力,减少过拟合的风险。 对于修剪卷积神经网络的代码实现,一般分为两个步骤。首先,需要训练一个初始的卷积神经网络模型。然后,通过一些修剪算法选择要修剪的参数或神经元,并将其从模型中移除。修剪的目标可以是按照权重大小或梯度大小进行选择。 在实际编程中,代码可以使用一些深度学习框架(如PyTorch或TensorFlow)来实现。这些框架通常提供了一些修剪工具和函数,以便进行参数和神经元的修剪。开发者需要根据具体的应用场景和需求来选择合适的修剪策略,并根据框架的API来实现修剪过程。 总之,代码修剪卷积神经网络是一种资源高效推理的方法,通过减小模型的尺寸和计算量,提高模型的效率和性能。这对于在资源受限的设备上进行深度学习推理任务非常有意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值