原文链接:https://arxiv.org/abs/1708.06519
深度卷积神经网络(CNNs)在现实世界中的应用很大程度上受到其高计算成本的阻碍。在本文中,我们提出了一种新的cnn学习方案,以同时减小模型的尺寸;2)减少运行时内存占用;3)在不影响精度的前提下,降低计算操作的数量。这是通过在网络中以一种简单但有效的方式强制通道级稀疏性来实现的。与许多现有的方法不同,所提出的方法直接适用于现代CNN体系结构,为训练过程引入了最小的开销,并且对生成的模型不需要特殊的软件/硬件加速器。我们称这种方法为网络瘦身,它以宽而大的网络作为输入模型,但在训练过程中自动识别和修剪不重要的通道,得到具有相当精度的薄而紧凑的模型。我们通过几个最先进的CNN模型,包括VGGNet、ResNet和DenseNet,在不同的图像分类数据集上,实证证明了我们方法的有效性。对于VGGNet,多通道版本的网络瘦化使模型尺寸减小了20倍,计算操作减少了5倍。
近年来,卷积神经网络(CNNs)已成为各种计算机视觉任务的主要方法,如图像分类[22],目标检测[8],语义分割[26]。大规模的数据集,高端的现代图形处理器和新的网络架构允许开发前所未有的大型CNN模型。例如,从AlexNet [22], VGGNet[31]和GoogleNet[34]到ResNets [14], ImageNet分类挑战赛的获胜者模型已经从8层发展到100多层。
然而,较大的cnn虽然具有更强的表示能力,但对资源的需求更大。例如,一个152层的ResNet[14]有超过6000万个参数,在推断分辨率为224×224的图像时需要超过20千万亿浮点运算(FLOPs)。这在资源受限的平台(如移动设备、可穿戴设备或物联网设备)上不太可能负担得起。
在现实世界的应用中,cnn的部署大多受到:
1)模型大小的限制:cnn强大的表示能力来自其数百万个可训练参数。这些参数以及网络结构信息需要存储在磁盘上,并在推理期间加载到内存中。例如,存储一个在ImageNet上训练的典型CNN需要超过300MB的空间,这对嵌入式设备来说是一个很大的资源负担。
2)运行时内存:在推理期间,即使批处理大小为1,cnn的中间激活/响应甚至可能比存储模型参数占用更多的内存空间。这对高端gpu来说不是问题,但对于许多计算能力较低的应用程序来说却负担不起。
3)计算运算次数:卷积运算在高分辨率图像上计算量大。一个大型CNN在移动设备上处理一张图像可能需要几分钟,这使得它无法应用于实际应用。
许多工作被提出压缩大型CNN或直接学习更有效的CNN模型来快速推断。其中包括低秩逼近[7],网络量化[3,12]和二值化[28,6],权重修剪[12],动态推理[16]等。然而,大多数这些方法只能解决上面提到的一到两个挑战。此外,有些技术需要专门设计的软件/硬件加速器来提高执行速度[28,6,12]。
减少大型cnn资源消耗的另一个方向是网络稀疏化。稀疏性可以施加在不同层次的结构上[2,37,35,29,25],这可以产生相当大的模型大小压缩和推断速度。然而,这些方法通常需要特殊的软件/硬件加速器来获取内存增益或节省的时间,尽管它比[12]中的非结构化稀疏权重矩阵更容易。
在本文中,我们提出了一种简单而有效的网络训练方案——网络瘦身,解决了在资源有限的情况下部署大型cnn时所面临的所有挑战。我们的方法在批处理规范化(BN)层的缩放因子上施加L1正则化,因此很容易实现,而不需要对现有的CNN体系结构进行任何更改。通过L1正则化将BN标度因子的值推至零,使我们能够识别不重要的通道(或神经元),因为每个标度因子对应一个特定的卷积通道(或全连接层中的一个神经元)。这有助于在接下来的步骤中进行通道级修剪。额外的正则化术语很少会损害性能。事实上,在某些情况下,它会导致更高的泛化精度。修剪不重要的通道有时可能会暂时降低性能,但这种影响可以通过随后对修剪后的网络进行微调来补偿。经过修剪后,得到的窄网络在模型大小、运行时内存和计算操作方面比最初的宽网络紧凑得多。上述过程可以重复几次,产生一个多通道网络瘦身方案,从而导致更紧凑的网络。
在几个基准数据集和不同网络架构上的实验表明,我们可以获得与原始模型相比高达20倍的模式大小压缩和5倍的计算操作减少的CNN模型,同时实现相同甚至更高的精度。此外,我们的方法通过传统硬件和深度学习软件包实现了模型压缩和推理加速,因为生成的更窄模型不包含任何稀疏存储格式或计算操作。
本节从五个方面论述相关工作。
低秩分解 利用奇异值分解(SVD)[7]等技术,将神经网络中的权重矩阵近似为低秩矩阵。这种方法在全连接层上工作得特别好,产生了约3倍模型大小的压缩,但没有显著的速度加速,因为CNN的计算操作主要来自卷积层。
权重量化。 HashNet[3]提出量化网络权重。在训练之前,网络权重被散列到不同的组中,并且在每个组中共享权重值。这样只需要存储共享的权值和哈希索引,可以节省大量的存储空间。[12]在深度压缩管道中使用了改进的量化技术,在AlexNet和VGGNet上实现了35到49倍的压缩率。然而,这些技术既不能节省运行时内存也不能节省推理时间,因为在推理期间共享权值需要恢复到它们的原始位置。
[28,6]将实值权重量化为二进制/三元权重(权重值限制为{−1,1}或{−1,0,1}。这将节省大量的模型大小,并且在给定位操作库的情况下还可以获得显著的加速。然而,这种激进的低位近似方法通常会带来适度的精度损失。
权重修剪/稀疏。 [12]提出在训练过的神经网络中,用小权值修剪不重要的连接。得到的网络的权值大多为零,因此可以通过以稀疏格式存储模型来减少存储空间。然而,这些方法只能通过专用的稀疏矩阵运算库和/或硬件实现加速。运行时内存节省也非常有限,因为大部分内存空间是由激活映射(仍然很密集)消耗的,而不是权值。
在[12]中,训练期间没有关于稀疏性的指导。[32]通过显式地对每个带有附加门变量的权重施加稀疏约束来克服这一限制,并通过删除门值为零的连接来实现高压缩率。该方法获得了比[12]更好的压缩率,但也有同样的缺点。
结构化修剪/稀疏化。 最近,[23]提出在训练过的cnn中修剪传入权值较小的信道,然后对网络进行微调以恢复精度。[2]在训练前通过在卷积层中随机取消输入输出通道连接引入稀疏性,这也产生了较小的精度损失适中的网络。与这些工作相比,我们在训练时在优化目标中明确地施加信道稀疏性,使得信道修剪过程更加平滑,精度损失很小。
[37]在训练过程中施加了神经元水平的稀疏性,因此一些神经元可以被修剪以获得紧凑的网络。[35]提出了一种结构化稀疏学习(SSL)方法来稀疏cnn中不同级别的结构(例如过滤器、通道或层)。这两种方法都在训练过程中利用群稀疏正则化来获得结构化稀疏性。我们的方法不是在卷积权值上诉诸群稀疏性,而是在通道相关的缩放因子上施加简单的L1稀疏性,因此优化目标简单得多。
由于这些方法是修剪或稀疏网络结构的一部分(例如,神经元,通道),而不是单独的权重,它们通常需要较少的专用库(例如,稀疏计算操作)来实现推理加速和运行时内存节省。我们的网络瘦身也属于这一类,完全不需要特殊的库来获得好处。
神经结构学习。 虽然最先进的cnn通常是由专家设计的[22,31,14],但也有一些关于自动学习网络架构的探索。[20]引入子模块/超模块优化,在给定资源预算的情况下进行网络架构搜索。最近的一些研究[38,1]提出使用强化学习自动学习神经结构。这些方法的搜索空间非常大,因此需要训练数百个模型来区分好的和坏的。网络精简也可以被视为体系结构学习的一种方法,尽管选择仅限于每个层的宽度。但是,与上述方法相比,网络瘦身只通过一个单一的训练过程来学习网络架构,这符合我们追求效率的目标。
我们的目标是提供一个简单的方案来实现深度cnn的通道级稀疏性。在本节中,我们首先讨论通道级稀疏性的优点和挑战,并介绍如何在批处理规范化中利用伸缩层来有效地识别和删除网络中不重要的通道。
通道级稀疏性的优点。 正如之前的工作[35,23,11]所讨论的,稀疏性可以在不同的级别上实现,例如权值级、内核级、通道级或层级。细粒度级(例如,权重级)稀疏性提供了最高的灵活性,而通用性导致了更高的压缩率,但它通常需要特殊的软件或硬件加速器对稀疏模型[11]进行快速推断。相反,最粗糙的层级稀疏性不需要特殊的包来获取推断加速,但它的灵活性较差,因为一些完整的层需要修剪。事实上,只有当深度足够大时,例如超过50层时,删除层才有效[35,18]。相比之下,通道级稀疏性在灵活性和实现的简易性之间提供了很好的折衷。它可以应用于任何典型的CNN或全连接网络(将每个神经元视为一个通道),得到的网络本质上是未修剪网络的“减薄”版本,可以在传统CNN平台上高效推断。
挑战。 实现通道级稀疏性需要修剪与通道关联的所有传入和传出连接。这使得在预训练的模型上直接修剪权值的方法无效,因为不太可能通道输入或输出端的所有权值都接近零。正如[23]中报道的那样,在预训练的ResNets上修剪通道只能导致参数数量减少约10%,而不会损失准确性。[35]通过在训练目标中强制稀疏正则化来解决这个问题。具体来说,他们采用组LASSO,在训练过程中同时将同一信道对应的所有滤波器权值推入零。然而,这种方法需要计算附加正则化项相对于所有过滤器权值的梯度,这是非平凡的。我们介绍一个简单的想法来解决上述挑战,详细内容如下。
尺度因子与稀疏性惩罚。 我们的想法是为每个通道引入一个缩放因子 γ \gamma γ,它乘以该通道的输出。然后我们联合训练网络权重和这些比例因子,对后者进行稀疏正则化。最后用小因子对这些通道进行修剪,并对修剪后的网络进行微调。具体来说,我们方法的训练目标是由
L = ∑ ( x , y ) l ( f ( x , W ) , y ) + λ ∑ γ ∈ Γ g ( γ ) (1) L=\sum_{(x, y)} l(f(x, W), y)+\lambda \sum_{\gamma \in \Gamma} g(\gamma) \tag{1} L=(x,y)∑l(f(x,W),y)+λγ∈Γ∑g(γ)(1)
在(x,y)表示训练输入和目标,W表示可训练权重,第一个和项对应于CNN的正常训练损失,g(·)是缩放因子上的稀疏诱导惩罚, γ \gamma γ平衡了这两个项。在我们的实验中,我们选择 g ( s ) = ∣ s ∣ g(s)=|s| g(s)=∣s∣,它被称为L1范数,广泛用于实现稀疏性。采用次梯度下降法对非平滑L1惩罚项进行优化。另一种选择是将L1惩罚替换为平滑-L1惩罚[30],以避免在非平滑点使用次梯度。
由于修剪一个通道本质上对应于删除该通道的所有传入和传出连接,我们可以直接获得一个狭窄的网络(见图1),而不求助于任何特殊的稀疏计算包。比例因子是渠道选择的代理因子。由于它们与网络权重共同优化,网络可以自动识别不重要的通道,可以安全地去除这些通道,而不会对泛化性能造成很大影响。
利用BN层中的缩放因子。批归一化[19]已被大多数现代cnn作为标准方法来实现快速收敛和更好的泛化性能。BN将激活归一化的方式促使我们设计了一种简单而有效的方法来合并信道相关的缩放因子。特别地,BN层使用小批统计数据规范内部激活。设 z i n z_{i n} zin和 z i o u t z_{iout} ziout是一个BN层的输入输出,B表示当前的小批,BN层进行以下转换:
z ^ = z i n − μ B σ B 2 + ϵ ; z out = γ z ^ + β (2) \hat{z}=\frac{z_{i n}-\mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^{2}+\epsilon}} ; \quad z_{\text {out }}=\gamma \hat{z}+\beta \tag{2} z^=σB2+ϵzin−μB;zout =γz^+β(2)
其中, μ B \mu_{\mathcal{B}} μB和 σ B \sigma_{\mathcal{B}} σB是输入激活比B的均值和标准差, γ \gamma γ和 β \beta β是可训练的仿射变换参数(尺度和位移),这提供了将归一化激活线性变换回任何尺度的可能性。
通常的做法是在卷积层之后插入BN层,使用通道缩放/移动参数。因此,我们可以直接利用BN层中的γ参数作为网络瘦身所需的缩放因子。它的最大优点是不给网络带来任何开销。事实上,这可能也是我们学习有意义的频道修剪比例因子的最有效的方法。1),如果在没有BN层的CNN上添加缩放层,缩放因子的值对于评估信道的重要性没有意义,因为卷积层和缩放层都是线性变换。通过减小缩放因子值,同时放大卷积层中的权值,可以得到相同的结果。2),如果在BN层之前插入一个标度层,标度层的标度效应将被BN中的归一化过程完全抵消。3),如果在BN层之后插入缩放层,每个通道有两个连续的缩放因子。
频道修剪与微调。 在信道级稀疏诱导正则化下进行训练后,我们得到了一个许多尺度因子接近零的模型(见图1)。然后我们可以通过去除所有的入出站连接和相应的权值,来修剪尺度因子接近零的信道。我们使用跨所有层的全局阈值来修剪通道,该阈值被定义为所有缩放因子值的某个百分比。例如,我们通过选择百分比阈值为70%来修剪70%具有较低比例因子的渠道。通过这样做,我们获得了一个更紧凑的网络,具有更少的参数和运行时内存,以及更少的计算操作。
当剪枝率较高时,剪枝可能会暂时导致一定的精度损失。但这在很大程度上可以通过后续的裁剪网络微调过程来弥补。在我们的实验中,经过微调的窄网络在很多情况下甚至可以达到比原始的未修剪网络更高的精度。
多路方案。 我们还可以将所提出的方法从单通道学习方案(稀疏正则化、修剪和微调训练)扩展到多通道学习方案。具体来说,一个网络瘦身过程会导致一个狭窄的网络,在这个网络上我们可以再次应用整个训练过程来学习一个更紧凑的模型。图2中的虚线说明了这一点。实验结果表明,该多通道方案在压缩率方面可以取得更好的效果。
处理跨层连接和预激活结构。 上面介绍的网络瘦身过程可以直接应用于大多数普通的CNN架构,如AlexNet[22]和VGGNet[31]。而当它应用于具有跨层连接和预激活设计的现代网络如ResNet[15]和DenseNet[17]时,需要进行一些调整。对于这些网络,一层的输出可以被视为多个后续层的输入,其中一个BN层放在卷积层之前。在这种情况下,稀疏性是在一层的传入端实现的,也就是说,该层有选择地使用它接收到的通道的子集。为了在测试时获得参数和计算节省,我们需要放置一个通道选择层来屏蔽我们已经识别的不重要的通道。
我们在几个基准数据集上实证证明了网络瘦身的有效性。我们在[10]之前基于ResNets的公开可用Torch[5]实现实现了我们的方法。该代码位于https://github.com/liuzhuang13/slimming。
CIFAR。 两个CIFAR数据集[21]由分辨率32×32的自然图像组成。CIFAR-10从10个类中抽取,CIFAR-100从100个类中抽取。列车和测试集分别包含5万和1万张图像。在CIFAR-10上,从训练集中分离出5000张图像的验证集,用于在每个模型上搜索λ(在公式1中)。在对所有训练图像进行训练或微调后,我们报告最终的测试错误。采用标准的数据增强方案(移位/镜像)[14,18,24]。使用通道均值和标准差对输入数据进行规范化处理。我们还将我们的方法与CIFAR数据集上的[23]进行了比较。
SVHN。 街景门牌号(SVHN)数据集[27]由32x32的彩色数字图像组成。按照惯例[9,18,24],我们使用所有604,388张训练图像,从中我们将6000张图像的验证集分离出来,用于训练期间的模型选择。测试集包含26032张图像。在训练过程中,我们选择验证误差最小的模型作为要修剪的模型(或基线模型)。我们还报告了在微调过程中验证误差最小的模型的测试误差。
ImageNet。 ImageNet数据集包含120万张训练图像和5000张1000个类的验证图像。我们采用[10]中的数据增强方案。我们报告了最终模型的单中心裁剪验证误差。
在CIFAR和SVHN数据集上,我们在VGGNet[31]、ResNet[14]和DenseNet[17]三个流行的网络架构上评估了我们的方法。VGGNet最初是为ImageNet分类而设计的。对于我们的实验,CIFAR数据集的原始VGGNet的一个变体取自[36]。对于ResNet,采用了164层瓶颈结构的预激活ResNet (ResNet-164)[15]。对于DenseNet,我们使用生长速率为12的40层DenseNet (DenseNet-40)。
在ImageNet数据集上,我们采用11层(8-conv + 3 FC)“VGG-A”网络[31]模型,从[4]批量归一化。我们删除了dropout层,因为我们使用了相对繁重的数据增强。为了修剪完全连接层中的神经元,我们将其视为空间大小为1×1的卷积通道。
在MNIST数据集上,我们在与[35]相同的3层全连接网络上评估我们的方法
正常训练。 我们通常从零开始训练所有网络作为基线。所有网络都使用SGD进行训练。在CIFAR和SVHN数据集上,我们分别使用小批量大小64训练160和20个时期。初始学习率设置为0.1,并在训练epochs总数的50%和75%时除以10。在ImageNet和MNIST数据集上,我们分别为60和30个epochs训练我们的模型,批量大小为256,初始学习率为0.1,在训练epochs的1/3和2/3之后除以10。我们使用 1 0 − 4 10^{-4} 10−4的权重衰减,Nesterov动量[33]为0.9,无阻尼。采用[13]引入的权重初始化。我们的优化设置严格遵循[10]中的原始实现。在我们的所有实验中,我们将所有信道缩放因子初始化为0.5,因为与[10]中的默认设置(全部初始化为1)相比,这为基线模型提供了更高的精度。
稀疏训练。 对于CIFAR和SVHN数据集,当使用信道稀疏正则化进行训练时,超参数λ(控制经验损失和稀疏性之间的权衡)由CIFAR-10验证集上 1 0 − 3 , 1 0 − 4 , 1 0 − 5 10^{−3},10^{−4},10^{−5} 10−3,10−4,10−5的网格搜索决定。对于VGGNet,我们选择λ= 1 0 − 4 10^{−4} 10−4,对于ResNet和DenseNet,我们选择λ= 1 0 − 5 10^{−5} 10−5。对于VGG-A在ImageNet上,我们设置λ= 1 0 − 5 10^{−5} 10−5。所有其他设置保持与正常训练相同。
修剪。 当我们修剪稀疏训练的模型通道时,需要确定尺度因子的修剪阈值。在[23]中,不同的层按不同的比率修剪,为了简单起见,我们使用全局修剪阈值。修剪阈值由所有缩放因子中的一个百分位决定,例如,40%或60%的通道被修剪。修剪过程是通过建立一个新的更窄的模型,并从用稀疏性训练的模型复制相应的权重来实现的。
微调。 在修剪之后,我们得到一个更窄更紧凑的模型,然后对其进行微调。在CIFAR、SVHN和MNIST数据集上,微调使用与训练中相同的优化设置。对于ImageNet数据集,由于时间限制,我们对裁剪后的VGG-A进行了微调,仅在5个epochs内以 1 0 − 3 10^{−3} 10−3的学习率进行了微调。
CIFAR和SVHN的结果如表1所示。我们用黑体字标出一个模型的所有最低测试误差。
参数和触发器减少。 网络瘦身的目的是减少所需的计算资源。每个模型的最后一行都有≥60%的通道修剪,同时仍然保持与基线相似的精度。参数节省可达10×。触发器的减少通常在50%左右。为了突出显示网络瘦身的效率,我们在图3中绘制了节省的资源。可以观察到,VGGNet有大量的冗余参数,可以进行修剪。在ResNet-164上,参数和触发器的节省相对来说是微不足道的,我们推测这是由于它的“瓶颈”结构已经起了选择通道的作用。另外,在CIFAR-100上,减少率通常略低于CIFAR-10和SVHN,这可能是由于CIFAR-100包含更多的类。
正则化的效果。 从表1中我们可以观察到,在ResNet和DenseNet上,通常当修剪40%的通道时,经过微调的网络可以实现比原始模型更低的测试误差。例如,经过40%通道修剪的DenseNet-40在CIFAR-10上的测试误差为5.19%,比原始模型降低了近1%。我们假设这是由于L1稀疏性对通道的正则化效应,这自然提供了网络中间层的特征选择。我们将在下一节中分析这种影响。
ImageNet。 ImageNet数据集的结果如表2所示。当修剪50%通道时,参数节省超过5×,而触发器节省仅为30.4%。这是因为所有计算密集的卷积层中只有378个(2752个)通道被修剪,而参数密集的全连接层中有5094个神经元(8192个)被修剪。值得注意的是,我们的方法可以在1000类ImageNet数据集上实现节省而不损失精度,而其他高效cnn的方法[2,23,35,28]大多呈现精度损失。
MNIST。 在MNIST数据集上,我们将我们的方法与表3中的结构化稀疏学习(SSL)方法[35]进行比较。尽管我们的方法主要是设计来修剪卷积层中的通道,但它也可以很好地修剪全连接层中的神经元。在这个实验中,我们观察到使用全局阈值的修剪有时会完全删除一个层,因此我们在两个中间层中分别修剪80%的神经元。我们的方法的性能略优于[35],因为在修剪更多参数的同时实现了略低的测试误差。
我们在补充材料中提供了一些额外的实验结果,包括:(1)CIFAR-10上的紧凑VGGNet的详细结构;(2)在实践中节省挂钟时间和运行时内存。(3)与之前的信道修剪方法[23]进行比较;
我们使用VGGNet对CIFAR数据集采用多通道方案。因为没有跳跃式连接,修剪掉整个层将完全破坏模型。因此,除了设置百分比阈值为50%之外,我们还设置了一个约束,即在每一层中,最多可以修剪50%的通道。
各迭代模型的测试误差如表4所示。随着修剪过程的进行,我们得到越来越紧凑的模型。在CIFAR-10上,训练过的模型在迭代5中达到了最低的测试误差。该模型实现了20×参数减少和5×触发器减少,同时仍然实现了较低的测试误差。在CIFAR-100上,迭代3之后,测试误差开始增加。这可能是由于它包含的类比CIFAR-10更多,因此过于激进地裁减通道将不可避免地损害性能。然而,我们仍然可以修剪近90%的参数和近70%的FLOPs,而没有显著的精度损失。
在网络瘦化中有两个关键的超参数,剪枝百分比t和稀疏正则化项λ的系数(见等式1)。在本节中,我们将更详细地分析它们的影响。
修剪率的影响。 一旦我们获得了一个经过稀疏正则化训练的模型,我们需要决定从模型中删除多少百分比的通道。如果我们修剪的频道太少,节省的资源就会非常有限。但是,如果我们修剪过多的通道,可能对模型是破坏性的,通过微调可能无法恢复精度。我们在cifr -10上训练一个λ=10−5的DenseNet-40模型,以显示修剪不同百分比的通道的效果。图5总结了结果。
从图5可以看出,只有当修剪比超过阈值时,裁剪或微调模型的分类性能才会下降。微调过程通常可以补偿修剪可能造成的精度损失。只有当阈值大于80%时,微调模型的测试误差才会落后于基线模型。值得注意的是,当使用稀疏性训练时,即使没有微调,模型也比原始模型表现得更好。这可能是由于L1稀疏性对信道标度因子的正则化效应。
通道稀疏正则化。 L1稀疏项的目的是迫使许多比例因子接近零。方程1中的参数λ控制了它与正常训练损失相比的显著性。在图4中,我们绘制了不同λ值下整个网络的比例因子分布。在这个实验中,我们使用了在CIFAR-10数据集上训练的VGGNet。
可以观察到,随着λ的增加,缩放因子越来越集中在零附近。当λ=0时,即没有稀疏正则化时,分布相对平坦。当λ=10−4时,几乎所有的比例因子都落在接近零的一个小区域。这一过程可以看作是发生在深度网络中间层的特征选择,其中只选择具有不可忽略比例因子的通道。我们通过热图进一步可视化这一过程。图6显示了VGGNet中一个层的缩放因子的大小,以及训练过程。每个通道开始时权重相等;随着训练的进行,一些通道的缩放因子变大(亮),而另一些通道的缩放因子变小(暗)。
为了学习更紧凑的cnn,我们提出了网络瘦身技术。它直接对批处理归一化层中的尺度因子进行稀疏诱导正则化,从而在训练过程中自动识别不重要的通道并进行修剪。在多个数据集上,我们已经证明了所提出的方法能够显著降低最先进网络的计算成本(高达20×),且没有精度损失。更重要的是,该方法同时减少了模型的大小、运行时内存和计算操作,同时为训练过程引入了最小的开销,得到的模型不需要特殊的库/硬件来进行有效的推断。