通用卷积核用于模型压缩和加速 卷积 作用

   2023-02-13 学习力593
核心提示:介绍一下最近看的一种通用卷积核用于模型压缩的方法,刚刚查了一下,原作者的博客在https://zhuanlan.zhihu.com/p/82710870 有介绍,论文传送门 https://papers.nips.cc/paper/7433-learning-versatile-filters-for-efficient-convolutional-neural-network

介绍一下最近看的一种通用卷积核用于模型压缩的方法,刚刚查了一下,原作者的博客在https://zhuanlan.zhihu.com/p/82710870 有介绍,论文传送门 https://papers.nips.cc/paper/7433-learning-versatile-filters-for-efficient-convolutional-neural-networks.pdf , github开源地址 https://github.com/huawei-noah/Versatile-Filters

下面介绍下我的理解。

这种模型压缩方法分为两步,一步是在spatial-wise的,一步是在channel-wise的,其实思想是一样的,这两步也就对应着我们平常一个filter, 假设是7x7x24x100,那么7x7对应的就是spatial-wise,24对应的就是channel-wise。24是input feature的深度,这个没法变就不管了。从spatial的角度来说,这100个input的filters,每个都是7x7x24,其实没有必要有100个,25个就可以了,怎么说呢?7x7的这个filter可以拆成7x7,5x5,3x3,1x1,就是4个子卷积核,那么其实有25个7x7x24的filter,就可以变换出100个filter了。这个7x7怎么拆呢?如下图,以5x5的为例,就是中间这个(b)图,5x5的卷积核就是最大的这个部分,3x3的子卷积核就是绿色加中间这个部分,其实是5x5的卷积核的一部分参数,相当于外面蓝色一圈填0,1x1的子卷积核就是中间这个红点点,这样三个子卷积核都是由5x5的卷积核变换而来,参数共享,其实在实际计算的时候,还可以实现计算共享,比起实际用3个5x5卷积核,计算量是要省的,参数大小也少了,memory的要求也降低了。

通用卷积核用于模型压缩和加速

 

 另一种就是channel-wise的压缩,基本思想跟上面的是完全一样的,这一次是在深度24这个方向上进行拆分,比如,1到22为一个子卷积核,3到24为一个子卷积核,这样就可以有两个卷积核了,结合上面的spatial-wise的压缩,就只要13个7x7x24的filter就可以了。与spatial-wise不同的是上一次出现了7x7卷积本尊,这一次没有24个channel的全的了。这样计算量也是要节省的,只有原来的22/24,并且中间还有一些结果是可以复用的,实际上会更省一些。

通用卷积核用于模型压缩和加速

 

 以上大概就是这个方法的精髓了。作者在图像分类和图像超分辨率几个经典网络上验证了自己的想法,证明了此方法的有效性。

=========================================

关于这个方法,我有一些疑问,其实这种方法降低了参数的***度,那么他为什么还可以达到和之前的网络一样的效果?是不是之前的网络参数就有很多冗余,或者说其实这样的选取参数是有意义的,其实是基于某种先验。

 

 
反对 0举报 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(2)
    【深度学习系列】卷积神经网络CNN原理详解(一)
    本文为【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(2)从上文的计算中我们可以看到,同一层的神经元可以共享卷积核,那么对于高位数据的处理将会变得非常简单。并且使用卷积核后图片的尺寸变小,方便后续计算,并且我们不需要手动去选取特征,
    03-08
  • 技术向:一文读懂卷积神经网络 - 艾斯1213
    技术向:一文读懂卷积神经网络自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet、cuda-convnet2。为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益。正文之前,先
    03-08
  • 卷积神经网络CNN理解 卷积神经网络 简书
    自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet、cuda-convnet2。为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益。正文之前,先说几点自己对于CNN的感触。先明
    03-08
  • 理解图像的卷积
    转自:https://www.zhihu.com/question/22298352从数学上讲,卷积就是一种运算。某种运算,能被定义出来,至少有以下特征:首先是抽象的、符号化的其次,在生活、科研中,有着广泛的作用比如加法: ,是抽象的,本身只是一个数学符号在现实中,有非常多的意
    03-08
  • 什么是卷积 什么是卷积网络
    什么是卷积 什么是卷积网络
    目录Feature mapsWhy not Linear335k or 1.3MBem...Receptive FieldFully connnectedPartial connectedLocally connectedRethink Linear layerFully VS LovallyWeight sharingWhy call Convolution?2D ConvolutionConvolution in Computer VisionCNN on feat
    03-08
  • Tensorflow--一维离散卷积 tensorflow一维卷积神经网络
    Tensorflow--一维离散卷积 tensorflow一维卷积
    一维离散卷积的运算是一种主要基于向量的计算方式一.一维离散卷积的计算原理一维离散卷积通常有三种卷积类型:full卷积,same卷积和valid卷积1.full卷积full卷积的计算过程如下:K沿着I顺序移动,每移动一个固定位置,对应位置的值相乘,然后对其求和其中K称
    03-08
  • TensorFlow系列专题(十四): 手把手带你搭建卷积神经网络实现冰山图像分类
    TensorFlow系列专题(十四): 手把手带你搭建卷积
    目录:冰山图片识别背景数据介绍数据预处理模型搭建结果分析总结 一、冰山图片识别背景这里我们要解决的任务是来自于Kaggle上的一道赛题(https://www.kaggle.com/c/statoil-iceberg-classifier-challenge),简单介绍一下赛题的背景:在加拿大的东海岸经常
    03-08
  • 卷积神经网络的“卷积”操作不等于数学上定义的卷积操作
    卷积神经网络的“卷积”操作不等于数学上定义的
    在介绍卷积神经网络CNN的时候,大部分教材在介绍“卷积操作”的时候都与下面这张图类似的说明这点让人很困惑,因为在数学上,卷积运算是这么定义的\((f * g )(t) = \int_{0}^{t} f(\tau) g(t - \tau)\, d\tau\)很明显,在与\(f(\tau)\)相乘的是\(g(t-\tau)\)
    03-08
  • 卷积神经网络——池化层学习——最大池化
    卷积神经网络——池化层学习——最大池化
    池化层(Pooling layers)除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下。先举一个池化层的例子,然后我们再讨论池化层的必要性。假如输入是一个4×4矩阵,用到的池化类型是最大池化(max
    03-08
  • opecv 卷积原理、边缘填充方式、卷积操作详解
    opecv 卷积原理、边缘填充方式、卷积操作详解
    什么是二维卷积呢?看下面一张图就一目了然:卷积就是循环对图像跟一个核逐个元素相乘再求和得到另外一副图像的操作,比如结果图中第一个元素5是怎么算的呢?原图中3×3的区域与3×3的核逐个元素相乘再相加:5=1×1+2×0+1×0+0×0+1×0+1×0+3×0+0×0+2×2
    03-08
点击排行