CN109063835B - 神经网络的压缩装置及方法 - Google Patents

神经网络的压缩装置及方法 Download PDF

Info

Publication number
CN109063835B
CN109063835B CN201810766922.1A CN201810766922A CN109063835B CN 109063835 B CN109063835 B CN 109063835B CN 201810766922 A CN201810766922 A CN 201810766922A CN 109063835 B CN109063835 B CN 109063835B
Authority
CN
China
Prior art keywords
filter
neural network
attenuation
factor vector
factor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810766922.1A
Other languages
English (en)
Other versions
CN109063835A (zh
Inventor
周文罡
周争光
李厚强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN201810766922.1A priority Critical patent/CN109063835B/zh
Publication of CN109063835A publication Critical patent/CN109063835A/zh
Application granted granted Critical
Publication of CN109063835B publication Critical patent/CN109063835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种神经网络的压缩装置及方法,其中,该装置包括:因子矢量确定单元,分别确定用于对神经网络中每一层的滤波器和滤波器形状进行衰减的第一因子矢量和第二因子矢量,其中,第一因子矢量包括衰减因子c=1和第一衰减因子α,第二因子矢量包括衰减因子c和第一衰减因子β,其中α和β均大于0且小于1;衰减单元,用于根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减;剪枝单元,用于对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络。本发明基于渐进抑制学习,对神经网络进行压缩,在网络训练过程中加入削弱权值的第一和第二衰减因子,将权值衰减为零从而可将其剪枝,从而得到结构精简的神经网络模型。

Description

神经网络的压缩装置及方法
技术领域
本发明涉及神经网络领域,尤其涉及一种神经网络的压缩装置及方法。
背景技术
近些年,深度神经网络(DNN)在计算机视觉领域取得了显著的成绩,而这突破性的进展则是因为人们拥有了大量的训练数据和强有力的计算资源。同时深度神经网络所需的存储空间和计算量也在不断增加。例如,被广泛使用的VGG-16网络需要500兆字节(MB)的存储空间,并且识别一张分辨率为224×224的图片需要15吉(G)次的浮点运算(FLOPs)。最近深度神经网络在嵌入式或者移动设备上的应用在渐渐发展,比如自动驾驶、智能手机和智能摄像头等。这些移动设备的特点是较少的存储空间、有限的计算资源和较短的电池使用时间,这就成了深度神经网络更好地部署在移动设备中的瓶颈。因此,深度神经网络压缩与加速作为一种解决办法变得越来越热门,其目的是设计一种方法在保证网络性能没有明显降低的条件下减少网络的存储空间并加快网络的识别速度。
在众多的深度神经网络压缩与加速方法中,基于网络剪枝方法的研究最为热门。剪枝方法通常先在一个计算资源充足的设备上将大网络采用一种剪枝策略训练或者微调出一个稀疏的小网络模型,之后把小模型的参数部署在资源受限的移动设备上就可以运行了。较早的剪枝方法是一种不规则的剪枝,将深度神经网络中的一些权重置为零从而实现减少网络存储空间的目的。但是这种不规则的网络模型不利于网络的加速,除非要设计特别的硬件来实现。后来的剪枝方法则变成一种网络结构层面的剪枝,即剪枝网络的滤波器(filters)、通道(channels)或者滤波器形状(filter shapes)等。这类剪枝方法可以分成两类:(1)先在已经训练好的大模型上应用剪枝方法,然后通过微调步骤来恢复性能。但是这种方法需要先有一个训练好的网络模型,而对于一个新的识别任务往往没有训练好的模型,这就要额外花费不少时间来训练好一个性能可观的大网络;(2)直接在网络训练过程中加入稀疏约束得到一个结构稀疏的模型,然后应用剪枝方法再通过微调步骤以恢复性能。这类剪枝方法由于在训练时加入了稀疏性的约束条件,会使得网络训练变得困难。
以下为现有技术缺点:
1、基于已经训练好的大模型的剪枝方法通常需要一个细致的微调步骤,而且已有训练好的模型这个条件有时满足不了,比如我们应用在一个新的识别任务上。
2、在网络训练过程中加入稀疏约束的剪枝方法不仅由于稀疏约束惩罚项的加入使得网络的训练变得困难,而且在网络训练结束实施剪枝方法后还需要一个精细的微调步骤,这也导致结构精简的小模型得来变得费时。
发明内容
(一)要解决的技术问题
本发明的目的在于提供一种神经网络的压缩装置及方法,以解决上述的至少一项技术问题。
(二)技术方案
本发明的一方面,提供了一种神经网络的压缩装置,包括:
因子矢量确定单元,分别确定用于对神经网络中每一层的滤波器和滤波器形状进行衰减的第一因子矢量和第二因子矢量,其中,第一因子矢量包括衰减因子c=1和第一衰减因子α,第二因子矢量包括衰减因子c和第一衰减因子β,其中α和β均大于0且小于1;
衰减单元,用于根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减;
剪枝单元,用于对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络。
在本发明的一些实施例中,还包括:更新单元,用于通过反向传播算法更新所述滤波器的权重,并将第
Figure BDA0001726496970000025
层第i个更新后的滤波器记作
Figure BDA0001726496970000021
将第
Figure BDA0001726496970000023
层更新后的滤波器形状记作
Figure BDA0001726496970000022
其中,i≥0,
Figure BDA0001726496970000024
L为滤波器的层数。
在本发明的一些实施例中,所述衰减单元根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减,具体包括:
Figure BDA0001726496970000031
与第一因子矢量中的第i个衰减因子
Figure BDA0001726496970000032
相乘,确定一次衰减后的滤波器
Figure BDA0001726496970000033
Figure BDA0001726496970000034
其中,
Figure BDA0001726496970000035
N为每一层的滤波器的个数;
重复滤波器的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛;
Figure BDA0001726496970000036
与第二因子矢量
Figure BDA0001726496970000037
进行运算,确定一次衰减后的滤波器形状
Figure BDA0001726496970000038
Figure BDA0001726496970000039
其中,
Figure BDA00017264969700000310
tile是TensorFlow中的一个函数,⊙表示对应元素间的相乘操作;
重复滤波器形状的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛。
在本发明的一些实施例中,剪枝单元对衰减后的滤波器和滤波器形状进行剪枝,具体包括:
将该神经网络的衰减后的滤波器在变形成二维矩阵形式的卷积核中以列的形式进行剪枝;
将该神经网络的衰减后的滤波器形状在变形成二维矩阵形式的卷积核中以行的形式进行剪枝。
本发明的另一方面,还提供了一种神经网络的压缩方法,包括:
分别确定用于对神经网络中每一层的滤波器和滤波器形状进行衰减的第一因子矢量和第二因子矢量,其中,第一因子矢量包括衰减因子c=1和第一衰减因子α,第二因子矢量包括衰减因子c和第一衰减因子β,其中α和β均大于0且小于1;
根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减;
对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络。
在本发明的一些实施例中,还包括:
通过反向传播算法更新所述滤波器的权重,并将第
Figure BDA00017264969700000313
层第i个更新后的滤波器记作
Figure BDA00017264969700000311
将第
Figure BDA00017264969700000314
层更新后的滤波器形状记作
Figure BDA00017264969700000312
其中,i≥0,
Figure BDA00017264969700000315
L为滤波器的层数。
在本发明的一些实施例中,根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减,具体包括:
Figure BDA0001726496970000041
与第一因子矢量中的第i个衰减因子
Figure BDA0001726496970000042
相乘,确定一次衰减后的滤波器
Figure BDA0001726496970000043
Figure BDA0001726496970000044
其中,
Figure BDA0001726496970000045
N为每一层滤波器的个数;
重复滤波器的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛;
Figure BDA0001726496970000048
与第二因子矢量
Figure BDA00017264969700000410
进行运算,确定一次衰减后的滤波器形状
Figure BDA0001726496970000049
Figure BDA0001726496970000046
其中,
Figure BDA0001726496970000047
tile是TensorFlow中的一个函数,⊙表示对应元素间的相乘操作;
重复滤波器形状的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛。
在本发明的一些实施例中,对衰减后的滤波器和滤波器形状进行剪枝,具体包括:
将该神经网络的衰减后的滤波器在变形成二维矩阵形式的卷积核中以列的形式进行剪枝;
将该神经网络的衰减后的滤波器形状在变形成二维矩阵形式的卷积核中以行的形式进行剪枝。
(三)有益效果
本发明的神经网络的压缩装置及方法,相较于现有技术,至少具有以下优点:
1、本发明基于渐进抑制学习,对神经网络进行压缩,在网络训练过程中加入削弱权值的第一和第二衰减因子,将权值衰减为零从而可将其剪枝,从而快速得到结构精简的神经网络模型,可以被部署在需要的移动设备上。
2、本发明的一次迭代包括一次衰减和一次更新,更新权重之后再将所有权重与其对应的缩放因子矢量相乘,能够快速地对神经网络进行精简,且能够大幅提高其压缩率和加速率。
3、本发明在每一步更新权值之后再对所有权值进行衰减,没有在训练目标函数上加入任何惩罚项,不会增加网络训练难度。而且本发明从头训练一个神经网络,不需要预训练好的网络模型,故可以应用到一个新的任务中。
附图说明
图1为本发明实施例的神经网络的压缩装置的结构示意图;
图2为本发明中在滤波器层次的剪枝方法在神经网络某一层上的示意图;
图3为本发明实施例的可剪枝神经网络卷积核的位置示意图;
图4为本发明实施例的神经网络的压缩方法的步骤示意图。
具体实施方式
现有技术中,基于已经训练好的大模型的剪枝方法通常需要一个细致的微调步骤,而且已有训练好的模型这个条件有时满足不了;在网络训练过程中加入稀疏约束的剪枝方法不仅由于稀疏约束惩罚项的加入使得网络的训练变得困难,而且在网络训练结束实施剪枝方法后还需要一个精细的微调步骤,这也导致结构精简的小模型得来变得费时。
有鉴于此,本发明提供了一种神经网络的压缩装置及方法,不需训练好的大模型,也不需加入稀疏惩罚项从头训练一个网络,只需基于渐进抑制学习,对神经网络进行压缩,在网络训练过程中加入削弱权值的第一和第二衰减因子,将权值衰减为零从而可将其剪枝,从而能够快速得到结构精简的神经网络模型。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明实施例的一方面,提供了一种神经网络的压缩装置,如图1所示,该装置包括:
因子矢量确定单元1,分别确定用于对给定的神经网络中每一层的滤波器和滤波器形状进行衰减的第一因子矢量和第二因子矢量,其中,第一因子矢量包括衰减因子c=1和第一衰减因子α,第二因子矢量包括衰减因子c和第一衰减因子β,其中α和β均大于0且小于1;衰减单元2,用于根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减;剪枝单元3,用于对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络。其中α和β就对应着要被削弱和剪枝的滤波器或者滤波器形状。
此外,该装置还包括更新单元,这样能够得到性能较好的压缩的神经网络,本发明实施例在每一次衰减前都进行更新步骤,更具体地为:通过反向传播算法更新所述滤波器的权重,并将第
Figure BDA00017264969700000611
层第i个更新后的滤波器记作
Figure BDA0001726496970000061
将第
Figure BDA00017264969700000612
层更新后的滤波器形状记作
Figure BDA0001726496970000062
其中,i≥0,
Figure BDA00017264969700000613
L为滤波器的层数。
其中,衰减单元2用于根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状,具体包括:衰减单元2将
Figure BDA0001726496970000063
与第一因子矢量中的第i个衰减因子
Figure BDA0001726496970000064
相乘,确定一次衰减后的滤波器
Figure BDA0001726496970000065
Figure BDA0001726496970000066
其中,
Figure BDA0001726496970000067
N为每一层的滤波器的个数;重复滤波器的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛;将
Figure BDA0001726496970000068
与第二因子矢量
Figure BDA00017264969700000614
进行运算,确定一次衰减后的滤波器形状
Figure BDA00017264969700000615
Figure BDA0001726496970000069
其中,
Figure BDA00017264969700000610
tile是TensorFlow中的一个函数,⊙表示对应元素间的相乘操作;
重复滤波器形状的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛。
剪枝单元3用于对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络,具体指:
将该神经网络的衰减后的滤波器在变形成二维矩阵形式的卷积核中以列的形式进行剪枝;
将该神经网络的衰减后的滤波器形状在变形成二维矩阵形式的卷积核中以行的形式进行剪枝。
接着,介绍滤波器层次(filter-level)的剪枝。
深度神经网络通常包含一些卷积层后跟一些全连接层。卷积操作是将一个大小为H×W×M输入特征图X通过一个大小为d×d×M×N的卷积核张量K映射为大小为H′×W′×N的输出特征图Y。卷积核张量的前两维是空间维度,第三维是输入特征图的通道(channel)维,第四维是输出特征图的channel维。其中卷积核张量K可理解为是N个大小是d×d×M的滤波器。类似地,全连接操作是将大小为M的输入特征向量U通过大小为M×N的权重矩阵W映射为大小为N的输出向量V。全连接可看成是1×1的卷积操作,其中的卷积核张量是1×1×M×N。神经网络任一层的第i个输出特征通道yi可以由下式计算:
Figure BDA0001726496970000071
其中,
Figure BDA0001726496970000072
表示卷积操作,ki是这一层的第i个滤波器并且bi∈R是相应的第i个偏置。由于偏置对于网络训练没有影响而且可以在实际训练中舍弃偏置,因此此后我们不再提及偏置项。
为简单清楚起见,我们在某一层中介绍我们的方法。设
Figure BDA0001726496970000073
是第
Figure BDA00017264969700000710
层的卷积核,每个元素对应一个滤波器(filter),在卷积层中
Figure BDA0001726496970000074
而在全连接层中
Figure BDA0001726496970000075
我们定义一个filter-wise缩放因子矢量
Figure BDA0001726496970000076
其中
Figure BDA0001726496970000077
参数α用来在网络训练过程中削弱权重并且指示了那些将被剪枝的filters。因此α在缩放因子中的比例直接决定了之后网络滤波器的剪枝比例,也间接可以得到剪枝后的网络压缩倍数和加速倍数。反过来说,缩放因子中α的比例可根据我们预先设置的剪枝比例确定,α具体的位置可以随机设置,这是因为神经网络训练前每个滤波器对网络的重要性是等同的,而α相对应的滤波器的重要性才会在网络训练过程中渐渐减小,另外一部分滤波器将会学习到更紧凑的特征。
如图2所示,通过反向传播(BP)算法一步一步更新权重,且在每步BP更新后加入一个削弱步骤,特别地,令
Figure BDA0001726496970000078
是一次BP更新后的第
Figure BDA00017264969700000711
层的第i个滤波器,我们使用下式来削弱滤波器:
Figure BDA0001726496970000079
即将所有filters中的权值乘于对应的缩放因子,如果该缩放因子小于1,则这些滤波器里的权值将在每一步减小一点点。而且由于小于1的因子α很接近于1,因此每步这种很小的改变对网络的训练几乎没有任何影响。而像这样训练足够步数之后,跟我们预期的一致,那些乘于缩放因子α的滤波器里的权值将会变成0。我们可安全地删除这些滤波器而不影响神经网络性能。
因为我们的缩放因子是对每一个滤波器做约束,这可大大减少网络参数。更重要的是,当第i个滤波器(filter)被移除时,下一层的所有滤波器对应的第i个通道(channel)也会被剪枝。因此在我们的方法中,没有引入通道层次(channel-wise)的缩放因子来剪枝卷积核的channels。
图2为本发明中在滤波器层次的剪枝方法在神经网络某一层上的示例。此图包含两个部分,左边实线框里的是网络渐进抑制训练过程,右边实线框里的是通过剪枝训练结束后的滤波器得到的精简网络。图中的Scalingfactors即为滤波器层次的缩放因子α,每一个长方体表示该层的一个滤波器。网络训练时,在每一步反向传播更新权值之后,将所有滤波器乘于对应的缩放因子,最后,那些乘于缩放因子小于1的滤波器里的权值则衰减至0(如图中的虚线长方体表示),即可将它们剪枝然后得到可部署在移动设备上的小网络。
然后,介绍滤波器形状层次(filter shape-level)的剪枝。
在很多深度学习框架中(例如Caffe和TensorFlow),卷积计算通常被转换为矩阵相乘运算,即将输入特征图和卷积核变形成二维矩阵形式。输入特征图被分成许多小块,每一块都变形为大小为d×d×M的行向量,同时卷积核可变形为大小为d2M×N的矩阵,矩阵的每一列对应卷积核的每个滤波器(filter),而每一行就对应着卷积核的滤波器形状(filter shape)。
如图3所示,除了剪枝网络的filters,对应着图3(a)中用实粗线标记的那些列,我们的方法也可以移除卷积核的filter shapes,对应着图3(b)中那些标记的行。由于只有卷积层的卷积核才有滤波器形状,所以我们方法中滤波器形状层次的剪枝只应用在卷积层中。
对于第
Figure BDA0001726496970000083
卷积层来说,我们可以定义filter shape-wise缩放因子矢量
Figure BDA0001726496970000081
每个元素对应该层N个filter的d2M个filter shape。与剪枝滤波器方法中介绍的训练网络过程一样,我们在每一次反向传播(BP)步骤之后将所有权重乘于所在filter shape对应的缩放因子。设
Figure BDA0001726496970000082
是一次BP更新后的第
Figure BDA0001726496970000093
层的滤波器,我们通过下式来削弱滤波器形状:
Figure BDA0001726496970000091
Figure BDA0001726496970000092
其中,⊙表示对应元素间(element-wise)的相乘操作,“tile”是TensorFlow中的一个函数,它可以使输入的张量重复λ次(其中λ也是一个张量)得到新的张量。在网络训练足够多的步数后,那些乘于缩放因子α的滤波器里的权值将会变成0,从而可被安全地剪枝。
图3表示本发明可剪枝神经网络卷积核的位置。该图含有3个子图,每一个子图的大矩形表示卷积核变形后的矩阵,大矩形中的每个小方形代表矩阵中的一个元素值。矩阵的每一列代表卷积核的一个滤波器(filter)而每一行表示卷积核的一个滤波器形状(filter shape)。图中用实粗线标记的行或列对应我们的方法选择要剪枝的部分。子图(a)中有两列被标记,表示滤波器层次的剪枝;子图(b)中有四行被标记,代表滤波器形状层次的剪枝;子图(c)中则有两列和四行被标记,表示卷积核的两列和四行都会被剪枝,即结合了滤波器层次的剪枝和滤波器形状层次的剪枝。
由于filter-level剪枝和filter shape-level的剪枝是相互独立且互补的,故而我们可以结合两者即同时移除卷积核矩阵的行和列(如图3(c))以获得更高的网络压缩与加速倍数。
本发明在网络训练过程中进行并且针对网络的滤波器(filters)和滤波器形状(filter shapes)两个层面进行渐进抑制。由于神经网络通过反向传播算法训练,在训练过程中对网络权值一点很小的扰动不会对训练造成明显的影响。因此,在网络训练过程中加入一个削弱权值的步骤来一步一步地将权值衰减为零从而可将其剪枝。
由于训练前网络的每个滤波器的重要性等同,所以缩放因子中1的位置可以随机设置。然后,利用反向传播算法训练,且在每一步更新权重之后再将所有权重与其对应的缩放因子矢量相乘。由于网络训练一般需要成千上万次迭代,举例来说,α取0.99,而0.9910000≈2.25×10-44,所以那些每步都乘数值小于1的缩放因子的滤波器里的权值将在训练中间衰减至0。当训练到收敛时,由于那些缩放因子小于1(α和β)对应的滤波器或者滤波器形状的权值已经衰减为0,即已经确定冗余的滤波器和滤波器形状的具体位置,因此我们可以直接将这些位置上的所有权值剪枝移除得到一个结构精简的小模型,从而可以被部署在需要的移动设备上使用。
最后,结合网络压缩和加速性能分析,说明本发明的效果。
深度神经网络不能很好地应用在移动设备的原因是其所需的存储空间大、运行时消耗的能量大和运算速度慢。而我们的滤波器剪枝的方法可以很好地解决这些问题:(1)网络的存储空间主要反映在网络的参数数量,剪枝滤波器有效地减少了网络的卷积核的参数;(2)网络运行时消耗的能量主要反映在网络运行时中间的特征图的大小,而剪枝滤波器则很好地将每层卷积输出的特征图的通道数降低从而降低了神经网络运行时消耗的能量;(3)网络的运算速度主要取决于网络的浮点运算次数(FLOPs),而剪枝滤波器可以减小卷积操作中矩阵的大小从而使得浮点计算次数大大降低。下面我们具体分析我们的方法的理论网络压缩与加速性能。
给定缩放因子矢量,我们通过下式来计算缩放因子中常数1所占的比例,即:
Figure BDA0001726496970000101
其中I(·)代表指示函数,令
Figure BDA0001726496970000109
Figure BDA0001726496970000102
的倒数。另外令
Figure BDA0001726496970000103
Figure BDA0001726496970000104
分别对应第
Figure BDA00017264969700001010
层的滤波器层次的缩放因子和滤波器形状层次的缩放因子通过上述公式计算得到的参数。深度神经网络的参数主要由卷积层和全连接层的卷积核构成,我们知道在原始网络中第
Figure BDA00017264969700001011
卷积层和全连接层的参数数目分别为
Figure BDA00017264969700001012
Figure BDA00017264969700001013
包含的浮点运算次数分别为
Figure BDA00017264969700001014
Figure BDA00017264969700001015
表1为第
Figure BDA00017264969700001016
层理论上的压缩率和加速率,如表1所示,我们可以很容易地得到每一层的网络参数减少倍数和浮点运算减少倍数。另外,网络每层的输出特征图的大小也将减少
Figure BDA0001726496970000107
倍。
表1
Figure BDA0001726496970000108
Figure BDA0001726496970000111
本发明实施例的另一方面,还提供了一种神经网络的压缩方法,如图4所示,该方法包括:
S1、分别确定用于对神经网络中每一层的滤波器和滤波器形状进行衰减的第一因子矢量和第二因子矢量,其中,第一因子矢量包括衰减因子c=1和第一衰减因子α,第二因子矢量包括衰减因子c和第一衰减因子β,其中α和β均大于0且小于1;
S2、根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减;
S3、对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络。
在本发明的一些实施例中,还包括更新步骤:通过反向传播算法更新所述滤波器的权重,并将第
Figure BDA00017264969700001112
层第i个更新后的滤波器记作
Figure BDA0001726496970000112
将第
Figure BDA00017264969700001113
层更新后的滤波器形状记作
Figure BDA0001726496970000113
其中,i≥0,
Figure BDA00017264969700001114
L为滤波器的层数。
根据本发明的一种实施例,步骤S2可以包括以下子步骤:
S21、将
Figure BDA0001726496970000114
与第一因子矢量中的第i个衰减因子
Figure BDA0001726496970000115
相乘,确定一次衰减后的滤波器
Figure BDA0001726496970000116
Figure BDA0001726496970000117
其中,
Figure BDA0001726496970000118
N为每一层滤波器的个数;
S22、重复滤波器的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛
S23、将
Figure BDA0001726496970000119
与第二因子矢量
Figure BDA00017264969700001115
进行运算,确定一次衰减后的滤波器形状
Figure BDA00017264969700001116
Figure BDA00017264969700001110
其中,
Figure BDA00017264969700001111
tile是TensorFlow中的一个函数,⊙表示对应元素间的相乘操作;
S24、重复滤波器形状的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛。
在本发明的一些实施例中,步骤S3可以包括以下子步骤:
S31、将该神经网络的衰减后的滤波器在变形成二维矩阵形式的卷积核中以列的形式进行剪枝;
S32、将该神经网络的衰减后的滤波器形状在变形成二维矩阵形式的卷积核中以行的形式进行剪枝。
综上,本发明的神经网络的压缩装置及方法,对神经网络进行压缩,在网络训练过程中加入削弱权值的第一和第二衰减因子,将权值衰减为零从而可将其剪枝,从而得到结构精简的神经网络模型。
除非有所知名为相反之意,本说明书及所附权利要求中的数值参数是近似值,能够根据通过本发明的内容所得的所需特性改变。具体而言,所有使用于说明书及权利要求中表示组成的含量、反应条件等等的数字,应理解为在所有情况中是受到“约”的用语所修饰。一般情况下,其表达的含义是指包含由特定数量在一些实施例中±10%的变化、在一些实施例中±5%的变化、在一些实施例中±1%的变化、在一些实施例中±0.5%的变化。
再者,“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的“一”或“一个”不排除存在多个这样的元件。
说明书与权利要求中所使用的序数例如“第一”、“第二”、“第三”等的用词,以修饰相应的元件,其本身并不意味着该元件有任何的序数,也不代表某一元件与另一元件的顺序、或是制造方法上的顺序,该序数的使用仅用来使具有某命名的一元件得以和另一具有相同命名的元件能做出清楚区分。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种神经网络的压缩装置,其中,包括:
因子矢量确定单元,分别确定用于对神经网络中每一层的滤波器和滤波器形状进行衰减的第一因子矢量和第二因子矢量,其中,第一因子矢量和第二因子矢量是包含多个衰减因子的向量,其中第一因子矢量包含的衰减因子取值为1或α,第二因子矢量包含的衰减因子取值为1或β,α和β均大于0且小于1;
衰减单元,用于根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减;
剪枝单元,用于对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络。
2.根据权利要求1所述的神经网络的压缩装置,其中,还包括:
更新单元,用于通过反向传播算法更新所述滤波器的权重,并将第l层第i个更新后的滤波器记作
Figure FDA0003004687000000011
将第l层更新后的滤波器形状记作
Figure FDA0003004687000000012
其中,i≥0,1≤l≤L,L为滤波器的层数。
3.根据权利要求2所述的神经网络的压缩装置,其中,所述衰减单元根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减,具体包括:
Figure FDA0003004687000000013
与第一因子矢量中的第i个衰减因子
Figure FDA0003004687000000014
相乘,确定一次衰减后的滤波器
Figure FDA0003004687000000015
Figure FDA0003004687000000016
其中,
Figure FDA0003004687000000017
N为每一层的滤波器的个数;
重复滤波器的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛;
Figure FDA0003004687000000018
与第二因子矢量Zl进行运算,确定一次衰减后的滤波器形状Kl
Figure FDA0003004687000000019
其中,
Figure FDA00030046870000000110
tile是TensorFlow中的一个函数,⊙表示对应元素间的相乘操作;
重复滤波器形状的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛。
4.根据权利要求1所述的神经网络的压缩装置,其中,剪枝单元对衰减后的滤波器和滤波器形状进行剪枝,具体包括:
将该神经网络的衰减后的滤波器在变形成二维矩阵形式的卷积核中以列的形式进行剪枝;
将该神经网络的衰减后的滤波器形状在变形成二维矩阵形式的卷积核中以行的形式进行剪枝。
5.一种神经网络的压缩方法,其中,包括:
分别确定用于对神经网络中每一层的滤波器和滤波器形状进行衰减的第一因子矢量和第二因子矢量,其中,第一因子矢量和第二因子矢量是包含多个衰减因子的向量,其中第一因子矢量包含的衰减因子取值为1或α,第二因子矢量包含的衰减因子取值为1或β,α和β均大于0且小于1;
根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减;
对衰减后的滤波器和滤波器形状进行剪枝,确定压缩后的神经网络。
6.根据权利要求5所述的神经网络的压缩方法,其中,还包括:
通过反向传播算法更新所述滤波器的权重,并将第l层第i个更新后的滤波器记作
Figure FDA0003004687000000021
将第l层更新后的滤波器形状记作
Figure FDA0003004687000000022
其中,i≥0,1≤l≤L,L为滤波器的层数。
7.根据权利要求6所述的神经网络的压缩方法,其中,根据所述第一因子矢量与第二因子矢量分别对所述滤波器和滤波器形状进行衰减,具体包括:
Figure FDA0003004687000000023
与第一因子矢量中的第i个衰减因子
Figure FDA0003004687000000024
相乘,确定一次衰减后的滤波器
Figure FDA0003004687000000025
Figure FDA0003004687000000026
其中,
Figure FDA0003004687000000027
N为每一层滤波器的个数;
重复滤波器的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛;
Figure FDA0003004687000000028
与第二因子矢量Zl进行运算,确定一次衰减后的滤波器形状Kl
Figure FDA0003004687000000029
其中,
Figure FDA00030046870000000210
tile是TensorFlow中的一个函数,⊙表示对应元素间的相乘操作;
重复滤波器形状的更新和衰减,以实现多次迭代,每次迭代包括一次更新和一次衰减,直至神经网络收敛。
8.根据权利要求5所述的神经网络的压缩方法,其中,对衰减后的滤波器和滤波器形状进行剪枝,具体包括:
将该神经网络的衰减后的滤波器在变形成二维矩阵形式的卷积核中以列的形式进行剪枝;
将该神经网络的衰减后的滤波器形状在变形成二维矩阵形式的卷积核中以行的形式进行剪枝。
CN201810766922.1A 2018-07-11 2018-07-11 神经网络的压缩装置及方法 Active CN109063835B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810766922.1A CN109063835B (zh) 2018-07-11 2018-07-11 神经网络的压缩装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810766922.1A CN109063835B (zh) 2018-07-11 2018-07-11 神经网络的压缩装置及方法

Publications (2)

Publication Number Publication Date
CN109063835A CN109063835A (zh) 2018-12-21
CN109063835B true CN109063835B (zh) 2021-07-09

Family

ID=64816263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810766922.1A Active CN109063835B (zh) 2018-07-11 2018-07-11 神经网络的压缩装置及方法

Country Status (1)

Country Link
CN (1) CN109063835B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109634401B (zh) * 2018-12-29 2023-05-02 联想(北京)有限公司 一种控制方法和电子设备
CN109858613B (zh) * 2019-01-22 2021-02-19 鹏城实验室 一种深度神经网络的压缩方法、系统及终端设备
CN112734029A (zh) * 2020-12-30 2021-04-30 中国科学院计算技术研究所 一种神经网络通道剪枝方法、存储介质及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106355248A (zh) * 2016-08-26 2017-01-25 深圳先进技术研究院 一种深度卷积神经网络训练方法及装置
CN106548234A (zh) * 2016-11-17 2017-03-29 北京图森互联科技有限责任公司 一种神经网络剪枝方法及装置
CN107194346A (zh) * 2017-05-19 2017-09-22 福建师范大学 一种汽车疲劳驾驶预测方法
CN107239825A (zh) * 2016-08-22 2017-10-10 北京深鉴智能科技有限公司 考虑负载均衡的深度神经网络压缩方法
CN107688850A (zh) * 2017-08-08 2018-02-13 北京深鉴科技有限公司 一种深度神经网络压缩方法
WO2018058509A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Dynamic neural network surgery

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180096249A1 (en) * 2016-10-04 2018-04-05 Electronics And Telecommunications Research Institute Convolutional neural network system using adaptive pruning and weight sharing and operation method thereof

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107239825A (zh) * 2016-08-22 2017-10-10 北京深鉴智能科技有限公司 考虑负载均衡的深度神经网络压缩方法
CN106355248A (zh) * 2016-08-26 2017-01-25 深圳先进技术研究院 一种深度卷积神经网络训练方法及装置
WO2018058509A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Dynamic neural network surgery
CN106548234A (zh) * 2016-11-17 2017-03-29 北京图森互联科技有限责任公司 一种神经网络剪枝方法及装置
CN107194346A (zh) * 2017-05-19 2017-09-22 福建师范大学 一种汽车疲劳驾驶预测方法
CN107688850A (zh) * 2017-08-08 2018-02-13 北京深鉴科技有限公司 一种深度神经网络压缩方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Learning Efficient Convolutional Networks through Network Slimming;Zhuang Liu1 et al;《arXiv:1708.06519v1》;20170823;第1-10页 *
PRUNING FILTERS FOR EFFICIENT CONVNETS;Hao Li et al;《arXiv:1608.08710v3》;20170313;第1-13页 *
基于权值相似性的神经网络剪枝;黄聪等;《计算机科学与探索》;20171211;第1278-1285页 *
神经网络模型压缩方法综述;曹文龙等;《计算机应用研究》;20180417;第649-656页 *

Also Published As

Publication number Publication date
CN109063835A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
US20220012593A1 (en) Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization
CN107844828B (zh) 神经网络中的卷积计算方法和电子设备
CN108108811B (zh) 神经网络中的卷积计算方法和电子设备
CN109063835B (zh) 神经网络的压缩装置及方法
CN109635935B (zh) 基于模长聚类的深度卷积神经网络模型自适应量化方法
CN108764471A (zh) 基于特征冗余分析的神经网络跨层剪枝方法
CN112529165B (zh) 深度神经网络剪枝方法、装置、终端及存储介质
CN110751265A (zh) 一种轻量型神经网络构建方法、系统及电子设备
CN107395211A (zh) 一种基于卷积神经网络模型的数据处理方法及装置
CN111126595A (zh) 一种神经网络的模型压缩的方法和设备
KR20200110613A (ko) 정리 및 양자화 공동 실행 심층 신경망
CN114970853A (zh) 一种跨范围量化的卷积神经网络压缩方法
CN112598129A (zh) 基于ReRAM神经网络加速器的可调硬件感知的剪枝和映射框架
DE102017117381A1 (de) Beschleuniger für dünnbesetzte faltende neuronale Netze
JP2022101461A (ja) ニューラルネットワークに用いられる混合粒度に基づく共同スパース方法
Mousa-Pasandi et al. Convolutional neural network pruning using filter attenuation
CN115564043A (zh) 一种图像分类模型剪枝方法、装置、电子设备及存储介质
KR102583938B1 (ko) Lstm 가속을 위한 게이트-단위 가지치기 방법 및 장치
CN110766133B (zh) 嵌入式设备中的数据处理方法、装置、设备和存储介质
CN113554097B (zh) 模型量化方法、装置、电子设备和存储介质
CN115293978A (zh) 卷积运算电路和方法、图像处理设备
CN114781639A (zh) 面向边缘设备多层共享码本向量量化的深度模型压缩方法
CN114742221A (zh) 深度神经网络模型剪枝方法、系统、设备及介质
CN111783976A (zh) 一种基于窗口梯度更新的神经网络训练过程中间值存储压缩方法和装置
CN111507473A (zh) 一种基于Crossbar架构的剪枝方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant