一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

模型剪枝方法、装置、计算设备及存储介质与流程

2022-06-02 17:06:30 来源:中国专利 TAG:


1.本技术涉及模型压缩技术领域,尤其涉及一种模型剪枝方法、装置、计算设备及存储介质。


背景技术:

2.目前,基于卷积神经网络(convolutional neural network,cnn)的模型在很多任务中都表现出了良好的性能。但是这些模型中常常含有大量的冗余信息,需要耗费大量的计算开销,因此,模型压缩成为了必不可少的一步。
3.模型剪枝是一种常用的模型压缩方法,过滤器(filter)剪枝又是用于卷积神经网络模型的一种结构化剪枝类型,过滤器剪枝的操作过程主要可以分为两步:首先,选出模型中相对不重要的filter并剪除,得到剪枝后的模型;然后,对剪枝后的模型进行微调(fine-tuning),以恢复模型精度。如何选出相对不重要的filter,成为了过滤器剪枝中的关键技术问题。
4.然而,在一些现有的模型剪枝方法中,所采用的filter重要性的衡量标准还不够好,导致模型剪枝后的精度损失过大。


技术实现要素:

5.为了解决现有技术中的上述问题,本技术实施例中提供一种模型剪枝方法、装置、计算设备及存储介质,能够更准确地选出模型中相对不重要的filter,使得模型剪枝后的精度损失很小。
6.第一方面,本技术提供了一种模型剪枝方法,该方法包括:获取卷积神经网络模型中每个过滤器的权重和每个过滤器的第一缩放因子,其中,每个过滤器的第一缩放因子是所述每个过滤器在批量归一化层中对应的缩放因子,所述每个过滤器所在的卷积层和所述批量归一化层是相邻的网络层;根据每个过滤器的权重和每个过滤器的第一缩放因子,确定每个过滤器的重要性得分;根据每个过滤器的重要性得分对卷积神经网络模型进行剪枝。
7.第二方面,本技术提供了一种模型剪枝装置,该装置包括:获取模块,用于获取卷积神经网络模型中每个过滤器的权重和每个过滤器的第一缩放因子,其中,每个过滤器的第一缩放因子是所述每个过滤器在批量归一化层中对应的缩放因子,所述每个过滤器所在的卷积层和所述批量归一化层是相邻的网络层;确定模块,用于根据每个过滤器的权重和每个过滤器的第一缩放因子,确定每个过滤器的重要性得分;处理模块,用于根据每个过滤器的重要性得分对卷积神经网络模型进行剪枝。
8.第三方面,本技术实施例提供一种计算机可读存储介质;该计算机可读存储介质用于存储上述第一方面中的任一实施例方法的实现代码。
9.第四方面,本技术实施例提供了一种计算机程序(产品),该计算机程序(产品)包括程序指令,当该计算机程序产品被执行时,用于执行前述第一方面中的任一实施例的方
法。
10.综上所述,本技术实施例通过获取卷积神经网络模型中每个过滤器的权重和每个过滤器的缩放因子,能够确定该卷积神经网络中每个过滤器的重要性得分。其中,重要性得分用于衡量卷积神经网络模型中的各个过滤器的重要性,过滤器的重要性得分越高,则说明该过滤器在卷积神经网络模型中的重要性越高,过滤器的重要性得分越低,则说明该过滤器在卷积神经网络模型中的重要性越低。因此,根据重要性得分便可以准确地选出卷积神经网络模型中相对不太重要的过滤器,进而将重要性较低的这些过滤器给剪除,既实现了模型压缩的目的,减少模型中的冗余信息,又使得模型剪枝后的精度损失较小,可以很好地保留原始模型的精度和性能。
附图说明
11.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
12.图1是本技术实施例提供的一种卷积神经网络模型中的两个相邻卷积层的示意图;
13.图2是本技术实施例提供的一种过滤器与卷积核的关系示意图;
14.图3是本技术实施例提供的一种模型剪枝方法的流程示意图;
15.图4是本技术实施例提供的一种剪除部分过滤器之后的示意图;
16.图5是本技术实施例提供的一种模型剪枝装置的结构示意图;
17.图6是本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
18.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,下面所描述的实施例仅仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
19.需要说明的是,在本技术实施例中使用的术语仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任意或所有可能组合。
20.为了便于理解本技术实施例中的技术方案,下面对本技术实施例中涉及的部分术语及概念进行简单介绍。
21.1、卷积层(convolutional layer)、过滤器(filter)及卷积核(kernel):
22.卷积层是构成卷积神经网络的基本结构,用于特征提取。
23.过滤器是卷积层的重要组成部分,一个卷积层中可以包含一个或者多个过滤器,不同过滤器可以分别探测不同维度的特征,比如形状、颜色、对比度等等。
24.卷积核是过滤器的重要组成部分,一个过滤器可以由一个或者多个不同的卷积核
来构成。
25.需要说明的是,卷积神经网络可以包括一个或多个卷积层,每个卷积层都有对应的输入通道(input channel)和输出通道(output channel)。为了便于描述,本技术实施例用cin(m,k)表示第m个卷积层对应的第k个输入通道,用cout(m,k)表示第m个卷积层对应的第k个输出通道,其中,m、k均为正整数。每个卷积层都包含一个或多个filter,同一个卷积层中的不同filter分别产生本卷积层的一个输出通道的数据,换句话说,卷积层的输出通道数目由该卷积层中filter的个数所决定,filter与输出通道一一对应。每个filter又包含一个或多个卷积核,同一个filter中的不同卷积核分别对应本卷积层的一个输入通道,卷积核只负责与对应的输入通道的数据进行卷积。
26.举例来说,图1是本技术实施例提供的一种卷积神经网络模型中的两个相邻卷积层的示意图,这两个卷积层分别是卷积层m和卷积层m 1,依次代表的是该模型中的第m个卷积层和第m 1个卷积层,m为正整数。应理解,卷积神经网络模型中包含多个卷积层,各卷积层之间具有先后顺序,卷积层m是卷积层m 1的上一个卷积层,卷积层m 1是卷积层m的下一个卷积层,也可以说卷积层m 1是卷积层m的下一个相邻卷积层。
27.如图1所示,卷积层m有对应的3个输入通道,分别用cin(m,1)、cin(m,2)和cin(m,3)来表示,卷积层m还有对应的4个输出通道,分别用cout(m,1)、cout(m,2)、cout(m,3)和cout(m,4)来表示。这里假设批尺寸(batch-size)等于1,特征图a(一个3通道特征图,比如是rgb三通道的图像)作为卷积层m的输入,包含了上述3个输入通道的数据,其中,特征图a中的以左斜线填充的方块表示输入通道cin(m,1)的数据,点填充的方块表示输入通道cin(m,2)的数据,竖线填充的方块表示输入通道cin(m,3)的数据。卷积层m中包含了4个过滤器,分别用filter1、filter2、filter3和filter4来表示,上述每一个过滤器都包含与卷积层m的输入通道同等数目的卷积核,同一个过滤器中的各卷积核分别对应卷积层m的一个输入通道,分别负责与对应输入通道的数据进行卷积。
28.以上述filter1为例,如图2所示,filter1包括三个卷积核,分别用卷积核1、卷积核2、卷积核3来表示,它们依次对应卷积层m的输入通道cin(m,1)、cin(m,2)和cin(m,3)。因此,卷积核1负责与输入通道cin(m,1)的数据进行卷积,卷积核2负责与cin(m,2)的数据进行卷积,卷积核3负责与输入通道cin(m,1)的数据进行卷积。需要特别说明的是,本技术实施例中所述的过滤器与卷积核并非是同一个概念,如图2所示,卷积核是由权重组成的二维数组,而过滤器是由多个卷积核堆叠形成的三维架构,二者处在不同的层次结果当中,具有包含关系。
29.如图1所示,特征图a输入卷积层m之后,分别与卷积层m中的各个filter进行卷积,每个filter都会产生一个输出通道的特征图(feature map),即单通道特征图,或者说是单个通道的数据。其中,filter1对特征图a进行卷积得到的输出结果为map1,这里用map1的颜色(白色)表示它对应的是输出通道cout(m,1);filter2与特征图a卷积得到map2,用浅灰色表示map2对应的是输出通道cout(m,2);filter3与特征图a卷积得到map3,用深灰色表示map3对应的是输出通道cout(m,3);filter4与特征图a卷积得到map4,用黑色表示map4对应的是输出通道cout(m,4)。
30.2、批量归一化(batch normalization,bn)层和激励层(activating layer):
31.bn层通常用于对数据进行归一化处理以改善数据分布,具有减轻过拟合、改善梯
度传播、容许较高的学习率、提高训练和收敛速度等优点。bn层中有两种可学习参数,分别是缩放因子γ和偏差β。
32.激励层通常用于增加神经网络模型的非线性,将特征映射到高维的非线性区间进行解释,以解决线性模型所不能解决的问题。激励层中常用的激励函数有sigmoid、tanh、relu、leaky relu、elu、maxout等等,本技术不具体限定。
33.需要说明的是,卷积层 bn层 激励层的结构是卷积神经网络模型中的一种常用结构。针对卷积层的每一个输出通道,在该卷积层的相关bn层中都有一组对应的γ和β,γ和β分别用于缩放和平移对应通道的数据,而卷积层中的每一个过滤器分别产生一个输出通道的数据,因此,卷积层中的过滤器与相关bn层中的缩放因子具有一一对应关系。卷积层的输出结果经过bn层的处理之后,激励层可以进一步把bn层输出的结果做非线性映射,以增加非线性。
34.承接上例,如图1所示,卷积层m有一个对应的bn层和一个对应的激励层,分别用bn层m和激励层m来表示。可以理解的是,卷积层m、bn层m和激励层m便组成了卷积神经网络中常用的卷积层 bn层 激励层的结构,可以将这三个网络层看为一组,同一组内的三个网络层是相关的网络层。其中,bn层m中的缩放因子γ1、γ2、γ3和γ4依次对应卷积层m的输出通道cout(m,1)、cout(m,2)、cout(m,3)和cout(m,4),负责缩放对应的输出通道的数据;bn层m中的参数β1、β2、β3、β4与卷积层m的各输出通道也是一一对应的,负责平移对应输出通道的数据。需要说明的是,图中未画出bn层m中的这些β参数。
35.如图1所示,卷积层m中的每个filter分别与特征图a进行卷积计算得到的输出结果都要经过bn层m的处理,即卷积层m的输出结果map1、map2、map3和map4会输入到bn层m进行处理。可以理解的是,因为map1对应的是输出通道cout(m,1),所以bn层m会采用γ1对map1的数据进行缩放并且用β1进行平移,从而得到map1(γ1)。同理,bn层m分别对map2、map3、map4进行处理后得到map2(γ2)、map3(γ3)和map4(γ4)。
36.然后,bn层m将上述结果输入到激励层m中,激励层m分别对它们做非线性映射得到map1*(γ1)、map2*(γ2)、map3*(γ3)和map4*(γ4),上述结果便组成了特征图b(一个4通道特征图)。显然,特征图b包含了4个通道的数据,它将作为卷积层m 1的输入,所以卷积层m 1需要有对应的四个输入通道,即cin(m 1,1)、cin(m 1,2)、cin(m 1,3)和cin(m 1,4)。因此,卷积层m 1的输入通道的数目等于卷积层m中的过滤器的个数,即本卷积层的输入通道的数目由上一个相邻卷积层中的过滤器的个数所决定,上一卷积层的过滤器与本卷积层的输入通道具有一一对应关系。需要说明的是,卷积层m 1也有对应的bn层和激励层,但图1没有画出这部分。
37.应理解,输入通道和输出通道中的“输入”和“输出”实际是相对于某个卷积层来说的,都可以直接称为通道,所以说,卷积层m的输出通道cout(m,1)、cout(m,2)、cout(m,3)、cout(m,4)与卷积层m 1的输入通道cin(m 1,1)、cin(m 1,2)、cin(m 1,3)、cin(m 1,4)其实是一一对应的,对应的输入通道和输出通道其实指的是相同类别的通道。比如,卷积层m中的cout(m,1)指是白色代表的这个通道类型,而卷积层m 1中的cin(m 1,1)也是指白色这个通道类型,所以说cout(m,1)和cin(m 1,1)对应的其实是相同类型的通道。
38.基于上述内容,下面介绍本技术中的模型剪枝方法的实施例。
39.请参阅图3,图3是本技术实施例提供的一种模型剪枝方法的流程示意图,该方法
包括以下步骤:
40.s301、获取卷积神经网络模型中每个过滤器的权重和每个过滤器的第一缩放因子,其中,每个过滤器的第一缩放因子是所述每个过滤器在批量归一化层中对应的缩放因子。
41.其中,上述卷积神经网络模型可以是任意一个基于卷积神经网络的模型,本技术不具体限定。比如,卷积神经网络模型可以是用于图像识别的卷积神经网络模型,也可以是用于语音识别的卷积神经网络模型,还可以是用于语义理解的卷积神经网络模型。
42.由前述内容可知,每个过滤器所在的卷积层都可以有一个相邻的bn层(即相邻的两个网络层,该卷积层的输出是该bn层的输入),每个过滤器在其相邻的bn层中都会有一个对应的缩放因子,即某一个具体的γ参数,应理解,γ参数是该卷积神经网络模型在之前的模型训练过程中学习得到的。某个过滤器的第一缩放因子,指的就是该过滤器在bn层中对应的那个缩放因子。
43.在可能的实施例中,步骤s301还可以是:获取卷积神经网络模型中多个过滤器的权重和多个过滤器的第一缩放因子,多个过滤器中的每个过滤器的第一缩放因子是所述每个过滤器在批量归一化层中对应的缩放因子,。需要说明的是,上述多个过滤器可以是卷积神经网络模型中的所有过滤器,也可以是卷积神经网络模型中的部分过滤器,也就是说,可以只对卷积神经网络模型中的部分过滤器的重要性进行评估,而不需要对卷积神经网络模型中的所有过滤器的重要性进行评估。
44.还需要说明的是,本技术实施例中所述的“权重”,指的是一个或多个权重值,多个权重值可以用权重向量或权重矩阵来表示。比如,某个3
×
3的卷积核的权重指的是该卷积核中的所有权重值,即9个权重值,该卷积核中的所有权重值可以用矩阵(即二维数组)来表示,称为该卷积核的权重矩阵,也可以用向量来表示,称为该卷积核的权重向量。再如,某个过滤器的权重由构成该过滤器的所有卷积核的权重组成,即过滤器的权重是一组权重矩阵/权重向量,也可以用多维数组来表示,还可以直接理解为组成该过滤器的所有卷积核中的所有权重值。
45.s302、根据每个过滤器的权重和每个过滤器的第一缩放因子,确定每个过滤器的重要性得分。
46.其中,重要性得分用于衡量过滤器的重要性。若过滤器的重要性得分越高,则说明该过滤器在卷积神经网络模型中的重要性越高;若过滤器的重要性得分越低,则说明该过滤器在卷积神经网络模型中的重要性越低。因此,根据重要性得分便可以准确地选出卷积神经网络模型中相对不太重要的过滤器,进而可以将重要性较低的这些过滤器给剪除,避免将模型中较为重要的过滤器给剪除,能够降低对模型精度的影响。
47.在一种可能的实施例中,所述根据每个过滤器的权重和每个过滤器的第一缩放因子,确定每个过滤器的重要性得分,可以包括:确定每个过滤器的权重的范数值;根据每个过滤器的权重的范数值和每个过滤器的第一缩放因子,确定每个过滤器的重要性得分。
48.其中,上述范数值可以是l1范数值(或者m1范数值),也可以是l2范数值(或者m2范数值),本技术不做具体限定。应理解,l1范数指的是向量/矩阵中各个元素的绝对值之和,l2范数指的向量/矩阵中各个元素的平方和,然后再求平方根。若无特殊说明,下文皆以l2范数为例进行介绍。
49.具体来说,过滤器的权重,即过滤器自身的权重,显然可以作为过滤器重要性的一个评价指标。本技术实施例通过计算过滤器权重的l2范数值,其值越大,在一定程度上表明该过滤器的重要性越高。这里用表示第m个卷积层中的第i个filter中的第j个卷积核的权重向量,用表示第m个卷积层中的第i个filter权重的l2范数值,因为过滤器的权重由构成该过滤器的所有卷积核的权重组成,所以可以通过下式(1)进行计算:
[0050][0051]
其中,i、j、m均为正整数。本技术实施例将作为第m个卷积层中的第i个filter的第一得分。
[0052]
由前文的介绍可知,每个卷积层都可以有一个相应的bn层,该卷积层的输出作为相应bn层的输入,而且该卷积层中的filter与相应bn层中的缩放因子具有一一对应的关系,bn层是根据对应的缩放因子将filter的输出结果进行缩小或者放大的。因此,相应bn层中的缩放因子也可以作为过滤器重要性的一个评价指标,其值越大,在一定程度上表明该过滤器的重要性越高。所以,本技术实施例直接以某个过滤器在bn层中对应的缩放因子作为该过滤器的第二得分。
[0053]
最后,根据某个过滤器的第一得分和第二得分,便可以确定该过滤器的重要性得分。
[0054]
在可能的实施例中,可以将过滤器的第一得分和第二得分相乘得到该过滤器的重要性得分;也可以对过滤器的第一得分和第二得分进行加权求和得到该过滤器的重要性得分;还可以对过滤器的第一得分和第二得分求平均得到该过滤器的重要性得分,本技术不做具体限定。若无特殊说明,下文皆以第一得分和第二得分相乘的方式进行介绍。
[0055]
以filter1为例,请参见图2,卷积层m中的filter1由卷积核1、卷积核2和卷积核3构成,卷积核1、卷积核2、卷积核3的权重向量依次表示为于是,filter1权重的l2范数值可以通过下式(2)进行计算,将计算出的作为filter1的第一得分:
[0056][0057]
再参见图1,filter1位于卷积层m中,并且卷积层m和bn层m是相邻的两个网络层,卷积层m的输出是bn层m的输入,卷积层m中的每个过滤器在bn层中都有一个对应的缩放因子。其中,filter1在bn层m中对应的缩放因子为γ1,γ1是该卷积神经网络模型在之前的训练过程中学习得到的,这里直接以γ1作为filter1的第二得分。
[0058]
最后,将filter1的第一得分和第二得分相乘,便可以得到filter1的重要性得分的计算公式(3)如下:
[0059][0060]
同理,可以计算出卷积神经网络模型中的每一个过滤器(或者只计算部分过滤器)的重要性得分。
[0061]
在一种可能的实施例中,上一个步骤s301还可以包括:获取每个过滤器的权重信息;于是,步骤s302还可以是:根据每个过滤器的权重、每个过滤器对应的缩放因子和每个过滤器的权重信息,确定每个过滤器的重要性得分。
[0062]
其中,所述每个过滤器所在的卷积层包括多个第一卷积核;所述每个过滤器所在的卷积层的下一个相邻卷积层包括多个第二卷积核;所述每个过滤器的权重信息包括所述每个过滤器对应的所述第二卷积核的权重。
[0063]
上述范数值可以是l1范数值,也可以是l2范数值。可以理解的是,如果采用两类范数值,对于过滤器重要性的衡量会更加全面,比如,可以将某个过滤器权重的l1范数值和该过滤器权重的l2范数值相乘或者加权求和,以作为该过滤器的权重的范数值。若无特殊说明,下文皆以l2范数为例进行介绍。
[0064]
在可能的实施例中,每个过滤器对应的所述第二卷积核所对应的通道和所述每个过滤器对应的通道相同。也就是说,每个过滤器与其在下一个卷积层中对应的第二个卷积核所具有的“对应关系”,指的是它们对应的通道相同。
[0065]
例如,如图1所示,卷积层m中包括4个过滤器,它们中的每个过滤器都包含多个卷积核,卷积层m 1中包括5个过滤器,它们中的每个过滤器也都包含多个卷积核。为了便于描述以及区分两个相邻卷积层中的卷积核,在卷积层m和卷积层m 1这两个相邻的卷积层中,将卷积层m包括的卷积核都称为第一卷积核,即卷积层m中的每一个过滤器所包含的卷积核都称为第一卷积核,并且将卷积层m 1包括的卷积核都称为第二卷积核,即卷积层m 1中的每一个过滤器所包含的卷积核都称为第二卷积核。可以理解的是,卷积层m中的每个过滤器在卷积层m 1中都有对应的第二卷积核,即卷积层m中的每个过滤器分别与卷积层m 1中的部分第二卷积核对应。比如,卷积层m中的filter1与卷积层m 1的输入通道cin(m 1,1)具有对应关系,卷积层m 1中的每个过滤器中的以白色小方块所表示的卷积核对应的也是卷积层m 1的输入通道cin(m 1,1)。因为filter1和卷积层m 1中的每个过滤器中的以白色小方块表示的卷积核对应的都是cin(m 1,1),它们对应相同的通道,所以filter1和卷积层m 1中的每个过滤器中的以白色小方块表示的卷积核也具有对应关系。于是,卷积层m中的filter1对应的第二卷积核,即卷积层m中的filter1在卷积层m 1中对应的第二卷积核,指的就是卷积层m 1中的以白色小方块表示的这些卷积核。
[0066]
具体来说,由前文的介绍可知,某个过滤器与其下一个相邻卷积层的一个输入通道具有对应关系,并且卷积层中的卷积核与该卷积层的输入通道也具有对应关系,于是,某个过滤器与其下一个相邻卷积层中的部分卷积核(与该过滤器对应相同输入通道的卷积核)也具有对应关系。因此,某个过滤器在下一个卷积层中对应的那些卷积核的权重,也可以作为该过滤器重要性的一个评价指标。
[0067]
本技术实施例将某个过滤器在下一个卷积层中对应的卷积核(即上文所述的第二卷积核)的权重称为该过滤器的相关权重,通过计算过滤器的相关权重的l2范数值,其值越大,在一定程度上表明该过滤器的重要性越高。这里用表示第m个卷积层中的第i个filter的相关权重的l2范数值,并且第m个卷积层中的第i个filter过滤器的相关权重由该过滤器在第m 1个卷积层中对应的(第二)卷积核的权重组成,于是可以通过下式(4)进行计算:
[0068][0069]
其中,表示卷积层m 1中的第j个过滤器中的第i个卷积核的权重向量。可以看出,第m个卷积层中的第i个过滤器的相关权重,是由卷积层m 1中的所有过滤器中的第i个卷积核的权重向量组成的。将上面计算出的作为第m个卷积层中的第i个过滤器的第三得分。
[0070]
关于过滤器的第一得分和第二得分的计算,与前文方法一致,这里不重复介绍。
[0071]
最后,根据某个过滤器的第一得分、第二得分和第三得分,便可以确定该过滤器的重要性得分。
[0072]
在可能的实施例中,可以根据某个过滤器的第一得分、第二得分和第三得分的乘积,确定该过滤器的重要性得分;也可以对某个过滤器的第一得分、第二得分和第三得分进行加权求和得到该过滤器的重要性得分;还可以对某个过滤器的第一得分、第二得分和第三得分求平均得到该过滤器的重要性得分,本技术不做具体限定。若无特殊说明,下文皆以第一得分、第二得分和第三得分相乘得到重要性得分的方式进行介绍。
[0073]
举例来说,如图1所示,卷积层m 1中包含了5个filter,分别用filter5、filter6、filter7、filter8和filter9来表示,它们依次代表卷积层m 1中的第1至第5个过滤器。上述5个过滤器中的每一个过滤器都包含4个卷积核,同一过滤器中的不同卷积核分别对应卷积层m 1的一个输入通道。并且,卷积层m中的各个过滤器与卷积层m 1的输入通道存在一一对应关系。因此,卷积层m中的过滤器与卷积层m 1中的卷积核也具有对应关系。
[0074]
比如,卷积层m中的filter1对应卷积层m 1的输入通道cin(m 1,1),卷积层m 1中的各个过滤器(filter5至filter9)中的白色小方块所代表的卷积核,对应的也是cin(m 1,1),于是,filter1与卷积层m 1中的上述卷积核之间也是对应的,上述这些卷积核的权重即为filter1的相关权重。假设filter5至filter9中的白色小方块所代表的卷积核,它们的权重向量依次为于是filter1的相关权重可以通过下式(5)进行计算,将计算出的作为filter1的第三得分:
[0075][0076]
关于filter1的第一得分和第二得分的计算方式,与前文一致,这里不重复介绍。
[0077]
最后,将filter1的第一得分、第二得分和第三得分相乘,便可以确定filter1的重要性得分的计算公式(6)如下:
[0078][0079]
同理,可以计算出卷积神经网络模型中的每一个过滤器的重要性得分。
[0080]
需要说明的是,对于卷积神经网络模型中的最后一个卷积层中的卷积核,由于其之后没有卷积层了(没有下一个相邻的卷积层),所以无法用前面的方法计算这些卷积核的第三得分。在一种方案中,可以直接忽略/不考虑最后一个卷积层中的过滤器,不计算这些过滤器的重要性得分,即这些过滤器不参与模型剪枝,不进行过滤器之间重要性的比较。在
另一种方案中,由于模型中的最后一个卷积层之后通常还会接着线性层(全连接层),最后一个卷积层中的这些过滤器与后面这个线性层的输入通道也会具有对应关系,因此,可以将最后一个卷积层中的每个过滤器在其之后的线性层中对应的输入通道的权重,作为该过滤器的相关权重,然后计算过滤器的相关权重的范数值,得到该过滤器的第三得分,进而可以确定最后一个卷积层中的这些过滤器各自的重要性得分。
[0081]
s303、根据每个过滤器的重要性得分对卷积神经网络模型进行剪枝。
[0082]
可以理解的是,对于模型的剪枝率,可以由技术人员根据模型的复杂度、应用场景等进行合理选择,本技术不具体限定。
[0083]
在可能的实施例中,根据所述每个过滤器的重要性得分对所述卷积神经网络模型进行剪枝,可以包括:对每个过滤器的重要性得分进行排序,获得排序结果;根据排序结果和剪枝率确定卷积神经网络模型中的目标过滤器;将卷积神经网络模型中的目标过滤器剪除,得到剪枝后的模型。
[0084]
具体来说,通过前面的步骤s301和s302可以计算出模型中的每个过滤器各自的重要性得分。然后,对每个过滤器的重要性得分进行排序,可以得到相应的排序结果,比如,可以将按照重要性得分从高到低对卷积神经网络模型中的所有过滤器进行排序。接着,将卷积神经网络模型中重要性得分较低的过滤器确定为该模型中的目标过滤器,将目标过滤器进行剪除便得到剪枝后的模型。
[0085]
例如,假设某个卷积神经网络模型中总共有100个过滤器,模型的剪枝率设定为5%,即需要剪除该模型中5%的过滤器。通过步骤s301和s302得到该模型中的所有过滤器的重要性得分之后,按照重要性得分从高到低对该模型中的所有过滤器进行排序,得到排序结果,然后再根据剪枝率,将排序最靠后的五个过滤器确定为该模型中的目标过滤器,将该模型中的目标过滤器剪除便可以得到剪枝后的模型,剪枝完成。
[0086]
需要说明的是,由于本卷积层中的过滤器与本卷积层的输出通道是一一对应是,将本卷积层中的部分过滤器剪除之后,会导致本卷积层的输出通道数目减少。而且,由于本卷积层中的过滤器和下一个相邻卷积层中的卷积核也具有对应关系,当剪除本卷积层中的某个过滤器时,会导致该过滤器在下一个相邻卷积层中对应的输入通道也就没有了,下一个卷积层中的每个过滤器中的卷积核数目要相应减少,这些过滤器都需要移除对应该输入通道的卷积核。
[0087]
例如,如图4所示,假设卷积层m中的filter2被确定为了目标过滤器,在filter2被剪除之后,卷积层m所对应的输出通道相应减少了,即filter2在卷积层m中对应的输出通道cout(m,2)没有了,卷积层m的输出通道变为了三个。因此,当特征图a再次输入卷积层m时,得到的输出结果中便没有cout(m,2)通道的数据,不会产生map2,于是bn层m中的map(γ2)以及激励层m中的map*(γ2)也不会有了。所以,特征图b从原来的4个通道减少为了三个通道,只有三个通道的数据,将这个特征图b输入卷积层m 1时,卷积层m 1所需要的输入通道数目也相应减少了,没有了cin(m 1,2),因此,卷积层m 1中的各个filter中的以浅灰色所表示的卷积核(这些卷积核对应的是cin(m 1,2))也可以移除,移除的这些过滤器对应的其实就是卷积层m中被剪枝的filter2。
[0088]
在可能的实施例中,在上述步骤s303之后,该方法还可以包括:获取训练数据,通过训练数据对上述剪枝后的模型进行微调得到目标模型。其中,训练数据包括图像数据、语
音数据、文本数据中的一种或多种类型,由卷积神经网络模型模型的具体类型/功能来决定,本技术不做具体限定。
[0089]
可以理解的是,模型剪枝后会有一定的精度损失,这里的微调就是用训练数据对剪枝之后的模型重新进行训练,使其尽量恢复到原始模型(即剪枝之前的模型)的精度水平。关于模型微调,本技术不做过多介绍。
[0090]
综上所述,本技术实施例通过获取卷积神经网络模型中每个过滤器的权重和每个过滤器的缩放因子,能够确定该卷积神经网络中每个过滤器的重要性得分。其中,重要性得分用于衡量过滤器的重要性,若过滤器的重要性得分越高,则说明该过滤器在卷积神经网络模型中的重要性越高,若过滤器的重要性得分越低,则说明该过滤器在卷积神经网络模型中的重要性越低。本技术实施例还可以获取每个过滤器的权重信息,在每个过滤器的权重和每个过滤器的第一缩放因子的基础上,再结合每个过滤器的权重信息来确定每个过滤器的重要性得分。可以看出,本技术实施例可以以filter自身的权重、filter在bn层中对应的缩放因子(即第一缩放因子)以及filter的相关权重作为filter重要性的评价指标,根据这三种评价指标对卷积神经网络模型中的过滤器的重要性进行评估,从而确定出相对不重要的filter并剪除。可以理解的是,通过融合以上三种评价指标,对filter重要性的衡量更加全面,能够更准确地选出模型中相对不重要的filter进行剪枝,既实现了模型压缩的目的,减少模型中的冗余信息,又使得模型剪枝后的精度损失较小,可以很好地保留原始模型的精度和性能。
[0091]
请参见图5,图5是本技术实施例提供的一种模型剪枝装置500的结构示意图,该模型剪枝装置500包括获取模块501、确定模块502和处理模块503。
[0092]
获取模块501用于,获取卷积神经网络模型中每个过滤器的权重和每个过滤器的第一缩放因子,其中,每个过滤器的第一缩放因子是每个过滤器在批量归一化层中对应的缩放因子,每个过滤器所在的卷积层和批量归一化层是相邻的网络层
[0093]
确定模块502用于,根据每个过滤器的权重和每个过滤器的第一缩放因子,确定每个过滤器的重要性得分
[0094]
处理模块503用于,根据每个过滤器的重要性得分对卷积神经网络模型进行剪枝。
[0095]
在可能的实施例中,获取模块501还用于,获取每个过滤器的权重信息,其中,所述每个过滤器所在的卷积层包括多个第一卷积核,所述每个过滤器所在的卷积层的下一个相邻卷积层包括多个第二卷积核,所述每个过滤器的权重信息包括所述每个过滤器对应的所述第二卷积核的权重;确定模块502还用于:根据每个过滤器的权重、每个过滤器的第一缩放因子和每个过滤器的权重信息,确定每个过滤器的重要性得分。
[0096]
在可能的实施例中,所述每个过滤器对应的所述第二卷积核所对应的通道和所述每个过滤器对应的通道相同。
[0097]
在可能的实施例中,确定模块502还用于:确定每个过滤器的权重的范数值和每个过滤器对应的第二卷积核的权重的范数值;根据每个过滤器的权重的范数值、每个过滤器的第一缩放因子和每个过滤器对应的第二卷积核的权重的范数值,确定每个过滤器的重要性得分。
[0098]
在可能的实施例中,上述范数值是l1范数值和l2范数值中的一种或多种。
[0099]
在可能的实施例中,确定模块502还用于:根据每个过滤器的权重的范数值、每个
过滤器的第一缩放因子和每个过滤器对应的第二卷积核的权重的范数值的乘积,确定每个过滤器的重要性得分。
[0100]
在可能的实施例中,处理模块503还用于:对每个过滤器的重要性得分进行排序,获得排序结果;根据排序结果和剪枝率确定卷积神经网络模型中的目标过滤器;将卷积神经网络模型中的目标过滤器剪除,得到剪枝后的模型。
[0101]
在可能的实施例中,处理模块503还用于:获取训练数据,其中,训练数据包括图像数据、语音数据、文本数据中的一种或多种;通过训练数据对剪枝后的模型进行微调,得到目标模型。
[0102]
上述模型剪枝装置500中的各个模块具体用于实现图3中的任一实施例的方法,请参见上文相关介绍,这里不重复。
[0103]
图6是本技术实施例提供的一种计算设备600的结构示意图。计算设备600可以是笔记本电脑、平板电脑以及服务器等计算设备,本技术不做具体限定。
[0104]
计算设备600包括处理器601、存储器602以及通信接口603,所述计算设备600具体用于实现图3的模型剪枝方法中的任一实施例。其中,处理器601、存储器602以及通信接口603可以通过内部总线604相互连接,也可通过无线传输等其他手段实现通信。本技术实施例以通过总线604连接为例,总线604可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线604可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0105]
处理器601可以由至少一个通用处理器构成,例如中央处理器(central processing unit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic)、可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld)、现场可编程逻辑门阵列(field-programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。处理器601执行各种类型的数字存储指令,例如存储在存储器602中的软件或者固件程序,它能使计算设备600提供多种服务。
[0106]
存储器602用于存储程序代码,并由处理器601来控制执行。存储器602可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram);存储器602也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom)、快闪存储器(flash memory)、硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);存储器602还可以包括上述种类的组合。存储器602可以存储有程序代码,具体可以包括用于执行图3的模型剪枝方法的任一实施例的程序代码,这里不再进行赘述。
[0107]
通信接口402可以为有线接口、无线接口或者内部接口,用于与其他模块或设备进行通信。有线接口可以是以太接口、局域互联网络(local interconnect network,lin)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等,内部接口可以是pcie接口等等。
[0108]
需要说明的是,本实施例可以是通用的物理服务器实现的,例如,arm服务器或者x86服务器,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、
云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)以及大数据和人工智能平台等基础云计算服务的云服务器。本实施例也可以是基于通用的物理服务器结合nfv技术实现的虚拟机实现的,虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,本技术不作具体限定。应理解,图6所示的计算设备600还可以是至少一个服务器构成的服务器集群,本技术不作具体限定。
[0109]
还需要说明的,图6仅仅是本技术实施例的一种可能的实现方式,实际应用中,计算设备600还可以包括更多或更少的部件,这里不作限制。关于本技术实施例中未出示或未描述的内容,可参见前述图3的模型剪枝方法的实施例中的相关阐述,这里不再赘述。
[0110]
本技术实施例中还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在处理器上运行时,图3的任一实施例的方法得以实现。
[0111]
本技术实施例中还提供一种计算机程序产品,当计算机程序产品在处理器上运行时,图3的任一实施例的方法得以实现。
[0112]
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等等。
[0113]
本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
[0114]
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
[0115]
以上所揭露的仅为本技术一种较佳实施例而已,当然不能以此来限定本技术之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本技术权利要求所作的等同变化,仍属于发明所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献