CN117436482A - 神经网络剪枝方法、装置、芯片、设备、存储介质及产品 - Google Patents
神经网络剪枝方法、装置、芯片、设备、存储介质及产品 Download PDFInfo
- Publication number
- CN117436482A CN117436482A CN202210821299.1A CN202210821299A CN117436482A CN 117436482 A CN117436482 A CN 117436482A CN 202210821299 A CN202210821299 A CN 202210821299A CN 117436482 A CN117436482 A CN 117436482A
- Authority
- CN
- China
- Prior art keywords
- pruning
- convolution kernels
- neural network
- target
- convolution
- 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.)
- Pending
Links
- 238000013138 pruning Methods 0.000 title claims abstract description 505
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 235
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 239000011159 matrix material Substances 0.000 claims description 80
- 238000012549 training Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013473 artificial intelligence Methods 0.000 abstract description 7
- 230000000875 corresponding effect Effects 0.000 description 155
- 238000012545 processing Methods 0.000 description 14
- 244000141353 Prunus domestica Species 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 235000019580 granularity Nutrition 0.000 description 4
- 230000002787 reinforcement Effects 0.000 description 4
- 238000005520 cutting process Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning 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)
- Image Analysis (AREA)
Abstract
本申请提供了一种神经网络剪枝方法、装置、芯片、设备、存储介质及产品,属于人工智能技术领域。方法包括:确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式,第一卷积核为包括多个权重的矩阵;从第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式;基于第一数目个第一卷积核分别对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中,分别确定第一数目个第一卷积核分别对应的目标剪枝方式;基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第二神经网络。该方法提高了对神经网络进行剪枝的精度。
Description
技术领域
本申请涉及人工智能技术领域,特别涉及一种神经网络剪枝方法、装置、芯片、设备、存储介质及产品。
背景技术
随着人工智能技术的发展,神经网络的功能越来越强大,随之而来的问题就是神经网络的结构越来越复杂,导致通过神经网络进行推理时需要消耗大量的存储资源和计算资源,严重的限制了神经网络在存储资源和计算资源受限的硬件设备上的部署。因此,在硬件设备上部署神经网络之前,需要对神经网络进行剪枝。
神经网络包括多个卷积核,而卷积核为包括多个权重的矩阵。相关技术中,在对神经网络进行剪枝时,对多个卷积核分别剪去相同矩阵位置的权重。
然而,多个卷积核的多个矩阵位置的权重可能不同,这样对多个卷积核分别剪去相同矩阵位置的权重,使得对神经网络的剪枝较为粗糙,从而降低了对神经网络进行剪枝的精度。
发明内容
本申请实施例提供了一种神经网络剪枝方法、装置、芯片、设备、存储介质及产品,能够提高对神经网络剪枝的精度。所述技术方案如下:
一方面,提供了一种神经网络剪枝方法,所述方法包括:
确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式,所述第一卷积核为包括多个权重的矩阵,所述第一剪枝方式用于指示待剪枝的权重对应的矩阵位置;
从所述第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式,所述第二数目小于所述第一数目;
基于所述第一数目个第一卷积核分别对应的第一剪枝方式与所述第二数目个目标剪枝方式之间的匹配度,从所述第二数目个目标剪枝方式中,分别确定所述第一数目个第一卷积核分别对应的目标剪枝方式;
基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第二神经网络。
另一方面,提供了一种神经网络剪枝装置,所述装置包括:
第一确定模块,用于确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式,所述第一卷积核为包括多个权重的矩阵,所述第一剪枝方式用于指示待剪枝的权重对应的矩阵位置;
第二确定模块,用于确定从所述第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式,所述第二数目小于所述第一数目;
第三确定模块,用于基于所述第一数目个第一卷积核分别对应的第一剪枝方式与所述第二数目个目标剪枝方式之间的匹配度,从所述第二数目个目标剪枝方式中,分别确定所述第一数目个第一卷积核分别对应的目标剪枝方式;
第一剪枝模块,用于基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第二神经网络。
另一方面,提供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时用于实现上述任一实现方式所述的神经网络剪枝方法。
另一方面,提供了一种电子设备,所述电子设备包括上述所述的芯片。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现上述任一实现方式所述的神经网络剪枝方法。
另一方面,提供了一种计算机程序产品,所述计算机程序产品存储有至少一条程序代码,所述至少一条程序代码用于被处理器执行以实现如上述任一实现方式所述的神经网络剪枝方法。
本申请提供了一种神经网络剪枝方法,该方法从第一数目个第一卷积核分别对应的第一剪枝方式中选取出了第二数目个目标剪枝方式,由于该第二数目个目标剪枝方式是多个第一卷积核分别对应的剪枝方式中出现次数最多的剪枝方式,使得该第二数目个目标剪枝方式能够符合大部分第一卷积核的剪枝需求,进而基于该第二数目个目标剪枝方式为第一数目个第一卷积核进行剪枝,提高了对神经网络进行剪枝的精度。
附图说明
图1示出了本申请一个示例性实施例示出的实施环境的示意图;
图2示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图;
图3示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图;
图4示出了本申请一个示例性实施例示出的第一神经网络的L1范数分布示意图;
图5示出了本申请一个示例性实施例示出的神经网络的卷积运算架构图;
图6示出了本申请一个示例性实施例示出的剪枝后的神经网络的卷积运算架构图;
图7示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图;
图8示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图;
图9示出了本申请一个示例性实施例示出的神经网络剪枝装置的框图;
图10示出了本申请一个示例性实施例示出的电子设备的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本申请所涉及的相关数据可以为经用户授权或者经各方充分授权的数据。
在一些实施例中,本申请实施例提供的神经网络剪枝方法用于对卷积神经网络进行剪枝,卷积神经网络一般用于对图像进行处理,可以用于图像分类、图像识别、图像降噪、图像超分、图像风格迁移和图像生成等图像处理任务中,还可以用于语音识别、机器翻译和无人驾驶等任务中,但不局限于此。
其中,卷积神经网络包括至少一个卷积层,卷积层中包括至少一个滤波器,滤波器中包括至少一个通道,一个通道对应一个卷积核,卷积核为包括多个权重的矩阵。在一些实施例中,通过卷积神经网络进行图像处理时,卷积神经网络获取待处理图像的输入矩阵,即待处理图像的待推理特征,将该待推理特征输入卷积层,以通过卷积核的多个权重与该待推理特征中的矩阵元素相乘,得到该图像的特征矩阵,实现对图像的特征提取,进而基于提取的图像的特征对图像进行分类、识别等。
在一些实施例中,为了将神经网络部署到存储资源和计算资源受限的硬件设备中,一般会以神经网络中的滤波器、通道或卷积核的权重为最小单位对神经网络进行剪枝。其中,以滤波器为最小单位对神经网络进行剪枝,会剪去神经网络中的多个滤波器;以通道为最小单位对神经网络进行剪枝,会剪去神经网络中的多个通道,即剪去该多个通道分别对应的完整的卷积核;以卷积核的权重为最小单位对神经网络进行剪枝,会剪去卷积核中的部分权重。
请参考图1,其示出了本申请一个示例性实施例所提供的实施环境的示意图。在该实施环境中,电子设备提供为终端100或服务器200,或提供为终端100和服务器200,终端100与服务器200通过网络连接。
在一些实施例中,电子设备提供为服务器200,服务器200用于以神经网络中的滤波器、通道或卷积核的权重为最小单位对神经网络进行剪枝,以使剪枝后的神经网络能够部署在硬件设备上。在一些实施例中,电子设备提供为终端100,终端100用于以神经网络中的滤波器、通道或卷积核的权重为最小单位对神经网络进行剪枝,以使剪枝后的神经网络能够部署在硬件设备上。
在一些实施例中,电子设备提供为终端100和服务器200,终端100为待部署神经网络的硬件设备,终端100将其设备信息如存储资源和计算资源发送给服务器200,服务器200在基于终端100的设备信息确定该终端100为存储资源和计算资源受限的设备的情况下,以神经网络中的滤波器、通道或卷积核的权重为最小单位对神经网络进行剪枝,以使剪枝后的神经网络能够部署在该终端100上。
在一些实施例中,终端100为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不限于此。在一些实施例中,服务器200是独立的服务器也能够是多个物理服务器工程的服务器集群或者分布式系统,还能够是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
请参考图2,其示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图。本申请实施例中的执行主体为电子设备,方法包括:
201、确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式。
在本申请实施例中,第一卷积核为包括多个权重的矩阵,第一剪枝方式用于指示待剪枝的权重对应的矩阵位置,第一数目大于1。第一神经网络包括多个第一滤波器,多个第一滤波器分别包括第一数目个第一卷积核中的至少一个卷积核,一个卷积核对应第一滤波器中的一个通道。其中,同一滤波器包括的多个第一卷积核的尺寸相同,如都为3×3的矩阵。
202、从第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式。
在本申请实施例中,第二数目小于第一数目。可选地,第二数目为神经网络配置的超参数之一,或者第二数目为基于经验法则确定的参数。其中,基于经验法则确定第二数目指通过已经预训练的第一神经网络的资源占用信息来确定第二数目,其资源占用信息包括计算量占用信息、参数量占用信息和内存占用信息中的至少一项。
在该实施例中,通过从第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式,使得该第二数目个目标剪枝方式符合大部分第一卷积核的剪枝需求,进而提高了确定目标剪枝方式的准确性。
203、基于第一数目个第一卷积核分别对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中,分别确定第一数目个第一卷积核分别对应的目标剪枝方式。
204、基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第二神经网络。
在本申请实施例中,基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第一数目个第二卷积核,该第一数目个第二卷积核用于确定第二神经网络。
本申请提供了一种神经网络剪枝方法,该方法从第一数目个第一卷积核分别对应的第一剪枝方式中选取出了第二数目个目标剪枝方式,由于该第二数目个目标剪枝方式是多个第一卷积核分别对应的剪枝方式中出现次数最多的剪枝方式,使得该第二数目个目标剪枝方式能够符合大部分第一卷积核的剪枝需求,进而基于该第二数目个目标剪枝方式为第一数目个第一卷积核进行剪枝,不仅提高了剪枝的精度,且提高了剪枝的准确性。
请参考图3,其示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图,该方法包括:
301、电子设备确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式。
其中,第一剪枝方式为第一卷积核适用度最高的剪枝方式。在一些实施例中,电子设备确定第一卷积核对应的第一剪枝方式的过程,包括以下步骤:电子设备基于第一卷积核包括的多个权重分别对应的第一重要性参数,从多个权重中选择第一重要性参数最小的第三数目个目标权重;电子设备基于第三数目个目标权重对应的矩阵位置,确定第一卷积核的第一剪枝方式。
其中,第一重要性参数用于表示权重的重要性程度;电子设备可以基于L0范数、L1范数、L2范数、几何中位数、黑塞矩阵或激活层的熵值等算法来确定第一卷积核中多个权重分别对应的第一重要性参数,在此不作具体限定。由于权重为单个数值,则基于L0范数、L1范数或L2范数确定的任一权重的第一重要性参数即为该权重的绝对值,基于“权重越小越不重要”的经验假设,将神经网络权重矩阵中L0范数、L1范数和/或L2范数较小的权重视为不重要;如范数低于某一阈值或处于从大到小排序靠后的某个百分比位置的权重视为不重要。电子设备也可以基于剪去每个权重后所造成的神经网络表达能力的损失来实际测量该权重的重要性程度,在此不作具体限定。
参见图4,其示出了本申请一个示例性实施例示出的第一神经网络的L1范数分布示意图,该第一神经网络为视觉几何群网络(Visual Geometry Group Network,VGG16),其为该网络中各个卷积层内部所有第一卷积核的平均L1范数。其中,矩阵位置的颜色越深,其L1范数数值越大,由该图可以看出,第一卷积核中心位置的颜色深度大于边角位置的颜色深度,由于L1范数代表权重的重要性程度,可知第一卷积核中不同重要性的权重的分布具有一定的规律。
在一种实现方式中,第三数目的确定过程包括以下步骤:电子设备确定多个权重的第四数目;电子设备基于第四数目,确定第三数目,第三数目不小于第四数目的一半。
需要说明的是,由于第三数目不小于第四数目的一半,进而每个卷积核保留的权重不大于第四数目的一半,如第四数目为9,第三数目为5,则权重的保留数目为4,后续得到的第二神经网络包括的第一数目个第二卷积核中,任一第二卷积核均包括4个权重,则通过任一乘加器均可以对至少两个第二卷积核进行运算。则相应地,电子设备响应于基于第二神经网络的推理请求,通过第一数目个第二卷积核,对待推理的特征进行卷积运算,至少两个第二卷积核通过一个乘加器进行卷积运算。其中,乘加器能够同时对第二数目的权重进行处理。
参见图5,其示出了本申请一个示例性实施例示出的神经网络的卷积运算架构图。对于一个权重形状为(h,w,c,n)的卷积层的每一次卷积操作,其卷积核的尺寸为h×w,通道数为c,滤波器数为n,即输出通道的数为n,c不大于乘加器的总个数,n不大于乘加器的最大并行度,即对于n条输出通道中的每一条,在其均对应的c条通道上进行累加,每个通道进行h×w次乘加操作。例如,对于用于图像领域的乘加器,将h和w均设为3,其乘加器的个数和最大并行度取决于实际需求和硬件设备的功耗、性能、面积。在剪枝之前,一个卷积核通过一个乘加器进行卷积运算,如图5所示,一个乘加器对应一个通道上的第一卷积核,一个乘积器对一个第一卷积核上的多个权重进行运算。如第一卷积核为3×3的矩阵,即第一卷积核包括9个权重,则一个乘加器进行9次乘积操作,得到如图5所示的a1w1,a1w2,……,a9w9,其中,a1至a9为待推理特征中的矩阵元素,w1至w9为第一卷积核中的多个权重,a1w1代表矩阵元素与权重的乘积。而在如图5所示的架构下,若要通过卷积核的稀疏性取得良好的加速效果,提升并行度,则需要将至少两个卷积核的卷积运算并入一个乘加器中进行;这样对进行了剪枝的卷积层,每个乘加器可以被复用至少一次;其中,可以通过增加硬件抽头的个数,来实现将至少两个卷积核的卷积运算并入一个乘加器中进行,以实现成倍的提升乘加器的并行度。
参见图6,其示出了本申请一个示例性实施例示出的剪枝后的神经网络的卷积运算架构图,其支持乘加器两倍复用,即至少两个卷积核通过一个乘加器进行卷积运算,图中最后一行的打叉位置不复用;如乘加器可以同时对9个权重和待推理特征的矩阵元素进行加权,剪枝后的第二卷积核的保留权重为4个,则乘加器可以同时对两个卷积核的8个权重进行运算,多余的一个则不再复用。需要说明的是,若通过一个乘加器对至少两个卷积核进行卷积运算,则需要增加硬件设备中抽头的数量,以通过该抽头实现数据的调用,使得能够通过一个乘加器对至少两个卷积核进行卷积运算。
在该实施例中,通过剪去卷积核中不少于一半数目的权重,使得通过一个乘加器能够对至少两个第二卷积核进行卷积运算,而通过一个乘加器对至少两个第二卷积核进行卷积运算,一方面降低了乘加器的资源配置,另一方面提高了对卷积核卷积运算的并行度。
需要说明的是,神经网络中卷积核的设计实际上是为了在像素层面模拟生物的视网膜对局部特征的感知,其尺寸通常为1×1、3×3、5×5、7×7等较小的数值。虽然不同层,不同滤波器、不同通道的卷积核经过训练后会拥有不同的权重,但是它们之间存在一些共性,例如,这些结构中间位置的像素权重的重要性有较大概率会大于边角位置像素的权重,如肉眼也是关注画面中心的内容远远多于视野边缘的内容。并且,如果只考虑各相同尺寸的卷积核各个矩阵位置权重的显著性,如权重是否大于某个极小值ε=1e-8,超过记为1,不足记为0,将记为1的权重作为保留的权重,进而基于此得出几种目标剪枝方式,在同一神经网络中,大部分卷积核(如80-90%)会被数量有限的这几种目标剪枝方式概括到,就好比肉眼在执行某一任务时,通常对视野各处都会尝试关注近似的特征,如执行检测人脸的任务,在整个视野中都会关注人脸的特征,而不会在某些地方找人脸,在别的地方找动物花纹。而剩余的少量卷积核可以基于上述几种目标剪枝方式中最接近的目标剪枝方式来近似,对神经网络卷积核剪枝的精度影响不大。因此,在本申请实施例中,通过执行以下步骤302-303来确定第一数目个第一卷积核分别对应的目标剪枝方式。
302、电子设备从第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式。
其中,第一神经网络包括多个第一滤波器。在一种实现方式中,多个第一滤波器的尺寸相同,即多个第一滤波器分别包括的卷积核的尺寸相同。则可选地,电子设备从第一数目个卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式。
在另一种实现方式中,多个第一滤波器的尺寸不完全相同,则电子设备对于每种尺寸的第一滤波器,确定相同尺寸的多个第一滤波器包括的卷积核分别对应的第一剪枝方式中,出现次数最多的第二数目个目标剪枝方式。
需要说明的是,第一神经网络对应的剪枝方式的总数量不能过多,否则不便于控制第一神经网络取数逻辑的复杂度,且数量过多的剪枝方式,需要大量的逻辑存储空间和复杂的模式切换电路,不利于减小待部署神经网络的硬件设备的面积,则不利于降低该硬件设备的功耗;因此需要基于第一数目个第一卷积核各自的第一剪枝方式,来决定其h×w个矩阵位置中具体哪些矩阵位置的权重保留下来,相应地,其对应的待推理特征的相应矩阵位置处的像素位也会被保留下来。
需要说明的是,电子设备通过步骤302,基于对权重的重要性阈值过滤后,得到了第二数目个目标剪枝方式。在另一种实现方式中,电子设备还可以直接获取第三方剪枝方式模板,基于该第三方剪枝方式模板,确定为第一数目个卷积核进行剪枝的目标剪枝方式。其中,该第三方剪枝方式模板包括多个预设剪枝方式,进而后续电子设备基于第一数目个第一卷积核分别对应的第一剪枝方式与多个预设剪枝方式之间的匹配度,从多个预设剪枝方式中,分别确定第一数目个第一卷积核分别对应的目标剪枝方式。其中,预设剪枝方式为基于与第一卷积核的尺寸相同的卷积核的第一剪枝方式确定的,这样直接从第三方剪枝方式模板中获取第一数目个第一卷积核分别对应的目标剪枝方式,提高了获取第一数目个第一卷积核分别对应的剪枝方式的效率。
303、电子设备基于第一数目个第一卷积核分别对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中,分别确定第一数目个第一卷积核分别对应的目标剪枝方式。
在一些实施例中,电子设备基于第一数目个第一卷积核分别对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中,分别确定第一数目个第一卷积核分别对应的目标剪枝方式,包括以下步骤:电子设备基于第一卷积核对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中选择匹配度最大的目标剪枝方式。
其中,在第二数目个目标剪枝方式中存在与第一卷积核对应的第一剪枝方式相同的目标剪枝方式的情况下,即该目标剪枝方式与第一卷积核对应的第一剪枝方式匹配度为100%,则该目标剪枝方式为第二数目个目标剪枝方式中与第一剪枝方式匹配度最大的目标剪枝方式,进而确定该目标剪枝方式为第一卷积核对应的目标剪枝方式。
在第二数目个目标剪枝方式中不存在与第一卷积核对应的第一剪枝方式的情况下,则将该第一卷积核对应的第一剪枝方式与第二数目个目标剪枝方式分别进行匹配,将匹配度最大的目标剪枝方式作为第一卷积核对应的目标剪枝方式。可选地,电子设备逐个确定第二数目个目标剪枝方式与第一剪枝方式之间的余弦相似度,将最大的余弦相似度对应的目标剪枝方式作为第一卷积核对应的目标剪枝方式;或电子设备逐个确定第二数目个目标剪枝方式与第一剪枝方式之间的欧式距离,将最小的欧式距离对应的目标剪枝方式作为第一卷积核对应的目标剪枝方式;或电子设备对第一剪枝方式与第二数目个目标剪枝方式之间的威尔逊相关系数进行逐个比较,将最大的威尔逊相关系数对应的目标剪枝方式作为第一卷积核对应的目标剪枝方式。
需要说明的是,电子设备通过步骤302-303实现了对第一数目个第一卷积核的目标剪枝方式的硬分配,即根据一次性的静态计算确定了第一数目个第一卷积核分别对应的目标剪枝方式。在另一种实现方式中,电子设备还可以通过软分配的方式来确定第一数目个第一卷积核分别对应的目标剪枝方式。其中,电子设备无需统计第一数目个第一卷积核的第一剪枝方式且无需确定其目标剪枝方式,电子设备对第一卷积核的剪枝方式进行正则化训练,随着训练的进行让第一卷积核的权重自动收敛到所期望的剪枝方式上,进而在一些应用场景下可以对剪枝后的神经网络的推理精度进行提升。
304、电子设备基于第一卷积核对应的目标剪枝方式,确定目标剪枝方式对应的掩码矩阵。
其中,掩码矩阵的一个掩码元素对应第一卷积核的一个权重,且第一卷积核中待保留的权重对应的掩码元素为1,第一卷积核中待剪去的权重对应的掩码元素为0。
可选地,电子设备将第二数目个目标剪枝方式分别对应的掩码矩阵存储在集合中,该集合记为P={P0,P1,…,PN-1},其中,各掩码矩阵Pq(0≤q≤N-1)均为一种二值化的掩码矩阵。例如,对应3×3的第一卷积核,其目标剪枝方式对应的掩码矩阵为需要说明的是,若第一神经网络中存在多种尺寸的第一卷积核,则对神经网络原生支持的每种h×w第一卷积核分别创建相应的目标剪枝方式集合/>每个集合中的元素数量phw可以相同或不同。其中,对于第一神经网络支持尺寸范围外的第一卷积核,则自动跳过,不确定其剪枝方式,且不对其进行剪枝。
需要说明的是,若第一神经网络包括多层卷积层,电子设备可以将多层卷积层包括的第一卷积核统一处理,得到多层卷积层共享的多个目标剪枝方式,进而将多个目标剪枝方式对应的多个掩码矩阵存储在同一候选集合中,便于后续基于该候选集合中的掩码矩阵对多层卷积层中的第一卷积核进行剪枝。在另一种实现方式中,电子设备对多个卷积核逐层处理,得到多层卷积层分别对应的多个目标剪枝方式,将多层卷积层分别对应的掩码矩阵分别进行存储,得到多个存储掩码矩阵的候选集合。在另一种实现方式中,电子设备对多个卷积层以模块为单位进行处理,任一模块为包括多个卷积层的固定卷积层组合,得到多个模块分别对应的多个目标剪枝方式,将多个模块分别对应的掩码矩阵分别进行存储,得到多个存储掩码矩阵的候选集合。
在本申请实施例中,通过设置掩码矩阵,使得第一卷积核与掩码矩阵相乘后,能够将待剪去的权重能够直接置零,能够实现对第一卷积核的快速剪枝,进而提高了对第一卷积核进行剪枝的便捷性和效率。
在一种实现方式中,电子设备基于第一卷积核对应的目标剪枝方式,确定目标剪枝方式对应的掩码矩阵,包括以下步骤:电子设备基于第一卷积核在第一神经网络中的位置信息,在索引矩阵中确定与该位置信息匹配的索引位置;电子设备将索引位置对应的索引元素作为第一卷积核对应的目标剪枝方式的标识信息;电子设备基于标识信息,从目标对应关系中获取目标剪枝方式对应的掩码矩阵,目标对应关系用于存储目标剪枝方式的掩码矩阵和目标剪枝方式的标识信息之间的对应关系。
在本申请实施例中,通过设置索引矩阵和目标对应关系,使得基于第一卷积核的位置信息和索引矩阵能够快速确定其对应的目标剪枝方式的标识信息,进而基于该标识信息和目标对应关系,就能快速获取掩码矩阵,从而提高了获取掩码矩阵的效率。
在一些实施例中,索引矩阵的确定过程包括:电子设备确定第一数目个第一卷积核分别对应的目标剪枝方式的标识信息;电子设备基于第一数目个第一卷积核分别在第一神经网络中的位置信息和目标剪枝方式的标识信息,生成索引矩阵。
需要说明的是,若一个索引矩阵对应一个第一滤波器的卷积核,即该索引矩阵为一维矩阵,则第一卷积核的位置信息可以为第一卷积核所在第一滤波器的通道位置。若一个索引矩阵对应一个卷积层中多个滤波器的卷积核,则第一卷积核的位置信息可以为第一卷积核所在的滤波器位置以及在该滤波器中的通道位置。如对于第i层卷积层,其维度为(ci,ni),ci表示该卷积层的通道的数目,ni表示该卷积层的第一滤波器的数目,如索引矩阵可以为该矩阵中每个索引位置即为一个第一卷积核的位置信息,如对于第一行第一列索引位置,其对应第一个第一滤波器且该第一滤波器中第一个通道位置的卷积核,其索引元素3即为该第一卷积核对应的目标剪枝方式的标识信息。
在本申请实施例中,基于第一卷积核在神经网络中的位置信息和目标剪枝方式的标识信息来生成索引矩阵,且由于每个第一卷积核的位置信息与该索引矩阵中的索引位置一一对应,避免了再次为第一卷积核的位置信息设置专属的存储空间,从而节约了存储空间;且基于第一卷积核的位置信息,确定其对应的索引位置后,就能够直接获取该索引位置上的标识信息,从而提高了获取第一卷积核对应的目标剪枝模式的标识信息的效率。
305、电子设备将第一卷积核与掩码矩阵相乘,得到第二卷积核。
其中,第二卷积核为对第一卷积核进行剪枝得到的卷积核,第一数目个第二卷积核为第二神经网络包括的卷积核,第一数目个第二卷积核用于生成剪枝后的第二神经网络。需要说明的是,电子设备通过上述步骤304-305实现了基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第二神经网络;在一些实施例中,电子设备基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第二神经网络,包括以下步骤:电子设备对于任一第一滤波器,基于多个第一滤波器包括的第一卷积核对应的目标剪枝方式,对第一滤波器包括的第一卷积核进行剪枝,得到第二滤波器;电子设备基于得到的多个第二滤波器,确定第二神经网络。
在该实施例中,电子设备对多个第一滤波器分别进行处理,即对多个第一滤波器中包括的第一卷积核分别进行剪枝,这样对第一数目个第一卷积核进行剪枝后,可以直接得到多个第二滤波器,进而基于该多个第二滤波器能够快速确定第二神经网络。
可选地,若第一神经网络包括多层卷积层,则电子设备对多层卷积层分别执行步骤301-305,实现对多层卷积层的分别剪枝,基于剪枝后的多层卷积层,得到第二神经网络。
在一些实施例中,电子设备对第一数目个第一卷积核进行剪枝,得到第一数目个第二卷积核后,电子设备还对第一数目个第二卷积核进行后处理,以得到推理精度符合要求的第二神经网络。相应地,电子设备基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第二神经网络,包括以下步骤:电子设备基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第一数目个第二卷积核;电子设备对第一数目个第二卷积核进行参数训练,得到第二神经网络。
其中,电子设备可以在第一数目个第二卷积核上剩余的权重基础上继续训练参数一段时间,得到第二神经网络;也可以在第一数目个第二卷积核上剩余的权重基础上将第二神经网络中的参数训练至收敛。其中,电子设备可以将第一数目个卷积核的权重回溯至当前代之前存在的某一代权重进行训练,或将第一数目个第二卷积核剩余的权重随机初始化后重新训练,在此不作具体限定。可选地,电子设备将训练好的第一数目个第二卷积核部署到第二神经网络,对第二神经网络按照如图6所示的架构或采取其他方式进行优化设计,以使剪枝后的第二神经网络能够切实提升推理性能。
其中,电子设备对第一数目个第二卷积核进行参数训练,为降低精度损失,其损失函数可以采用示教的方式得到,即将第一数目个第二卷积核与第一神经网络的表达能力之间的误差作为损失函数,而该误差可以由神经网络的输出层和中间层中的至少一项算出;其中,表达能力的误差可以为第二神经网络对待推理的特征的处理效果与第一神经网络对待推理的特征的处理效果之间的差别。
需要说明的是,电子设备在对第一数目个第二卷积核进行参数训练之前,对第一数目个第二卷积核组成的神经网络进行精度检测,在所检测的精度满足要求的情况下,则电子设备直接基于该第一数目个第二卷积核得到第二神经网络,而不必再进行参数训练。
需要说明的是,本申请实施例提供的神经网络剪枝方法可以用于图像分类、图像识别、图像降噪、图像超分、图像风格迁移和图像生成等任务中的神经网络的剪枝,且还可以是非图像领域任务的神经网络的剪枝,在此不作具体限定。可选地,本申请实施例中的第一神经网络对应的模型是浮点模型或任意位宽的定点模型、整数模型、二值化模型等。浮点模型指模型参数为浮点数的模型,该任意位宽可以为16-bit、12-bit、11-bit、10-bit、8-bit、7-bit、4-bit、2-bit等,在此不作具体限定。可选地,第一卷积核的尺寸和形状可以根据需要进行设定并更改,在本申请实施例中对此不作具体限定;如第一卷积核的尺寸可以为1×1、3×3、5×5、7×7等,第一卷积核的形状可以为正方形或长方形等。可选地,本申请实施例对第二神经网络进行推理的具体实现方式不作具体限定,如第二神经网络在推理时可以用加法来代替原始推理过程中的乘法;且对剪枝后的第二神经网络最终部署的平台是否实际原生支持该尺寸的卷积核的运算不作具体限制,以提高该第二神经网络的适用性。
本申请实施例提供的神经网络剪枝方法,限制了神经网络中可以出现的剪枝方式的数量,便利了神经网络中运算加速器和支持库的开发,增强了对神经网络剪枝的可解释性,且同时对神经网络起到正则化的效果,避免了对神经网络的过拟合。且通过将传统的正方形密集卷积核转化为稀疏的不规则卷积核,施加了对神经网络中剪枝方式的数量限制,若要实现神经网络的推理加速仅需修改卷积这一种算子,使其支持剪枝后的卷积核的运算,而不会影响神经网络中其它算子的正常运行,对现有神经网络的架构修改较少,仅需在乘加器中增加抽头和相应地逻辑运算即可实现神经网络推理的加速;即在本申请实施例中,基于模式剪枝提供了一套新颖的卷积硬件参考架构,可充分利用模型层面提供的规律化稀疏性,实现对神经网络的成倍并行化加速。
本申请提供了一种神经网络剪枝方法,该方法从第一数目个第一卷积核分别对应的第一剪枝方式中选取出了第二数目个目标剪枝方式,由于该第二数目个目标剪枝方式是多个第一卷积核分别对应的剪枝方式中出现次数最多的剪枝方式,使得该第二数目个目标剪枝方式能够符合大部分第一卷积核的剪枝需求,进而基于该第二数目个目标剪枝方式为第一数目个第一卷积核进行剪枝,不仅提高了剪枝的精度,且提高了剪枝的准确性。
请参考图7,其示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图,该方法包括:
701、电子设备确定第一神经网络对应的第二剪枝方式。
其中,第二剪枝方式用于指示待剪枝的第一卷积核。在一些实施例中,第一神经网络包括多个第一滤波器,多个第一滤波器中分别包括多个通道,一个通道对应一个第一卷积核,一个通道配置一个通道权重。相应地,电子设备确定第一神经网络对应的第二剪枝方式,包括以下步骤:电子设备基于多个第一滤波器包括的多个通道分别对应的第二重要性参数,从多个通道中选择第二重要性参数最小的第六数目个目标通道,多个第一滤波器对应相同的目标通道;电子设备基于第六数目个目标通道对应的第一卷积核,确定第二剪枝方式;第二剪枝方式中第六数目个目标通道为待剪去的通道。
其中,第二重要性参数用于表示通道的重要性程度,电子设备可以基于L0范数、L1范数、L2范数、几何中位数、黑塞矩阵或激活层的熵值等算法来确定第一卷积核中多个权重分别对应的第一重要性参数,在此不作具体限定。L0范数指通道对应的第一卷积核中非零权重的个数,L1范数指通道对应的第一卷积核中各个权重的绝对值之和,L2范数指通道对应的第一卷积核中各个权重的平方和的平方根。
在一些实施例中,电子设备确定多个通道的通道剪枝率,进而基于多个通道的通道数目和该通道剪枝率,确定第六数目。
在一种实现方式中,电子设备通过强化学习算法确定第六数目。在人工智能领域,强化学习算法指让一个智能体(Agent)以试错的方式进行学习,通过与环境(environment)进行交互获得的奖赏(reward)和指导行为(action),目标是使智能体获得最大的奖赏。一种较为典型的智能体形式深度确定性策略梯度算法(Deep Deterministic PolicyGradient,DDPG)中包含的两个神经网络在训练时相互博弈,分别称为表演者(Actor)和评论者(Critic)。其中,训练迭代时,电子设备配置初始剪枝率,首先由Actor网络添加少量随机扰动后逐层输出通道的留存率,环境基于此留存率确定在当前留存率对应的剪枝方式下,剪枝后的神经网络的精度表现来输出奖励,该精度表现可以为损失函数的增减;通过改变随机扰动,得到多种不同的剪枝率,重复上述步骤,得到包括多个剪枝率和多个奖励的训练数据集。然后基于该训练数据集对Actor网络和Critic网络进行参数训练;其中,训练Critic网络在不依赖环境的情况下,预测Actor网络基于第一神经网络的资源占用信息所作策略的优劣,而Critic网络输出的奖励则进一步用于训练Actor网络,即调整其参数;然后将被剪枝的神经网络还原,重复上述步骤,进行迭代训练。在此训练过程中,Actor网络和Critic网络两个网络的训练此消彼长,最终将Actor网络收敛到一套较好的剪枝方式上,即得到一个目标留存率,进而基于该目标留存率就可以得到通道的通道剪枝率。
需要说明的是,电子设备可以基于上述实现方式得到通道剪枝率,进而得到第二剪枝方式;还可以通过生成对抗学习(Generative Adversarial Learning,GAL)、神经网络结构搜索(Neural Architecture Search,NAS)等方式来获得一层卷积层或多层卷积层的通道剪枝率或通道数目,在此不作具体限定。可选地,基于不同的实现方式,电子设备确定的第六数目可能大于、小于或等于原来多个通道的数目,即其包含更多广义的通道数目确定方法,在此不作具体限制。
702、电子设备基于第二剪枝方式,对第一神经网络包括的第五数目个第二卷积核进行剪枝,得到第一数目个第一卷积核。
其中,第五数目大于第一数目。
703、电子设备确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式。
在本申请实施例中,步骤703与步骤301同理。其中,电子设备基于第一卷积核包括的多个权重分别对应的第一重要性参数,从多个权重中选择第一重要性参数最小的第三数目个目标权重,进而再基于该第三数目个目标权重对应的矩阵位置,确定第一卷积核的第一剪枝方式。
其中,第一重要性参数用于表示权重的重要性程度;电子设备可以基于L0范数、L1范数、L2范数、几何中位数、黑塞矩阵或激活层的熵值等算法来确定第一重要性参数,在此不作具体限定。
704、电子设备从第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式。
可选地,第二数目为神经网络配置的超参数之一,或者基于经验法则和第二剪枝方式中的至少一项确定的参数。其中,基于经验法则确定第二数目指通过已经预训练的第一神经网络的资源占用信息来确定第二数目,其资源占用信息包括计算量占用信息、参数量占用信息和内存占用信息中的至少一项,在此不作具体限制。其中,基于第二剪枝方式确定第二数目指基于第二剪枝方式的剪枝率确定第二数目,第二数目与第二剪枝方式正相关,即第二剪枝方式的剪枝率越大,说明第二剪枝方式已经将神经网络的大部分冗余参数去除掉了,进而第二数目值就相对大一些,以提升剪枝精度,降低剪枝程度。
705、电子设备基于第一数目个第一卷积核分别对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中,分别确定第一数目个第一卷积核分别对应的目标剪枝方式。
706、电子设备基于第一卷积核对应的目标剪枝方式,确定目标剪枝方式对应的掩码矩阵。
707、电子设备将第一卷积核与掩码矩阵相乘,得到第二卷积核。
在本申请实施例中,步骤705-707与步骤303-305同理。其中,电子设备对于每个第一卷积核,基于该第一卷积核对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中选择匹配度最大的目标剪枝方式,作为该第一卷积核对应的目标剪枝方式。
其中,掩码矩阵的一个掩码元素对应第一卷积核的一个权重,且第一卷积核中待保留的权重对应的掩码元素为1,第一卷积核中待剪去的权重对应的掩码元素为0;电子设备基于该原理和第一卷积核对应的目标剪枝方式,得到第一卷积核对应的掩码矩阵。电子设备再将该第一卷积核与掩码矩阵相乘,来得到第二卷积核,能够将待剪去的权重能够直接置零,即能够实现对第一卷积核的快速剪枝,进而提高了对第一卷积核进行剪枝的便捷性和效率。
需要说明的是,电子设备对步骤701-702和703-707的执行顺序可以根据需要进行设定,在本申请实施例中对此不作具体限制,其可以先执行步骤701-702,再执行步骤703-707,也可以先执行步骤703-707,再执行步骤701-702。
需要说明的是,对于各个存在有权重被剪去的滤波器,其原本密集的正方形的卷积核变为稀疏的卷积核。可选地,其稀疏的卷积核在最终部署到硬件设备后,进行推理时,可以将卷积核的运算以图8的架构实现,即通过一个乘加器对至少两个卷积核进行卷积运算,只获取保留矩阵位置的权重和特征图像素的方式来实现优化加速。也可将剪去权重的矩阵位置的权重置零,以直接复用原有的密集卷积算子。需要说明的是,在神经网络包括多层卷积层的情况下,部分卷积层对待推理的特征比较敏感,该部分卷积层的权重应该保留而不被剪枝,以保证剪枝后的第二神经网络的整体精度。
为了便于描述,在本申请实施例中,将基于第一数目个第一卷积核分别对应的第一剪枝方式分别对第一数目个第一卷积核进行剪枝的剪枝模式称为权重剪枝(WP),将第二剪枝方式称为通道剪枝(CP),将一次性剪去一个滤波器的剪枝模式称为滤波器剪枝(FP),将本申请实施例中步骤301-305对应的剪枝模式称为模式剪枝(PP)。
在本申请实施例中,通过引入模式剪枝,结合了通道剪枝、滤波器剪枝和条状剪枝的结构化思想,以及考虑了权重剪枝的灵活性和同等精度要求下的高压缩比,在典型的通道剪枝、滤波器剪枝、条状剪枝等结构化剪枝和权重剪枝等非结构化剪枝之间达到了较好的平衡,从而提高了剪枝的规律性,且提高了剪枝的精度。且将通道剪枝与模式剪枝结合,提高剪枝的神经网络的结构度,利于较小的部署开发强度下实现推理加速,实现了对硬件设备友好的神经网络稀疏化压缩。
在本申请实施例中,通过从第一数目个第一卷积核分别对应的第一剪枝方式中,选取出第二数目个目标剪枝方式来进行剪枝,相比于基于第一数目个第一卷积核分别对应的第一剪枝方式分别对第一数目个第一卷积核进行剪枝,提高了剪枝的规律性,符合神经网络基于活体视觉的设计理念,且可降低对剪枝后的神经网络表达能力的影响。在一些实施例中,在某种基于MobileNet-V2(一种轻量级网络)的自研目标检测网络中进行了对比实验,得到了几种剪枝模式剪枝后的神经网络的精度(Precision)和误检率(false positiverate,FPR),如表1所示。
表1
由表1可知,虽然模式剪枝相比于权重剪枝增加了剪枝方式数量上的约束,但其剪枝得到的神经网络的整体精度与权重剪枝得到的神经网络乃至原始神经网络的精度区别较小,不相上下,显然,通过模式剪枝能够实现较好的剪枝效果。
在本申请实施例中,还在模式剪枝的基础上结合通道剪枝对神经网络进行剪枝,相比于通道剪枝提升了卷积核的稀疏度,利于在适当的软硬件架构下实现神经网络运算速度更大程度上的加快;而相比于模式剪枝,由于通道剪枝直接降低了卷积核中各权重的输入、输出通道的维度,进而提升了剪枝后的神经网络的压缩比,该压缩比指剪枝前后神经网络的通道数之比;且由于冗余通道的目标剪枝方式无意义,进而避免了整通道冗余情形对确定目标剪枝方式的干扰。这样通过结合结构化剪枝和非结构化剪枝,相比单独的模式剪枝或单独的通道剪枝,能更精准地识别并剪去不重要的权重,提升剪枝的精度,进而利于剪枝后的神经网络在精度要求较高的场景下的应用,如在像素级别的去噪、超分等任务场景中,而不仅仅是应用在诸如分类等粗粒度推理的场景中。
参见图8,其示出了本申请一个示例性实施例示出的神经网络剪枝方法的流程图。其中,首先电子设备基于第一神经网络的资源占用信息确定第二剪枝方式,或者基于强化学习算法确定第二剪枝方式;然后电子设备基于第二剪枝方式对第一神经网络进行剪枝,得到第一数目个第一卷积核。电子设备确定第一数目个第一卷积核对应的第二数目个目标剪枝方式。若第一神经网络包括多层卷积层,则电子设备分别确定各层的索引矩阵,对第一数目个第一卷积核进行剪枝,得到第二神经网络。在第二神经网络的精度满足要求的情况下,结束该流程,实现对第一神经网络的剪枝;在第二神经网络的精度不满足要求的情况下,对其进行后处理,如对第二神经网络进行调优训练,直到精度满足要求为止。
在一些实施例中,在对神经网络的剪枝过程中,模式剪枝结合通道剪枝或滤波器剪枝中的至少一项,利用更加精准的选择机制,如生成对抗学习机制或强化学习机制等,在同一时间在多种剪枝粒度上进行异质剪枝(heterogeneous pruning)。其中,电子设备同时判断神经网络中滤波器、通道、卷积核等不同粒度权重单位的重要性,对识别到的任意粒度的不重要权重单位进行剪枝;这样不仅可以避免对神经网络中具备不同敏感度的不同位置采用同种剪枝方式造成的精度损失,另一方面亦可免去因多次进行不同粒度剪枝而造成的繁琐和精度损失的累加。
在本申请实施例中,通过从第一数目个第一卷积核分别对应的第一剪枝模式中,选取出第二数目个目标剪枝方式,限制了第一神经网络中可以出现的剪枝方式的数量,且避免了第一数目个第一卷积核必须使用同一种剪枝方式的限制,且结合第二剪枝方式,对神经网络中的卷积核进行剪枝,其既能在一定程度上继承了细粒度剪枝的精度,又能利用神经网络中滤波器和通道的结构化特点,从而便于在对神经网络的剪枝的基础上,对神经网络运算加速架构的设计开发。
请参考图9,其示出了本申请一个示例性实施例示出的神经网络剪枝装置的框图,装置包括:
第一确定模块901,用于确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式,第一卷积核为包括多个权重的矩阵,第一剪枝方式用于指示待剪枝的权重对应的矩阵位置;
第二确定模块902,用于确定从第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式,第二数目小于第一数目;
第三确定模块903,用于基于第一数目个第一卷积核分别对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中,分别确定第一数目个第一卷积核分别对应的目标剪枝方式;
第一剪枝模块904,用于基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第二神经网络。
在一些实施例中,第一确定模块901,用于:
基于第一卷积核包括的多个权重分别对应的第一重要性参数,从多个权重中选择第一重要性参数最小的第三数目个目标权重;
基于第三数目个目标权重对应的矩阵位置,确定第一卷积核的第一剪枝方式。
在一些实施例中,装置还包括:
第四确定模块,用于确定多个权重的第四数目;
第五确定模块,用于基于第四数目,确定第三数目,第三数目不小于第四数目的一半。
在一些实施例中,第二神经网络包括第一数目个第二卷积核,第二卷积核为对第一卷积核进行剪枝得到的卷积核;装置还包括:
运算模块,用于响应于基于第二神经网络的推理请求,通过第一数目个第二卷积核,对待推理的特征进行卷积运算,至少两个第二卷积核通过一个乘加器进行卷积运算。
在一些实施例中,第二神经网络包括第一数目个第二卷积核,第二卷积核为对第一卷积核进行剪枝得到的卷积核;
第一剪枝模块904,用于:
基于第一卷积核对应的目标剪枝方式,确定目标剪枝方式对应的掩码矩阵,掩码矩阵的一个掩码元素对应第一卷积核的一个权重,且第一卷积核中待保留的权重对应的掩码元素为1,第一卷积核中待剪去的权重对应的掩码元素为0;
将第一卷积核与掩码矩阵相乘,得到第二卷积核。
在一些实施例中,第一剪枝模块904,用于:
基于第一卷积核在第一神经网络中的位置信息,在索引矩阵中确定与位置信息匹配的索引位置;
将索引位置对应的索引元素作为第一卷积核对应的目标剪枝方式的标识信息;
基于标识信息,从目标对应关系中获取目标剪枝方式对应的掩码矩阵,目标对应关系用于存储目标剪枝方式的掩码矩阵和目标剪枝方式的标识信息之间的对应关系。
在一些实施例中,装置还包括:
第六确定模块,用于确定第一数目个第一卷积核分别对应的目标剪枝方式的标识信息;
生成模块,用于基于第一数目个第一卷积核分别在第一神经网络中的位置信息和目标剪枝方式的标识信息,生成索引矩阵。
在一些实施例中,第三确定模块903,用于:
基于第一卷积核对应的第一剪枝方式与第二数目个目标剪枝方式之间的匹配度,从第二数目个目标剪枝方式中选择匹配度最大的目标剪枝方式。
在一些实施例中,装置还包括:
第七确定模块,用于确定第一神经网络对应的第二剪枝方式,第二剪枝方式用于指示待剪枝的第一卷积核;
第二剪枝模块,用于基于第二剪枝方式,对第一神经网络包括的第五数目个第二卷积核进行剪枝,得到第一数目个第一卷积核,第五数目大于第一数目。
在一些实施例中,第一神经网络包括多个第一滤波器,多个第一滤波器中分别包括多个通道,一个通道对应一个第一卷积核,一个通道配置一个通道权重;
第七确定模块,用于:
基于第一滤波器包括的多个通道分别对应的第二重要性参数,从多个通道中选择第二重要性参数最小的第六数目个目标通道,多个第一滤波器对应相同的目标通道;
基于第六数目个目标通道对应的第一卷积核,确定第二剪枝方式。
在一些实施例中,第一神经网络包括多个第一滤波器,多个第一滤波器分别包括第一数目个第一卷积核中的至少一个卷积核;
第一剪枝模块904,用于:
对于任一第一滤波器,基于多个第一滤波器包括的第一卷积核对应的目标剪枝方式,对第一滤波器包括的第一卷积核进行剪枝,得到第二滤波器;
基于得到的多个第二滤波器,确定第二神经网络。
在一些实施例中,第一剪枝模块904,用于:
基于第一数目个第一卷积核分别对应的目标剪枝方式,分别对第一数目个第一卷积核进行剪枝,得到第一数目个第二卷积核;
对第一数目个第二卷积核进行参数训练,得到第二神经网络。
本申请提供了一种神经网络剪枝装置,该装置从第一数目个第一卷积核分别对应的第一剪枝方式中选取出了第二数目个目标剪枝方式,由于该第二数目个目标剪枝方式是多个第一卷积核分别对应的剪枝方式中出现次数最多的剪枝方式,使得该第二数目个目标剪枝方式能够符合大部分第一卷积核的剪枝需求,进而基于该第二数目个目标剪枝方式为第一数目个第一卷积核进行剪枝,不仅提高了剪枝的精度,且提高了剪枝的准确性。
本申请实施还提供了一种芯片,该芯片包括可编程逻辑电路和/或程序指令,当该芯片运行时用于实现如上各个实施例示出的神经网络剪枝方法。
请参考图10,其示出了本申请一个示例性实施例所提供的电子设备1000的结构方框图。电子设备1000可以为智能手机、平板电脑、笔记本电脑、台式计算机等。本申请中的电子设备1000可以包括一个或多个如下部件:处理器1010、存储器1020和芯片1030。
处理器1010可以包括一个或者多个处理核心。处理器1010利用各种接口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1020内的指令、程序、代码集或指令集,以及调用存储在存储器1020内的数据,执行电子设备1000的各种功能和处理数据。可选地,处理器1010可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1010可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network Processing Unit,NPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏1030所需要显示的内容的渲染和绘制;NPU用于实现人工智能(Artificial Intelligence,AI)功能;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1010中,单独通过一块芯片进行实现。
存储器1020可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选地,该存储器1020包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1020可用于存储指令、程序、代码、代码集或指令集。存储器1020可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储根据电子设备1000的使用所创建的数据(比如音频数据、电话本)等。
芯片1030包括可编程逻辑电路和/或程序指令,该芯片1030运行时用于实现如下方法:从神经网络包括的多个卷积核各自对应的剪枝方式中,选取出出现次数最多的少量剪枝方式,进而基于该少量剪枝方式对该多个卷积核进行剪枝,以得到剪枝后的神经网络。
除此之外,本领域技术人员可以理解,上述附图所示出的电子设备1000的结构并不构成对电子设备1000的限定,电子设备1000可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,电子设备1000中还包括麦克风、扬声器、射频电路、输入单元、传感器、音频电路、无线保真(Wireless Fidelity,Wi-Fi)模块、电源、蓝牙模块等部件,在此不再赘述。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,该至少一条指令由该处理器加载并执行以实现如上各个实施例示出的神经网络剪枝方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,该至少一条指令由该处理器加载并执行以实现如上各个实施例示出的神经网络剪枝方法。
在一些实施例中,本申请实施例所涉及的计算机程序产品可被部署在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行,分布在多个地点且通过通信网络互连的多个电子设备可以组成区块链系统。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (17)
1.一种神经网络剪枝方法,其特征在于,所述方法包括:
确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式,所述第一卷积核为包括多个权重的矩阵,所述第一剪枝方式用于指示待剪枝的权重对应的矩阵位置;
从所述第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式,所述第二数目小于所述第一数目;
基于所述第一数目个第一卷积核分别对应的第一剪枝方式与所述第二数目个目标剪枝方式之间的匹配度,从所述第二数目个目标剪枝方式中,分别确定所述第一数目个第一卷积核分别对应的目标剪枝方式;
基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第二神经网络。
2.根据权利要求1所述的方法,其特征在于,确定第一卷积核对应的第一剪枝方式的过程,包括:
基于所述第一卷积核包括的多个权重分别对应的第一重要性参数,从所述多个权重中选择第一重要性参数最小的第三数目个目标权重;
基于所述第三数目个目标权重对应的矩阵位置,确定所述第一卷积核的第一剪枝方式。
3.根据权利要求2所述的方法,其特征在于,所述第三数目的确定过程包括:
确定所述多个权重的第四数目;
基于所述第四数目,确定所述第三数目,所述第三数目不小于所述第四数目的一半。
4.根据权利要求3所述的方法,其特征在于,所述第二神经网络包括第一数目个第二卷积核,所述第二卷积核为对所述第一卷积核进行剪枝得到的卷积核;所述方法还包括:
响应于基于所述第二神经网络的推理请求,通过所述第一数目个第二卷积核,对待推理的特征进行卷积运算,至少两个第二卷积核通过一个乘加器进行卷积运算。
5.根据权利要求1所述的方法,其特征在于,所述第二神经网络包括第一数目个第二卷积核,所述第二卷积核为对所述第一卷积核进行剪枝得到的卷积核;
所述基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第二神经网络,包括:
基于所述第一卷积核对应的目标剪枝方式,确定所述目标剪枝方式对应的掩码矩阵,所述掩码矩阵的一个掩码元素对应所述第一卷积核的一个权重,且所述第一卷积核中待保留的权重对应的掩码元素为1,所述第一卷积核中待剪去的权重对应的掩码元素为0;
将所述第一卷积核与所述掩码矩阵相乘,得到第二卷积核。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第一卷积核对应的目标剪枝方式,确定所述目标剪枝方式对应的掩码矩阵,包括:
基于所述第一卷积核在所述第一神经网络中的位置信息,在索引矩阵中确定与所述位置信息匹配的索引位置;
将所述索引位置对应的索引元素作为所述第一卷积核对应的目标剪枝方式的标识信息;
基于所述标识信息,从目标对应关系中获取所述目标剪枝方式对应的掩码矩阵,所述目标对应关系用于存储目标剪枝方式的掩码矩阵和所述目标剪枝方式的标识信息之间的对应关系。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定所述第一数目个第一卷积核分别对应的目标剪枝方式的标识信息;
基于所述第一数目个第一卷积核分别在所述第一神经网络中的位置信息和目标剪枝方式的标识信息,生成所述索引矩阵。
8.根据权利要求1所述的方法,其特征在于,所述基于所述第一数目个第一卷积核分别对应的第一剪枝方式与所述第二数目个目标剪枝方式之间的匹配度,从所述第二数目个目标剪枝方式中,分别确定所述第一数目个第一卷积核分别对应的目标剪枝方式,包括:
基于所述第一卷积核对应的第一剪枝方式与所述第二数目个目标剪枝方式之间的匹配度,从所述第二数目个目标剪枝方式中选择匹配度最大的目标剪枝方式。
9.根据权利要求1所述的方法,其特征在于,所述确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式之前,所述方法还包括:
确定所述第一神经网络对应的第二剪枝方式,所述第二剪枝方式用于指示待剪枝的第一卷积核;
基于所述第二剪枝方式,对所述第一神经网络包括的第五数目个第二卷积核进行剪枝,得到所述第一数目个第一卷积核,第五数目大于所述第一数目。
10.根据权利要求9所述的方法,其特征在于,所述第一神经网络包括多个第一滤波器,所述多个第一滤波器中分别包括多个通道,一个通道对应一个第一卷积核,一个通道配置一个通道权重;
所述确定所述第一神经网络对应的第二剪枝方式,包括:
基于所述第一滤波器包括的多个通道分别对应的第二重要性参数,从所述多个通道中选择第二重要性参数最小的第六数目个目标通道,所述多个第一滤波器对应相同的目标通道;
基于所述第六数目个目标通道对应的第一卷积核,确定所述第二剪枝方式。
11.根据权利要求1所述的方法,其特征在于,所述第一神经网络包括多个第一滤波器,所述多个第一滤波器分别包括所述第一数目个第一卷积核中的至少一个卷积核;
所述基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第二神经网络,包括:
对于任一第一滤波器,基于所述多个第一滤波器包括的第一卷积核对应的目标剪枝方式,对所述第一滤波器包括的第一卷积核进行剪枝,得到第二滤波器;
基于得到的多个第二滤波器,确定所述第二神经网络。
12.根据权利要求1所述的方法,其特征在于,所述基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第二神经网络,包括:
基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第一数目个第二卷积核;
对所述第一数目个第二卷积核进行参数训练,得到所述第二神经网络。
13.一种神经网络剪枝装置,其特征在于,所述装置包括:
第一确定模块,用于确定第一神经网络包括的第一数目个第一卷积核分别对应的第一剪枝方式,所述第一卷积核为包括多个权重的矩阵,所述第一剪枝方式用于指示待剪枝的权重对应的矩阵位置;
第二确定模块,用于确定从所述第一数目个第一卷积核分别对应的第一剪枝方式中,确定出现次数最多的第二数目个目标剪枝方式,所述第二数目小于所述第一数目;
第三确定模块,用于基于所述第一数目个第一卷积核分别对应的第一剪枝方式与所述第二数目个目标剪枝方式之间的匹配度,从所述第二数目个目标剪枝方式中,分别确定所述第一数目个第一卷积核分别对应的目标剪枝方式;
第一剪枝模块,用于基于所述第一数目个第一卷积核分别对应的目标剪枝方式,分别对所述第一数目个第一卷积核进行剪枝,得到第二神经网络。
14.一种芯片,其特征在于,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时用于实现如权利要求1至权利要求12任一项所述的神经网络剪枝方法。
15.一种电子设备,其特征在于,所述电子设备包括如权利要求14所述的芯片。
16.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如权利要求1至权利要求12任一项所述的神经网络剪枝方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品存储有至少一条程序代码,所述至少一条程序代码用于被处理器执行以实现如权利要求1至权利要求12任一项所述的神经网络剪枝方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210821299.1A CN117436482A (zh) | 2022-07-12 | 2022-07-12 | 神经网络剪枝方法、装置、芯片、设备、存储介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210821299.1A CN117436482A (zh) | 2022-07-12 | 2022-07-12 | 神经网络剪枝方法、装置、芯片、设备、存储介质及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117436482A true CN117436482A (zh) | 2024-01-23 |
Family
ID=89546664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210821299.1A Pending CN117436482A (zh) | 2022-07-12 | 2022-07-12 | 神经网络剪枝方法、装置、芯片、设备、存储介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117436482A (zh) |
-
2022
- 2022-07-12 CN CN202210821299.1A patent/CN117436482A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176820B (zh) | 一种基于深度神经网络的边缘计算任务的分配方法及装置 | |
CN108171663B (zh) | 基于特征图最近邻替换的卷积神经网络的图像填充系统 | |
CN113326930B (zh) | 数据处理方法、神经网络的训练方法及相关装置、设备 | |
CN112116001A (zh) | 图像识别方法、装置及计算机可读存储介质 | |
CN113361698A (zh) | 神经网络模型的处理方法和装置、数据处理方法和装置 | |
CN110647974A (zh) | 深度神经网络中的网络层运算方法及装置 | |
CN112084959B (zh) | 一种人群图像处理方法及装置 | |
CN114078195A (zh) | 分类模型的训练方法、超参数的搜索方法以及装置 | |
CN110796250A (zh) | 应用于卷积神经网络的卷积处理方法、系统及相关组件 | |
CN112508190A (zh) | 结构化稀疏参数的处理方法、装置、设备及存储介质 | |
CN111357051A (zh) | 语音情感识别方法、智能装置和计算机可读存储介质 | |
CN111709415B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
CN116363261A (zh) | 图像编辑模型的训练方法、图像编辑方法和装置 | |
CN116090536A (zh) | 神经网络的优化方法、装置、计算机设备及存储介质 | |
CN110570375A (zh) | 一种图像处理方法、装置、电子设置以及存储介质 | |
CN115238883A (zh) | 神经网络模型的训练方法、装置、设备及存储介质 | |
CN117436482A (zh) | 神经网络剪枝方法、装置、芯片、设备、存储介质及产品 | |
CN112036461B (zh) | 手写数字图像识别方法、装置、设备及计算机存储介质 | |
CN114139678A (zh) | 卷积神经网络量化方法、装置、电子设备和存储介质 | |
CN114399028A (zh) | 信息处理方法、图卷积神经网络训练方法及电子设备 | |
CN116266394A (zh) | 多模态的情绪识别方法、设备及存储介质 | |
CN113674383A (zh) | 生成文本图像的方法及装置 | |
CN111400715A (zh) | 分类引擎诊断方法、装置及计算机可读存储介质 | |
CN115841146A (zh) | 模型生成方法、装置、电子设备及存储介质 | |
CN115759192A (zh) | 一种神经网络加速方法、装置、设备、芯片及存储介质 |
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 |