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

一种高效的深度卷积神经网络剪枝方法与流程

2021-11-05 19:38:00 来源:中国专利 TAG:


1.本发明属于计算机技术领域,主要涉及一种高效的深度卷积神经网络的剪枝方法,可用于深度卷积神经网络的压缩。


背景技术:

2.近年来,神经网络技术在科研和实际应用中取得了很好的效果,但是相较于传统算法,神经网络的计算过程需要消耗大量的存储资源和计算资源,这导致其在部署应用时耗费较多的功耗和成本,限制了神经网络在功耗有限的移动端设备上的使用。神经网络剪枝作为一种压缩神经网络的方法,通过去除神经网络中的冗余成分减少神经网络的存储消耗及计算消耗,从而达到降低运行神经网络时功耗的目的。
3.目前,神经网络剪枝方法分为非结构化剪枝和结构化剪枝两大类。
4.非结构化剪枝方法,是通过任意地去除神经网络中的非重要权重达到压缩神经网络的目的,这类方法虽然能够取得很高的压缩率,但由于其所去除权重的位置是无序的,因此破环了神经网络原有的数据结构,且还需要专门的设备去存储裁剪的权重参数,限制了其在通用设备上的应用。
5.结构化剪枝方法,是通过去除神经网络中的非重要通道或者卷积核达到压缩神经网络的目的,由于去除通道不会破坏神经网络的数据结构,因此这类方法能够很好的运用到现有计算设备上。但是该结构化剪枝方法对于神经网络中冗余成分的定位不精确,对于神经网络的压缩率较低,且对神经网络的性能影响较大。
6.此外,使用非结构化方法和结构化方法进行剪枝后的神经网络模型,大部分需要再次进行训练,耗费大量的时间,效率低。


技术实现要素:

7.本发明的目的在于针对上述现有技术的不足,提出一种高效的深度卷积神经网络剪枝方法,以在对剪枝后的模型不再进行训练的情况下,保证良好的压缩率和精度,提高剪枝效率。
8.本发明的技术思路是:通过基于admm算法的稀疏学习方法约束调控卷积神经网络的训练,使网络结构稀疏化;通过利用遗传算法对训练好的卷积神经网络各层所适宜的裁剪率进行启发式搜索,并在适应度函数的引导下自动搜索出符合需求的最佳裁剪率;通过最佳裁剪率裁剪网络,得到最佳的卷积神经网络。其实现步骤包括如下:
9.(1)利用基于admm的稀疏学习方法训练深度卷积神经网络:
10.(1a)对深度卷积神经网络各通道引入缩放因子γ
l,i

11.(1b)对深度卷积神经网络的损失函数loss,添加各通道中缩放因子的0范正则项,得到新的损失函数loss
new

12.(1c)从公开数据网站下载训练数据集,利用该训练数据集和随机梯度下降算法训练神经网络中缩放因子以外的参数,并利用admm算法对缩放因子γ
l,i
进行优化,直到(1b)
中新的损失函数收敛,得到训练好的深度卷积神经网络模型;
13.(2)利用遗传算法在稀疏学习训练后的卷积神经网络中搜索最佳子裁剪率:
14.(2a)设置遗传算法的最大迭代次数,计算训练后卷积神经网络模型的总参数量b0和计算量d0;
15.(2b)初始化m组裁剪率,每组包括n个不同的裁剪率,n等于网络层数;
16.(2c)将各组裁剪率分别编码为二进制编码,并对二进制编码进行交叉和变异操作产生若干新二进制编码,得到新产生的二进制编码数量和原有的二进制编码数量之和为p;
17.(2d)对(2c)中p个二进制编码进行解码,并将每条二进制编码解码为一组裁剪率p
i,j

18.(2e)根据(2d)中生成的裁剪率,调整网络模型,选择卷积神经网络各层中缩放因子数值较小的通道,使卷积神经网络各层被选择的通道数与该层总通道数之比等于裁剪率;
19.(2f)将(2e)中被选择通道从卷积神经网络中删除,获得p个子网络,每个子网络对应一组裁剪率;
20.(2g)计算(2f)中的每个子网络的准确率a0,参数量b0和计算量d0,并利用a0,b0和d0计算出每个子网络的适应度f
i

21.(2h)通过每个子网络的适应度f
i
计算出每个网络被选择的概率q
i
,通过轮盘选择法,从(2f)所获得的p个子网络中筛选出r个子网络,得到每个子网络在(2d)中所对应的当前裁剪率p
i,j
,1≤r≤p;
22.(2i)重复(2b)到(2h)过程,当迭代次数达到(2a)中所设置的最大迭代次数,完成搜索,得到最佳适应度所对应的卷积神经网络模型的最佳子裁剪率p
best

23.(3)选择卷积神经网络各层中缩放因子数值较小的ω个通道,使卷积神经网络各层被选择的通道数ω与该层总通道数β之比等于最佳子裁剪率p
best
,以完成对卷积神经网络模型的裁剪,得到最佳的卷积神经网络。
24.本发明具有如下优点:
25.1.精度损失小
26.本发明利用基于admm算法的稀疏学习方法训练深度卷积神经网络,抑制了卷积神经网络中冗余参数数值的增大,减小了参数对网络性能影响,并通过遗传算法对裁剪率进行细致的筛选,进一步减小了网络模型剪枝对网络精度造成的影响,使得本发明极大的降低了网络模型剪枝带来的精度损失。
27.2.剪枝效率高
28.本发明利用基于admm算法的稀疏学习方法以及基于遗传算法启发式搜索方法,分别在卷积神经网络的训练和剪枝阶段进行参数的粗筛和细筛,极大的减小了剪枝带来的精度损失,使得本发明所获得的剪枝后的网络无需再训练就能够拥有与原网络几乎一致的性能,从而节省了再训练的时间,提高了剪枝的效率。
29.3.剪枝可调节
30.本发明利用遗传算法对适合卷积神经网络的裁剪率进行启发式搜索,通过改变适应度的计算方式改变搜索的方向,进而改变最终搜索结果,使得本发明能根据实际需求调
节剪枝。
31.仿真结果表明,本发明能高效压缩深度卷积神经网络并产生极小的精度损失。在基于cifar

10和imagenet数据集的分类任务中,对卷积神经网络参数量的平均压缩率达到68.0%,对计算量的平均压缩率达到63.4%,对通道数的平均压缩量为63.2%。且精度与压缩前持平甚至超越。
附图说明
32.图1为本发明的实现流程图;
33.图2为本发明的仿真结果图。
具体实施方式
34.下面结合附图对本发明的实施例和效果做进一步的详细描述。
35.参照图1,本实例的实现步骤如下:
36.步骤1,利用基于admm的稀疏学习方法训练深度卷积神经网络。
37.所述深度卷积神经网络为包括n层卷积层的现有神经网络,其中第l层的输入表示为x
l
,对每层输入x
l
进行卷积和规范化操作,操作集合表示为f(
·
),该深度卷积神经网络的每一个通道的输出表示为:
38.y
l,i
=f(x
l
,w
l,i
,b
l,i
),l=1,2,

