本公开属于信息处理技术领域,具体涉及一种神经网络压缩方法、装置、电子设备和存储介质。
背景技术:
神经网络已经成为人工智能的核心技术,然而随着深度学习技术的不断发展,网络结构越复杂,模型参数越来越多,导致模型运行时需要的存储、计算资源大量增加。以经典的resnet-152模型为例,它有6020万参数、超过230mb的储存需求和计算每一张图片所需要的浮点数乘法时间。对于资源受限的手机、fpga等智能硬件设备,对神经网络模型进行压缩与推理加速显得尤为重要。
神经网络剪枝是一种常用的神经网络模型压缩方法,但现有的神经网络剪枝方法很难在高压缩比和模型性能上取得平衡。现有的权重剪枝方法可以减少存储的权重的数量,进而减少所需要的存储空间,但不利于加快推理速度和减少网络模型的内存占用;滤波器硬剪枝由于一次性裁剪了卷积过程中多个滤波器,很难保证模型性能;滤波器软剪枝方法在滤波器剪枝后的重训练过程中允许对被剪枝滤波器进行更新,但并没有充分利用重训练之前的剪枝信息。
技术实现要素:
本公开旨在至少解决现有技术中存在的技术问题之一,提供一种神经网络压缩方法、装置、电子设备和存储介质。
本公开的一个方面提供一种神经网络压缩方法,所述方法包括:
步骤a:获取待压缩的神经网络;
步骤b:分别获取所述神经网络中多个结构化参数的重要度;
步骤c:根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数;
步骤d:对裁剪后的所述神经网络进行训练,以更新裁剪后的所述神经网络的结构化参数;
步骤e:重复执行步骤b至d,直至所述待压缩的神经网络中被裁剪掉的所述结构化参数的数量符合预设的目标裁剪数量或所述待压缩的神经网络中被裁剪后剩余的所述结构化参数的数量符合预设的模型参数数量。
可选的,所述预设的第一裁剪比例小于等于50%,或所述预设的第一裁剪数量小于等于所述待压缩的神经网络中结构化参数总数的50%。
可选的,在所述分别获取所述神经网络中多个结构化参数的重要度后,还包括:
对所述多个结构化参数的重要度进行排序;
所述根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数,包括:
若所述多个结构化参数的重要度由高至低排序,则根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度排序靠后的结构化参数;
若所述多个结构化参数的重要度由低至高排序,则根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度排序靠前的结构化参数。
可选的,所述分别获取所述神经网络中多个结构化参数的重要度,包括:
根据所述神经网络中每个结构化参数的l2范数和/或几何中值,得到所述每个结构化参数的重要度。
可选的,所述根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数,包括:
根据所述预设的第一裁剪比例和所述待压缩的神经网络中结构化参数的总数,得到第二裁剪数量,使用硬剪枝的裁剪方法裁剪掉所述神经网络中第二裁剪数量的结构化参数;或,
使用硬剪枝的裁剪方法裁剪掉所述神经网络中所述第一裁剪数量的结构化参数。
可选的,在所述重复执行步骤b至d,直至所述待压缩的神经网络中被裁剪掉的所述结构化参数的数量符合预设的目标裁剪数量或所述待压缩的神经网络中被裁剪后剩余的所述结构化参数的数量符合预设的模型参数数量前,还包括:
记录执行裁剪的次数;
将所述执行裁剪的次数与预设的目标裁剪次数进行比较,若所述执行裁剪的次数大于所述目标裁剪次数,则使用预设的第二裁剪比例替换步骤b中的所述第一裁剪比例或使用预设的第三裁剪数量替换步骤b中的所述第一裁剪数量,所述第二裁剪比例大于所述第一裁剪比例,所述第三裁剪数量大于所述第一裁剪数量。
可选的,所述结构化参数包括滤波器和通道。
本公开的另一个方面,提供一种神经网络压缩装置,所述装置包括:
神经网络获取模块,用于获取待压缩的神经网络;
重要度获取模块,用于分别获取所述神经网络中多个结构化参数的重要度;
裁剪模块,用于根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数;
更新模块,用于对裁剪后的所述神经网络进行训练,以更新裁剪后的所述神经网络的结构化参数。
本公开的另一个方面,提供一种电子设备,包括:
一个或多个处理器;
存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据前文阐述的压缩方法。
本公开的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现根据前文阐述的压缩方法。
本公开实施例的一种神经网络压缩方法、装置、电子设备和存储介质中,在剪枝的过程中,每次只裁剪数量较少的、满足预设的第一裁剪比例或预设的第一裁剪数量的结构化参数,再通过多次裁剪来完成对神经网络的剪枝,使用这种裁剪方法可以实现渐进式的剪枝过程,减小了一次性剪枝对神经网络模型性能的影响,分多次逐渐减去对模型进行剪枝,一定程度上保证了神经网络模型的性能,克服了滤波器硬剪枝由于直接一次性裁剪了卷积过程中多个滤波器而难以保证模型性能的问题;此外,每次剪枝之后均对神经网络模型进行重新训练,以保证多次剪枝依次进行的过程中,后续剪枝可以充分利用前面剪枝过程的信息,弥补了渐进软剪枝无法充分利用重训练之前的剪枝信息的不足,进一步提高了剪枝后神经网络模型的性能;最后,可根据实际使用情况自适应的预设第一裁剪比例或第一裁剪数量,从而控制剪枝的速度和对性能稳定性的保证,提高了剪枝过程的可控制性,因此,本实施例中的一种神经网络压缩方法,可在有效减小模型尺寸、降低模型推理内存占用、加快速度的基础上,有效保证剪枝后的神经网络模型的性能,同时具有较好的剪枝可操控性。
附图说明
图1为用于实现根据本公开一实施例的一种神经网络压缩方法和装置的示例电子设备的示意性框图;
图2为本公开另一实施例的一种神经网络压缩方法的流程示意图;
图3为本公开另一实施例的一种神经网络压缩装置的结构示意框图。
具体实施方式
为使本领域技术人员更好地理解本公开的技术方案,下面结合附图和具体实施方式对本公开作进一步详细描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外具体说明,本公开中使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“包括”或者“包含”等既不限定所提及的形状、数字、步骤、动作、操作、构件、原件和/或它们的组,也不排除出现或加入一个或多个其他不同的形状、数字、步骤、动作、操作、构件、原件和/或它们的组,或加入这些。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量与顺序。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在发明的一些描述中,除非另有明确的规定和限定,术语“安装”、“连接”、“相连”或者“固定”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是通过中间媒体间接连接,可以是两个元件内部的连通或者两个元件的互相作用关系。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对设置、数字表达式和数值不限制本公开的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的,对于相关领域普通技术人员已知的技术,方法和设备可能不作详细讨论,但在适当情况下,所示技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体的其他示例可以具有不同的值。应注意到:相似的符号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进一步讨论。
在更加详细地讨论之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
首先,参照图1来描述用于实现本公开实施例的一种领域词库构建方法和装置的示例电子设备。
如图1所示,电子设备200包括一个或多个处理器210、一个或多个存储装置220、输入装置230、输出装置240等,这些组件通过总线系统和/或其他形式的连接机构250互连。应当注意,图1所示的电子设备的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
所述处理器210可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制所述电子设备中的其他组件以执行期望的功能。
所述存储装置220可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现下文所述的本公开实施例中(由处理器实现)的客户端功能以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如,所述应用程序使用和/或产生的各种数据等。
所述输入装置230可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
所述输出装置240可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
示例性地,用于实现根据本公开实施例的一种领域词库构建方法和装置的示例电子设备可以被实现为诸如智能手机、平板电脑。
下面,将参考图2描述根据本公开实施例的一种神经网络压缩方法,包括:
步骤a:获取待压缩的神经网络。
具体地,神经网络为神经网络模型,可根据实际使用需求构建和预训练待压缩的神经网络模型,示例性的,神经网络包括卷积神经网络,本领域技术人员可根据实际的使用需求选择不同的神经网络模型以及选择不同的预训练方法,本实施例中不进行具体限制。
步骤b:分别获取神经网络中多个结构化参数的重要度。
具体地,按预设的重要度获取方法获取神经网络中每个结构化参数的重要度,示例性的,预设的重要度获取方法包括l2范数获取方法、gm(geometricmedian)获取方法,或者多种获取方法结合的综合性重要度获取方法,本领域技术人员可根据实际使用情况设置重要度获取方法,本实施例中不进行具体限制,示例性的,结构化参数包括滤波器、通道等,例如,若结构化参数为滤波器,则本实施例裁剪结构化参数则为裁剪滤波器。
步骤c:根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度低的结构化参数。
具体地,本步骤中通过裁剪掉对神经网络较为不重要的结构化参数来实现对神经网络的压缩,本领域技术人员可根据实际使用需求设置第一裁剪比例或第一裁剪数量,本实施例中不进行具体限制;重要度低指的是符合裁剪条件的重要度,例如,当第一裁剪数量设置为2时,重要度低指的是重要度排序中的后两位,或者,当第一裁剪比例设置为3%,待压缩的神经网络的结构化参数的总数为100时,每次需裁剪的结构化参数数量为3,此时,重要度低指的是重要度排序中的后三位。
步骤d:对裁剪后的神经网络进行训练,以更新裁剪后的神经网络的结构化参数。
具体地,本步骤中对裁剪后的神经网络进行重训练,以修复裁剪后的神经网络的精度,示例性的,本步骤中的训练方法可与步骤a中预训练的方法相同,也可以使用不同的训练方法,本领域技术人员可根据实际使用情况选择训练方法,本实施例中不进行具体限制。
步骤e:重复依次执行步骤b至d,直至待压缩的神经网络中被裁剪掉的结构化参数的数量符合预设的目标裁剪数量或待压缩的神经网络中被裁剪后剩余的结构化参数的数量符合预设的模型参数数量。
具体地,在本步骤中,通过重复执行步骤b至d以实现对待压缩的神经网络的多次剪枝,直至剪去的结构化参数符合预设的条件为止,示例性的,预设的目标裁剪数量可为待压缩的神经网络中结构化参数总数的2/3,预设的模型参数数量可为待压缩的神经网络中结构化参数总数的1/3,本领域技术人员可根据实际使用情况设置目标裁剪数量和模型参数数量的具体数值,本实施例中不进行具体限制。
本实施例的一种神经网络压缩方法,在剪枝的过程中,每次只裁剪数量较少的结构化参数,再通过多次裁剪来完成对神经网络的剪枝,使用这种裁剪方法可以实现渐进式的剪枝过程,减小了一次性剪枝对神经网络模型性能的影响,分多次逐渐减去对模型进行剪枝,一定程度上保证了神经网络模型的性能,克服了滤波器硬剪枝由于直接一次性裁剪了卷积过程中多个滤波器而难以保证模型性能的问题;此外,每次剪枝之后均对神经网络模型进行重新训练,以保证多次剪枝依次进行的过程中,后续剪枝可以充分利用前面剪枝过程的信息,弥补了渐进软剪枝无法充分利用重训练之前的剪枝信息的不足,进一步提高了剪枝后神经网络模型的性能;最后,可根据实际使用情况自适应的预设第一裁剪比例或第一裁剪数量,从而控制剪枝的速度和对性能稳定性的保证,提高了剪枝过程的可控制性,因此,本实施例中的一种神经网络压缩方法,可在有效减小模型尺寸、降低模型推理内存占用、加快速度的基础上,有效保证剪枝后的神经网络模型的性能,同时具有较好的剪枝可操控性。
下面将进一步阐述神经网络压缩方法的具体方法。
示例性的,预设的第一裁剪比例小于等于50%,或预设的第一裁剪数量小于等于待压缩的神经网络中结构化参数总数的50%,也就是说,保证通过多次裁剪来完成对待压缩的神经网络中结构化参数的裁剪,示例性的,第一裁剪比例和第一裁剪数量均设置为较小值,以保证渐进式剪枝的平滑度,预设的第一裁剪比例小于等于5%,例如选择2%,或预设的第一裁剪数量小于等于5,例如选择2,从而可通过更多次的裁剪完成剪枝过程,提高了渐进式剪枝过程的平滑程度,进一步保证了裁剪后的神经网络的性能。
示例性的,在分别获取神经网络中多个结构化参数的重要度后,还包括:
b1:对多个结构化参数的重要度进行排序。
具体地,本领域技术人员可选择不同的排序方法或排序方式对结构化参数的重要度进行排序,以使得在后续裁剪过程中,更方便的找到重要度低的结构化参数。
示例性的,在此基础上,步骤c,也就是根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度低的结构化参数,具体为:
c1:若多个结构化参数的重要度由高至低排序,则根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度排序靠后的结构化参数。
c2:若多个结构化参数的重要度由低至高排序,则根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度排序靠前的结构化参数。
也就是说,步骤b中先对多个结构化参数的重要度进行排序,步骤c中再对排序后的重要度进行识别,从而更快速地找到重要度低的结构化参数,提高裁剪效率。
示例性的,步骤b中分别获取神经网络中多个结构化参数的重要度,具体包括:根据神经网络中每个结构化参数的l2范数和/或几何中值,得到每个结构化参数的重要度。示例性的,在步骤b中,可将每个结构化参数的l2范数作为该结构化参数的重要度,也可以将每个结构化参数的几何中值(geometricmedian)作为该结构化参数的重要度,也可以将每个结构化参数的l2范数和几何中值按预设的不同权重进行加权,将加权结果作为该结构化参数的重要度,本领域技术人员可根据实际的使用情况选择l2范数和几何中值不同的加权权值,也可根据实际使用情况选择不同的重要度获取方法,本实施例中不进行具体限制。
示例性的,步骤c中根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度低的结构化参数,具体包括:若使用第一裁剪比例决定每次裁剪结构化参数的数量,则根据预设的第一裁剪比例和待压缩的神经网络中结构化参数的总数,得到第二裁剪数量,再使用硬剪枝的裁剪方法裁剪掉神经网络中第二裁剪数量的结构化参数;若使用第一裁剪数量决定每次裁剪结构化参数的数量,则直接使用硬剪枝的裁剪方法裁剪掉神经网络中第一裁剪数量的结构化参数,示例性的,本实施例中在确定了每次需要裁剪的结构化参数的数量后,使用硬剪枝的方法对实现每次对结构化参数的裁剪,将其直接置0,通过硬剪枝的方式提高裁剪效率。
示例性的,步骤e前,也就是在重复执行步骤b至d,直至待压缩的神经网络中被裁剪掉的结构化参数的数量符合预设的目标裁剪数量或待压缩的神经网络中被裁剪后剩余的结构化参数的数量符合预设的模型参数数量前,还包括:
f1:记录执行裁剪的次数。
具体地,在执行压缩之前将执行裁剪的次数初始化为0,每执行一次裁剪则对执行裁剪的次数进行加1处理。
f2:将执行裁剪的次数与预设的目标裁剪次数进行比较,若执行裁剪的次数大于目标裁剪次数,则使用预设的第二裁剪比例替换步骤b中的第一裁剪比例或使用预设的第三裁剪数量替换步骤b中的第一裁剪数量,第二裁剪比例大于第一裁剪比例,第三裁剪数量大于第一裁剪数量。
具体地,在本步骤中,当发现压缩速度太慢,也就是压缩次数较大但是却仍未完成压缩工作,则通过提高每次裁剪的结构化参数的数量来提高压缩速度,也就是使用更大的第二裁剪比例代替原来的较小的第一裁剪比例,或者使用更大的第三裁剪数量代替原来的较小的第一裁剪数量,本领就技术人员可根据实际使用情况设置第二裁剪比例或第三裁剪数量,示例性的,第二裁剪比例比第一裁剪比例增加一倍,或者第三裁剪数量比第一裁剪数量增加一倍,例如,第一裁剪比例是3%,则第二裁剪比例为6%,第一裁剪数量为2,则第三裁剪数量为4,本领域技术人员可根据实际的使用需求设置目标裁剪次数,例如30次、50次,本实施例中不进行具体限制。
需要说明的是,步骤f1和f2可设置在步骤e前步骤a后的任意位置,例如设置在步骤b后、步骤c后或步骤d后,若步骤f1和步骤f2设置在步骤a后步骤b前,则在步骤e中需要重复依次执行步骤f1、f2、b、c和d,以保证每次裁剪过程中均对执行裁剪的次数进行记录。
本实施例的一种神经网络压缩方法,首先,通过预设一个较小的第一裁剪比例和第一裁剪数量,来保证渐进式剪枝的平滑度,其次,在裁剪之前先对多个结构化参数的重要度进行排序,从而提高后续查找重要度低的结构化参数并进行裁剪的效率,再次,通过结构化参数的l2范数和/或几何中值来得到结构化参数的重要度,提高重要度获取的精确性和适应性,最后,在执行裁剪的次数过高、压缩过慢时,通过提高每次裁剪的结构化参数的数量来提高压缩速度,提高压缩效率,且可以自适应的调节提高后的每次对结构化参数的裁剪数量,提高了剪枝过程的可控制性,以保证裁剪后神经网络模型性质的基础上,提高压缩速度。
下面,将参考图3描述本公开另一实施例的一种神经网络压缩装置100,该装置包括:
神经网络获取模块110,用于获取待压缩的神经网络。
重要度获取模块120,用于分别获取神经网络中多个结构化参数的重要度,示例性的,和使用l2范数获取方法、gm(geometricmedian)获取方法等方法获取结构化参数的重要度。
裁剪模块130,用于根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度低的结构化参数。
更新模块140,用于对裁剪后的神经网络进行训练,以更新裁剪后的神经网络的结构化参数。
示例性的,压缩装置100还包括:
判断模块150,用于判断待压缩的神经网络中被裁剪掉的结构化参数的数量是否符合预设的目标裁剪数量,或者,待压缩的神经网络中被裁剪后剩余的结构化参数的数量是否符合预设的模型参数数量。
示例性的,更新模块140完成对裁剪后的神经网络的结构化参数的更新后,判断模块150判断待压缩的神经网络中被裁剪掉的结构化参数的数量是否符合预设的目标裁剪数量,或者,待压缩的神经网络中被裁剪后剩余的结构化参数的数量是否符合预设的模型参数数量,若压缩的神经网络中被裁剪掉的结构化参数的数量符合预设的目标裁剪数量,或者,待压缩的神经网络中被裁剪后剩余的结构化参数的数量符合预设的模型参数数量,则完成对神经网络的剪枝,否则,重要度获取模块120再次分别获取更新后的神经网络中多个结构化参数的重要度,之后,裁剪模块130再次根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉更新后的神经网络中重要度低的结构化参数,实现二次裁剪,之后,更新模块140对二次裁剪后的神经网络进行训练,再次更新裁剪后的神经网络的结构化参数,判断模块150再次进行判断,若符合条件则停止对神经网络的剪枝,否则则继续重复执行上述过程,直至判断模块判断符合停止剪枝的条件为止。
本公开实施例的一种神经网络压缩装置,在剪枝的过程中,每次只裁剪数量较少的结构化参数,再通过多次裁剪来完成对神经网络的剪枝,使用这种裁剪方法可以实现渐进式的剪枝过程,减小了一次性剪枝对神经网络模型性能的影响,分多次逐渐减去对模型进行剪枝,一定程度上保证了神经网络模型的性能,克服了滤波器硬剪枝由于直接一次性裁剪了卷积过程中多个滤波器而难以保证模型性能的问题;此外,每次剪枝之后均对神经网络模型进行重新训练,以保证多次剪枝依次进行的过程中,后续剪枝可以充分利用前面剪枝过程的信息,弥补了渐进软剪枝无法充分利用重训练之前的剪枝信息的不足,进一步提高了剪枝后神经网络模型的性能;最后,可根据实际使用情况自适应的预设第一裁剪比例或第一裁剪数量,从而控制剪枝的速度和对性能稳定性的保证,提高了剪枝过程的可控制性,因此,本实施例中的一种神经网络压缩方法,可在有效减小模型尺寸、降低模型推理内存占用、加快速度的基础上,有效保证剪枝后的神经网络模型的性能,同时具有较好的剪枝可操控性。
示例性的,重要度获取模块120中还包括:
排序子模块121,用于对多个结构化参数的重要度进行排序。
示例性的,裁剪模块130中还包括:
后端裁剪子模块,用于在多个结构化参数的重要度由高至低排序时,根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度排序靠后的结构化参数;
前端裁剪子模块,用于在多个结构化参数的重要度由低至高排序时,根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉神经网络中重要度排序靠前的结构化参数。
本公开实施例的一种神经网络压缩装置,在裁剪之前先对多个结构化参数的重要度进行排序,从而提高后续查找重要度低的结构化参数并进行裁剪的效率。
其中,计算机可读介质可以是本公开的装置、设备、系统中所包含的,也可以是单独存在。
其中,计算机可读存储介质可是任何包含或存储程序的有形介质,其可以是电、磁、光、电磁、红外线、半导体的系统、装置、设备,更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、光纤、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件,或它们任意合适的组合。
其中,计算机可读存储介质也可包括在基带中或作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码,其具体的例子包括但不限于电磁信号、光信号,或它们任意合适的组合。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
可以理解的是,以上实施方式仅仅是为了说明本公开的原理而采用的示例性实施方式,然而本公开并不局限于此。对于本领域内的普通技术人员而言,在不脱离本公开的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本公开的保护范围。
1.一种神经网络压缩方法,其特征在于,所述方法包括:
步骤a:获取待压缩的神经网络;
步骤b:分别获取所述神经网络中多个结构化参数的重要度;
步骤c:根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数;
步骤d:对裁剪后的所述神经网络进行训练,以更新裁剪后的所述神经网络的结构化参数;
步骤e:重复执行步骤b至d,直至所述待压缩的神经网络中被裁剪掉的所述结构化参数的数量符合预设的目标裁剪数量或所述待压缩的神经网络中被裁剪后剩余的所述结构化参数的数量符合预设的模型参数数量。
2.根据权利要求1所述的压缩方法,其特征在于,所述预设的第一裁剪比例小于等于50%,或所述预设的第一裁剪数量小于等于所述待压缩的神经网络中结构化参数总数的50%。
3.根据权利要求1所述的压缩方法,其特征在于,在所述分别获取所述神经网络中多个结构化参数的重要度后,还包括:
对所述多个结构化参数的重要度进行排序;
所述根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数,包括:
若所述多个结构化参数的重要度由高至低排序,则根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度排序靠后的结构化参数;
若所述多个结构化参数的重要度由低至高排序,则根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度排序靠前的结构化参数。
4.根据权利要求1所述的压缩方法,其特征在于,所述分别获取所述神经网络中多个结构化参数的重要度,包括:
根据所述神经网络中每个结构化参数的l2范数和/或几何中值,得到所述每个结构化参数的重要度。
5.根据权利要求1所述的压缩方法,其特征在于,所述根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数,包括:
根据所述预设的第一裁剪比例和所述待压缩的神经网络中结构化参数的总数,得到第二裁剪数量,使用硬剪枝的裁剪方法裁剪掉所述神经网络中第二裁剪数量的结构化参数;或,
使用硬剪枝的裁剪方法裁剪掉所述神经网络中所述第一裁剪数量的结构化参数。
6.根据权利要求1至5中任意一项所述的压缩方法,其特征在于,在所述重复执行步骤b至d,直至所述待压缩的神经网络中被裁剪掉的所述结构化参数的数量符合预设的目标裁剪数量或所述待压缩的神经网络中被裁剪后剩余的所述结构化参数的数量符合预设的模型参数数量前,还包括:
记录执行裁剪的次数;
将所述执行裁剪的次数与预设的目标裁剪次数进行比较,若所述执行裁剪的次数大于所述目标裁剪次数,则使用预设的第二裁剪比例替换步骤b中的所述第一裁剪比例或使用预设的第三裁剪数量替换步骤b中的所述第一裁剪数量,所述第二裁剪比例大于所述第一裁剪比例,所述第三裁剪数量大于所述第一裁剪数量。
7.根据权利要求1至5中任意一项所述的压缩方法,其特征在于,所述结构化参数包括滤波器和通道。
8.一种神经网络压缩装置,其特征在于,所述装置包括:
神经网络获取模块,用于获取待压缩的神经网络;
重要度获取模块,用于分别获取所述神经网络中多个结构化参数的重要度;
裁剪模块,用于根据预设的第一裁剪比例或预设的第一裁剪数量裁剪掉所述神经网络中重要度低的结构化参数;
更新模块,用于对裁剪后的所述神经网络进行训练,以更新裁剪后的所述神经网络的结构化参数。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据权利要求1至7中任意一项所述的压缩方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,
所述计算机程序被处理器执行时能实现根据权利要求1至7中任意一项所述的压缩方法。
技术总结