一种卷积神经网络模型的剪枝方法及装置与流程

文档序号:20876324发布日期:2020-05-26 16:35阅读:258来源:国知局
一种卷积神经网络模型的剪枝方法及装置与流程
本发明涉及模型剪枝
技术领域
,尤其涉及一种卷积神经网络模型的剪枝方法及系统。
背景技术
:1988年,weizhang提出了第一个二维卷积神经网络:平移不变人工神经网络(siann),并将其应用于检测医学影像。独立于zhang(1988),yannlecun在1989年同样构建了应用于计算机视觉问题的卷积神经网络,即lenet的最初版本。lenet包含两个卷积层,2个全连接层,共计6万个学习参数,规模远超tdnn和siann,且在结构上与现代的卷积神经网络十分接近。lecun(1989)对权重进行随机初始化后使用了随机梯度下降(stochasticgradientdescent,sgd)进行学习,这一策略被其后的深度学习研究所保留。此外,lecun(1989)在论述其网络结构时首次使用了“卷积”一词,“卷积神经网络”也因此得名。模型剪枝是一种深度神经网络模型压缩的方法,通过对模型的参数统计,删除不重要的参数,并且保持网络的精度、准确率不变的前提下,达到提高网络运算速度,压缩模型大小的目的。先阶段主要有通道剪枝的压缩方法,该方法存在网络压缩不规整的问题,对于硬件运算设备并不友好。现有压缩技术都是对网络参数统一压缩处理,这样会导致网络压缩不均,容易造成部分中间层压缩消失,或者很难提高压缩率。技术实现要素:本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。鉴于上述现有存在网络压缩不规整、压缩率太低的问题,提出了本发明。因此,本发明提供了一种卷积神经网络模型的剪枝方法及系统,可以通过规整剪枝的策略,提高压缩率。为解决上述技术问题,本发明提供如下技术方案:构建卷积神经网络模型,并稀疏化训练所述模型;设定剪枝策略,将训练后的所述模型剪枝,重新整合;再次稀疏化训练剪枝后的剪枝模型,直至所述剪枝模型训练精度明显下降;停止所述剪枝,获得高效的所述剪枝模型。作为本发明所述的一种卷积神经网络模型的剪枝方法的一种优选方案,其中:构建所述卷积神经网络模型包括,设置训练数据集;采用原始论文中人为设定的数字配置卷积层的通道数目;利用多个所述卷积层叠加组建网络;结合子采样层构成特征抽取器,构建所述模型。作为本发明所述的一种卷积神经网络模型的剪枝方法的一种优选方案,其中:稀疏化训练所述模型包括,设计损失函数,获取稀疏参数组;利用l1损失函数公式,构建惩罚系数函数;训练所述神经网络模型,并保存训练模型参数。作为本发明所述的一种卷积神经网络模型的剪枝方法的一种优选方案,其中:构建所述惩罚稀疏函数、损失函数具体包括,利用交叉熵损失函数ce公式检测网络的分类损失,公式如下:其中,output是网络的输出结果、label是图片所属的实际类别;利用l1损失函数对gamma值惩罚,获得所述稀疏参数组,公式如下:l1loss=p(i,n)*||gamma||其中p(i,n)是惩罚系数函数;构建所述惩罚系数函数,公式如下:p(i,n)=((n-b–a*||m-i||)/b+1)*base其中剪枝vgg网络,b=256,a=30,m=10,base=0.0001;构建所述损失函数,公式如下:l=lce+l1loss=ce(label,output)+p(i,n)*||gamma||。作为本发明所述的一种卷积神经网络模型的剪枝方法的一种优选方案,其中:剪枝所述训练模型包括,利用所述训练模型参数值,设定所述剪枝策略及标准;结合所述剪枝标准裁剪所述训练模型,并删除所述参数值较小的网络通道;重新整合裁剪后的所述训练模型。作为本发明所述的一种卷积神经网络模型的剪枝方法的一种优选方案,其中:剪枝所述训练模型还具体包括,读取所述训练模型参数,并分析各个batchnorm层中gamma系数值与0的接近程度,获得diff(i)=||gamma(i)||;对所述diff(i)大小排序;利用动态剪枝裁剪所述训练模型;记录并舍弃被剪枝后的所述网络通道序号及通道值;重新整合剪枝后的所述训练模型参数,并保存。作为本发明所述的一种卷积神经网络模型的剪枝方法的一种优选方案,其中:再次稀疏化训练剪枝后的所述训练模型包括,参照剪枝后的所述网络通道,重新设定所述稀疏化训练参数,再次进行所述稀疏化训练;检测判断所述剪枝模型训练精度下降,相较于原始大网络下降超过2%时停止所述剪枝过程;获得高效所述剪枝模型。作为本发明所述的一种卷积神经网络模型的剪枝装置的一种优选方案,其中:输入模块可以处理多维数据,通过所述输入模块内的归一单元,可在所述参数值输入所述卷积神经网络模型前,对通道输入数据归一化,即使输入数据为像素,也可将原始像素归一化;连接模块包括传递单元和组合单元,通过所述组合单元对提取的特征进行非线性组合获取传输信号,并由所述传递单元向该系统内结构组织进行信号的传递交接;处理模块与所述输入模块、连接模块相连,当获取所述输入参数数据后,通过计算体快速检测相关输入特征,并利用所述传递单元将所述传输信号传递给所述输入模块。本发明的有益效果:本发明通过采用规整剪枝的策略,使得剪枝后的模型可以在硬件运算设备上有更好的运算效率,对于不同层的剪枝策略不作统一处理,可以达到整体网络整体剪枝的效果,不会出现中间层压缩消失的情况,提高压缩率。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:图1为本发明第一个实施例所述的卷积神经网络模型的剪枝方法的流程示意图;图2为本发明第一个实施例所述的卷积神经网络模型的剪枝方法的又一种流程示意图;图3为本发明第一个实施例所述的卷积神经网络模型的剪枝方法的数据集示意图;图4为本发明第一个实施例所述的卷积神经网络模型的剪枝方法的对比曲线示意图;图5为本发明第二个实施例所述的卷积神经网络模型的剪枝装置的模块结构示意图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明,显然所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护的范围。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。同时在本发明的描述中,需要说明的是,术语中的“上、下、内和外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一、第二或第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。本发明中除非另有明确的规定和限定,术语“安装、相连、连接”应做广义理解,例如:可以是固定连接、可拆卸连接或一体式连接;同样可以是机械连接、电连接或直接连接,也可以通过中间媒介间接相连,也可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。实施例1卷积神经网络的不同层有着不同的作用,对不同层都采用相同的惩罚系数,会导致网络剪枝后结构的畸变,一个硬件计算设备友好的网络,其网络中每个层之间的通道数变化不会发生剧烈的变化,网络的通道数变化越平缓,该网络结构越高效。相同的计算量,可以消耗更少的计算时间,本发明采用一种优化的惩罚系数函数和动态剪枝策略,获得高效的剪枝模型同时,避免有些局部被过分剪枝而造成层消失的情况。参照图1~图4,为本发明的第一个实施例,提供了一种卷积神经网络模型的剪枝方法,包括以下步骤:s1:构建卷积神经网络模型,并稀疏化训练模型。参照图3,其中需要说明的是,构建卷积神经网络模型包括:设置训练数据集;采用原始论文中人为设定的数字配置卷积层的通道数目;利用多个卷积层叠加组建网络;结合子采样层构成特征抽取器,构建模型。进一步的,稀疏化训练模型包括,设计损失函数,获取稀疏参数组;利用l1损失函数公式,构建惩罚系数函数;训练神经网络模型,并保存训练模型参数。具体的,构建惩罚稀疏函数、损失函数具体包括:利用交叉熵损失函数ce公式检测网络的分类损失,公式如下:其中,output是网络的输出结果、label是图片所属的实际类别;利用l1损失函数对gamma值惩罚,获得稀疏参数组,公式如下:l1loss=p(i,n)*||gamma||其中p(i,n)是惩罚系数函数;构建惩罚系数函数,公式如下:p(i,n)=((n-b–a*||m-i||)/b+1)*base其中剪枝vgg网络,b=256,a=30,m=10,base=0.0001;构建损失函数,公式如下:l=lce+l1loss=ce(label,output)+p(i,n)*||gamma||。s2:设定剪枝策略,将训练后的模型剪枝,重新整合。本步骤需要说明的是,剪枝训练模型包括:利用训练模型参数值,设定剪枝策略及标准;结合剪枝标准裁剪训练模型,并删除参数值较小的网络通道;重新整合裁剪后的训练模型。进一步的,剪枝训练模型还具体包括:读取训练模型参数,并分析各个batchnorm层中gamma系数值与0的接近程度,获得diff(i)=||gamma(i)||;对diff(i)大小排序;利用动态剪枝裁剪训练模型;记录并舍弃被剪枝后的网络通道序号及通道值;重新整合剪枝后的训练模型参数,并保存。s3:再次稀疏化训练剪枝后的剪枝模型,直至剪枝模型训练精度明显下降。本步骤还需要说明的是,再次稀疏化训练剪枝后的训练模型包括:参照剪枝后的网络通道,重新设定稀疏化训练参数,再次进行稀疏化训练;检测判断剪枝模型训练精度下降,相较于原始大网络下降超过2%时停止剪枝过程;s4:获得高效的剪枝模型。较佳的,参照图4,横坐标为层的位置,纵坐标为该层的通道数,通过采用本发明方案策略与一般策略对比,可以看出在本发明方案策略下,得到的是一条更加平滑的曲线,网络更加有效,证明了本发明方案的有效性。优选的是,在卷积神经网络中,gamma系数反应网络通道的重要性程度,将gamma系数接近于0的通道剪枝掉对网络的精度影响不大,因此,动态剪枝策略主要参考gamma系数。对于一组通道,gamma系数接近0的通道越多越好,这样能够剪枝的通道数也越多;若只是普通的网络训练,不会得到较多的接近0的gamma系数。惩罚系数是一个常数,但是卷积神经网络的参数是人为设定,统一处理各个层会导致网络更多的去惩罚通道数过多的层,对于浅层网络剪枝的通道数过少,造成网络剪枝不规整,网络显得头重脚轻。因此p(i,n)是一个根据卷积层的位置,卷积层的通道数的函数。中间层的通道数尤为重要,是浅层信息与深层信息交换的中心,因此,对于中间几层卷积层通道数应当多于两端的通道数。因此,本发明构建的惩罚系数函数如下:p(i,n)=((n-b–a*||m-i||)/b+1)*base损失函数为:l=lce+l1loss=ce(label,output)+p(i,n)*||gamma||。优选的是,本发明方法采用规整剪枝策略,通过稀疏化训练的方式获得高效的剪枝模型,从而达到提速的效果。剪枝策略就是训练策略,即稀疏化训练的方式,本发明方法与现有技术方法不同的是在稀疏化训练时,所选用的损失函数不同,带来不同的剪枝效果,选用l1loss=p(i,n)*||gamma||,从数学上来讲,这部分作用可以稀疏gamma值,因此获得稀疏化训练模型;而训练数据集采用公开数据集cifar10,batch大小选为32,学习率设定为1e-5,采用sgd+momentum训练方式,训练200epoch。优选的是,本发明方法采用模型压缩裁剪策略,去掉不必要的通道,将网络的每一层的通道数减少,从而达到网络瘦身的目的,获得高效的结果。训练模型剪枝后,在测试集上测试的网络精度(网络分类的正确率),相比较初始网络(未剪枝)的精度,下降2%时停止剪枝过程,例如对于10000图片的测试集,原始大网络的正确率是91%,如若剪枝后的网络正确率不足89%,则停止剪枝过程,并保存网络的参数以及结构,最终获得高效的剪枝模型。进一步的,对本方法中采用的技术效果加以验证说明,本实施例选择的规整剪枝策略方法和传统一般策略模型压缩方法进行对比测试,以科学论证的手段对比试验结果,以验证本方法所具有的真实效果。传统的一般策略模型压缩方法,在网络压缩时并不规整,对硬件运算设备并不友好,由于网络参数是统一压缩处理,所以导致网络压缩不均,会造成部分中间层压缩消失,很难提高压缩率。为验证本发明方法相对传统方法具有较高压缩率及更高效的运算效率。本实施例选择的规整剪枝策略和采用传统的一般策略模型压缩方法进行测试对比。结果如下表所示:表1:精确度对比表。layerindex传统的一般策略本发明方法的规整剪枝策略1534726464312812541281285256251625625572502478222254929830210226273112422761238231913384330143713181537934516213318精确度91.32%91.86%由表可得,在同样的实验条件下,本发明方法的规整剪枝策略更高效,且每一层的网络通道数变化较为平缓,通常可以用mac来表征网络的效率,公式如下:mac=hw*(c1+c2)+c1*c2当且仅当c1=c2时,mac取最小值,即网络层与层之间的通道数变化越小越好,因此可以验证,本发明方法更为高效,且对于精确度也有所提高。实施例2参照图5,为本发明的第二个实施例,该实施例不同于第一个实施例的是,提供了一种卷积神经网络模型的剪枝装置,包括输入模块100可以处理多维数据,通过输入模块100内的归一单元101,可在参数值输入卷积神经网络模型前,对通道输入数据归一化,即使输入数据为像素,也可将原始像素归一化;连接模块200包括传递单元201和组合单元202,通过组合单元202对提取的特征进行非线性组合获取传输信号,并由传递单元201向该系统内结构组织进行信号的传递交接;处理模块300与输入模块100、连接模块200相连,当获取输入参数数据后,通过计算体301快速检测相关输入特征,并利用传递单元201将传输信号传递给输入模块100。其中所述处理模块300包括稀疏化训练模块302和剪枝模块303,所述稀疏化训练模块302用于待剪枝的卷积神经网络模型的稀疏化训练,所述剪枝模块303用于所述卷积神经网络模型的剪枝操作,本实施例中稀疏化训练模块302和剪枝模块303为通过程序嵌入和集成方式构成的剪枝芯片,与计算体301硬件连接,实现卷积神经网络模型的剪枝操作。优选的是,卷积层参数包括卷积核大小、步长和填充,三者共同决定了输出特征条件,卷积核大小可以指定为小于输入模块100内的输入数据任意值,卷积核越大,可以提取的输入特征越复杂。计算体301接收传递的特征信息会对其进行特征选择和信息过滤,将特征的结果替换为统计量。应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。如在本申请所使用的,术语“组件”、“模块”、“系统”等等旨在指代计算机相关实体,该计算机相关实体可以是硬件、固件、硬件和软件的结合、软件或者运行中的软件。例如,组件可以是,但不限于是:在处理器上运行的处理、处理器、对象、可执行文件、执行中的线程、程序和/或计算机。作为示例,在计算设备上运行的应用和该计算设备都可以是组件。一个或多个组件可以存在于执行中的过程和/或线程中,并且组件可以位于一个计算机中以及/或者分布在两个或更多个计算机之间。此外,这些组件能够从在其上具有各种数据结构的各种计算机可读介质中执行。这些组件可以通过诸如根据具有一个或多个数据分组(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式通过诸如互联网之类的网络与其它系统进行交互)的信号,以本地和/或远程过程的方式进行通信。应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1