n;i=1,2,...,n
ꢀꢀꢀꢀꢀꢀꢀꢀ
<1>
39.其中,l是神经网络层数的索引,i是通道的索引,w
l.i
和b
l,i
分别是通道的权重和偏置集合,n
l
表示深度卷积神经网络中第l层的总通道数,f(
·
)表示深度神经网络中卷积核规范化操作的集合,x
l
表示神经网络中第l层的输入,n表示深度卷积神经网络的总层数,其数值根据不同的任务需求进行调整。
40.本步骤利用基于admm的稀疏学习方法对深度卷积神经网络进行训练,其实现如下
41.(1.1)在深度卷积神经网络的各通道引入缩放因子,得到其各通道的输出:
42.y
l,i
=γ
l,i
·
f(x
l
,w
l,i
,b
l,i
),l=1,2,...n;i=1,2,...,n,
ꢀꢀꢀꢀꢀꢀꢀ
<2>
43.其中,γ
l,i
表示深度卷积神经网络中第l层第i个通道的缩放因子;若γ
l,i
为0,则对应通道的输出y
l,i
为0,表示是所对应的通道是无效的,可以被安全地裁剪。
44.(1.2)根据(1.1)中缩放因子γ
l,i
的定义,将深度卷积神经网络通道的稀疏性ξ
c
使用缩放因子的稀疏性ξ
s
来表示,即将求解通道稀疏性问题转换为对如下缩放因子γ
l,i
的约束优化问题:
[0045][0046]
其中,e(
·
)表示网络的损失函数loss,γ表示缩放因子γ
l,i
集合的向量,w
l
和b
l
分别是第l层的权重和偏置集合,c是通道总数,|γ|0为l0范数,表示非零因子的数量。
[0047]
(1.3)向(1.2)中的损失函数e(
·
)添加深度卷积神经网络各通道的缩放因子γ
l,i
的l0范数正则项,将约束优化问题转换为如下缩放因子γ
l,i
的非约束优化问题:
[0048][0049]
并根据该非约束优化式得到一个新的损失函数loss
new

[0050]
其中λ为超参数,λ>0。
[0051]
(1.4)为了求解(1.3)中的非约束优化问题,向其加入辅助变量,并利用增广拉格朗日乘子法进行变换并进行配方,将公式<4>转换为如下公式:
[0052][0053]
其中ρ为常数,u为用于配方的对偶变量,z为辅助变量。|z|0为l0范数,表示辅助变量的数量。
[0054]
(1.5)将(1.4)中公式(5)再分解为如下三个子问题:
[0055]
(1.5.1)将第一个子问题表示为:
[0056][0057]
其中,k为迭代次数索引,z
k
‑1和u
k
‑1分别是第k

1次迭代中辅助变量和对偶变量的集合,可以视为常数。
[0058]
(1.5.2)将第二个子问题表示为:
[0059][0060]
其中,γ
k
是第一个子问题在k次迭代的结果,u
k
‑1是第k

1次迭代的对偶变量。z,γ
k
和u
k
‑1均为向量的表示,可将该公式<7>转换为如下公式:
[0061][0062]
其中,z
j
,和分别是向量z,γ
k
和u
k
‑1的元素,c表示神经网络总的通道数量,其值等于向量z,γ
k
和u
k
‑1的长度;
[0063]
(1.5.3)将第三个子问题表示为:
[0064][0065]
其中,z
k
为第二个子问题在k次迭代的结果。
[0066]
(1.6)通过迭代地求解(1.5)中三个子问题来求解(1.4)中的公式:
[0067]
(1.6.1)求解(1.5.1)中式<6>表示的第一个子问题,得到第k次迭代中缩放因子γ
l,i
的集合γ
k

[0068]
所述第一个问题由两部分组成,第一部分为卷积神经网络最初的损失函数loss;第二部分是凸的和可微的。根据具体任务需求,从公开数据网站下载对应任务的训练数据
集,利用该训练数据集和随机梯度下降算法训练该问题,直到其收敛,得到第k 1次迭代中缩放因子γ
l,i
的集合γ
k

[0069]
(1.6.2)求解(1.5.2)中式<8>表示的第二个子问题,根据式<8>中辅助变量z
j
的取值,得到第k次迭代中辅助变量的集合z
k

[0070]
若辅助变量z
j
不为零,则将公式<8>重写为:
[0071][0072]
对公式<10>的完全平方项取零,即得到公式<10>的最小值为λ,为z
j
在第k次迭代时的值;
[0073]
若辅助变量z
j
为0,即为0,则公式<8>中的|z
j
|0项为0,只剩完全平方项,得到其最小值为
[0074]
综合以上两种取值情况,的值如下:
[0075][0076]
将第二个子问题的结果表示为z
k
为第k次迭代中辅助变量集合。
[0077]
(1.6.3)求解(1.5.3)中式<9>表示的第三个子问题,得到第k次迭代中对偶变量的集合u
k

[0078]
由于(1.5.3)中第三个子问题为凸二次优化问题,其结果为其极值,表示如下:
[0079]
u
k
=γ
k

