Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration

该文提出了一种名为FPGM的滤波器剪枝方法,通过计算几何中位数来选择可替代的滤波器,避免了依赖于范数的剪枝准则。这种方法在CIFAR-10数据集上表现出色,挑战了传统的基于范数大小的剪枝策略。FPGM方法考虑了滤波器的可替代性和分布特性,适用于不同的网络层和输入条件,且不需要固定的阈值。相比之前的权重剪枝和滤波器剪枝技术,FPGM提供了一种新的角度来优化神经网络的结构。
摘要由CSDN通过智能技术生成

Abstract

  • 解释了以前的工作中用的“基于范数的准则”,它需要在两个条件下才可以有效:
    1.范数的方差要大
    2.范数的最小值要比较小 (我倒是觉得这个还是比较容易满足的)
  • 提出了:Filter Pruning via Geometric Median (FPGM),
  • 在Cifai10 上取得了好成绩(感觉有点low)

Introduction

  • 现在的剪枝可以由两类:
    1.weight pruning (导致非结构化稀疏)

    • learning compression algorithms for neural net pruning.
    • Learning both weights and connections for efficient neural network.

    2.filter pruning (文章想说的)

    • Pruning networks using neuron importance score propagation.
    • Pruning filters for efficient ConvNets.
  • 现在的一些基于大小准则的剪枝方法(如图1a):
    1.Pruning filters for efficient ConvNets.
    2.Rethinking the smaller-norm-less-informative assumption in channel pruning of convolution layers
    3.Soft filter pruning for accelerating deep convolutional neural networks.
    图1

    如果这样做有效的话,那么所有层的剪枝后对整体的影响就一样了,此外他这个还需要一个阈值,这个阈值也可以根据层改变,阈值确定的标准也可以依据层变化。

  • 本文提出的 FPGM 剪枝算法不选择最大范数准则,选择计算所有filter 的 GM ,来找到最容易被替代的 filter。原理:某个卷积核可以被相似的线性替代。

RelatedWorks

  • Weight Pruning
  1. learning compression algorithms for neural net pruning[11].
    一种基于迭代的方法,每次去掉小于阈值的weight
  2. Learning both weights and connections for efficient neural network.
    最小化损失函数
  • Data Dependent Filter Pruning
  1. 从下一层的统计结果出发,进行剪枝
  • Data Independent Filter Pruning

Methodology

在这里插入图片描述

  • 一般而言真实的分布与假设的分布是不同的。

    其实这里所谓的真实分布也是想象出来的,没有做实验,此外你如何保证每层都服从单峰而不是双峰,或者长尾分布呢?
    此外,对于不同模型、模型的不同层、甚至是不同的输入都会导致分布的变化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值