z
k
u
k
‑1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
<12>
[0080]
其中,u
k
‑1为第k

1次迭代中对偶变量的集合,γ
k
和z
k
分别为第一个和第二个子问题在k次迭代时的结果;
[0081]
(1.7)在第k 1次迭代时,将(1.6.3)中第三个子问题在第k次迭代中的结果u
k
输入到(1.6.1)求解的第一个子问题中;
[0082]
(1.8)重复(1.6)到(1.7)的过程,直到(1.3)中新的损失函数loss
new
收敛,完成使用基于admm的稀疏学习方法对深度卷积网路的训练,得到训练后卷积神经网络。
[0083]
步骤2,利用遗传算法在稀疏学习训练后的卷积神经网络中搜索最佳子裁剪率。
[0084]
(2.1)设置最大迭代次数,计算训练后神经网络的参数量b0和计算量d0。
[0085][0086][0087]
其中,n表示神经网络的总层数,n
l
表示神经网络中第l层的总通道数,k
w
和k
h
分别
表示神经网络通道中二维卷积核的宽度和长度,和分别表示神经网络第l层的输出特征图的宽度和长度;
[0088]
(2.2)初始化m个个体作为遗传算法的种群,每一个个体为一组通道裁剪率,表示为:
[0089]
s
i
={p
i,j
|0≤p
i,j
<1,j=1,2,...,n},i=1,2,...,m,
ꢀꢀꢀꢀꢀꢀ
<15>
[0090]
其中,s
i
是第i组裁剪率,p
i,j
代表s
i
中第j层的通道裁剪率,m表示裁剪率的组数,每组裁剪率包括n个不同的裁剪率,n等于网络层数;
[0091]
(2.3)为(2.2)中初始化的m组裁剪率生成二进制编码,其值为0或者1,表示如下:
[0092][0093]
其中,c
i
是第i个编码,m是决定二进制码长度的超参数。
[0094]
在式<16>表示的二进制编码的基础上,通过对其进行交叉和变异操作,产生若干新的二进制编码,得到新产生的二进制编码数量和原有的二进制编码数量之和为p。其中,交叉是指在两个编码之间随机交换一些位元,变异是指改变编码中的一些位元(0到1或1到0);
[0095]
(2.4)通过对(2.3)中式<16>的逆过程,将所有p个编码解码为p组裁剪率,表示如下:
[0096][0097]
其中,p
i,j
表示第i组的第j个裁剪率;
[0098]
(2.5)根据(2.4)中生成的裁剪率,调整网络模型,选择卷积神经网络各层中缩放因子数值较小的通道,使卷积神经网络各层被选择的通道数与该层总通道数之比等于裁剪率p
i
,j;
[0099]
(2.6)将(2.5)中的被选择通道从神经网络中删除,获得p个子网络,每个子网络对应一组裁剪率p
i,j

[0100]
(2.7)针对不同的任务,从公开数据网站下载对应的测试数据集,并将该测试集输入到(2.6)中的每个子网络中,根据网络输出结果和标签,计算其准确率d
i

[0101]
d
i
=φ(x
i
,g)
[0102]
其中,d
i
表示第i个子网络的准确率,x
i
表示第i个子网络的输出结果,g表示测试集样本的标签。
[0103]
(2.8)根据(2.1)中的式<13>和式<14>,分别计算出每个子网络的参数量a
i
和计算量b
i
,并计算第i个子网络的适应度f
i

[0104][0105]
其中,a0和b0和d0分别是原网络的准确率,参数量和计算量;θ是平衡式<18>各部分的超参数,1≤θ≤1,ε表示精度的允许偏差。
[0106]
(2.9)将(2.8)所获得的适应度f
i
求和得到一个总的适应度sum(f),然后为每个子
网络计算一个加权适应度q
i

[0107][0108]
其中,sum(f)是所有子网络适应度f
i
的总和,q
i
是每个子网络的加权适应度,表示每个子网络被选择的概率。
[0109]
(2.10)根据(2.9)中每个子网络被选择的概率q
i
,通过轮盘选择方法选择r个子网络,得到每个子网络在(2.6)所对应的裁剪率p
i,j
,并将其输入到(2.2)中进行下一次迭代,其中1≤r≤p。
[0110]
(2.11)重复(2.2)到(2.10),直到达到最大迭代次数后完成搜索,得到卷积神经网络模型的最佳子裁剪率p
best

[0111]
步骤三,利用最佳子裁剪率对稀疏学习训练后的卷积神经网络进行裁剪。
[0112]
选择卷积神经网络各层中缩放因子数值较小的ω个通道,使卷积神经网络各层被选择的通道数ω与该层总通道数β之比等于最佳子裁剪率p
best
,删除选出的ω个通道,以完成对卷积神经网络模型的裁剪,得到最佳的卷积神经网络,以为后续的深度学习任务和实际场景应用提供计算耗时更短、占用存储资源更少的卷积神经网络模型。
[0113]
本发明的效果通过以下仿真进一步说明。
[0114]
1.仿真实验条件:
[0115]
本发明仿真实验的操作系统为ubuntu18.04 lts,深度学习软件平台为pytorch,gpu采用英伟达titan xp;
[0116]
本发明仿真实验所使用的数据集包括:cifar

10,imagenet;
[0117]
本发明仿真实验所涉及的神经网络包括:vgg

16,resnet

50,resnet

56,resnet

110,googlenet,densenet

40。
[0118]
2.仿真实验内容:
[0119]
仿真1,对卷积神经网络训练的仿真实验:
[0120]
使用cifar

10数据集,分别使用传统训练方式和本发明中基于admm的稀疏学习的训练方式训练分类神经网络vgg

16,结果如图2所示。其中,图2(a)为使用传统训练方法得到的神经网络特征图;图2(b)为本发明中基于admm的稀疏学习训练方式得到的神经网络特征图。图2中,黑色小格表示无效的特征,白色纹理小格表示有效的特征。
[0121]
从图2中可以看出,本发明基于admm的稀疏学习训练方式得到的无效特征图明显多于传统训练方式得到的神经网络特征图,表明本发明对卷积神经网络的稀疏学习效果明显。
[0122]
仿真2,卷积神经网络的剪枝仿真实验:
[0123]
利用本发明在cifar

10数据集的训练集上分别对卷积神经网络vgg

16,resnet

56,resnet

110,googlenet,densenet

40进行训练并完成剪枝;
[0124]
利用本发明在imagenet数据集的训练集上别对卷积神经网络resnet

50进行训练并完成剪枝。
[0125]
使用剪枝后的卷积神经网络vgg

16,resnet

56 resnet

110,googlenet,densenet

40对来自cifar

10数据集的测试集的数据进行分类;使用剪枝后的卷积神经网
络resnet

50,对来自imagenet数据集的测试集的数据进行分类,得到剪枝后的卷积神经网络对来自两种测试集中的数据进行分类的效果,如表1所示。
[0126]
表1.剪枝后的卷积神经网络对测试集的分类效果
[0127][0128]
表中参数量的计数单位

m’表示106个浮点数,计算量的计数单位

b’表示109次浮点运算。原网络表示未经过剪枝的卷积神经网络,剪枝后网络表示经过本发明的方法剪枝后的卷积神经网络。
[0129]
从表1中可以看到,本发明对卷积神经网络参数量的最高压缩率为87.8%,最低压缩率为43.0%,平均压缩率为68.0%;对卷积神经网络计算量的最高压缩率为83.6%,最低压缩率为47.9%,平均压缩率为63.4%;对卷积神经网络通道的最高压缩率为81.6%,最低压缩率为41.4%,平均压缩率为63.2%。
[0130]
表1结果表明,本发明可以有效压缩卷积神经网络,且剪枝后所获得的卷积神经网络错误率与原网络基本一致,表明本发明可以有效压缩卷积神经网络,且产生的精度损失很小。通过本发明对卷积神经网络的压缩大大减小了卷积神经网络的存储消耗及计算消耗,从而可提升后续各种使用效果。
再多了解一些

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

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

相关文献