CN115374926A - 神经网络的剪枝方法、装置、电子设备及存储介质 - Google Patents

神经网络的剪枝方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115374926A
CN115374926A CN202110537566.8A CN202110537566A CN115374926A CN 115374926 A CN115374926 A CN 115374926A CN 202110537566 A CN202110537566 A CN 202110537566A CN 115374926 A CN115374926 A CN 115374926A
Authority
CN
China
Prior art keywords
pruned
layer
neural network
loss function
pruning
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
Application number
CN202110537566.8A
Other languages
English (en)
Inventor
赵娟萍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202110537566.8A priority Critical patent/CN115374926A/zh
Publication of CN115374926A publication Critical patent/CN115374926A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Feedback Control In General (AREA)

Abstract

本申请公开了一种神经网络的剪枝方法、装置、电子设备及存储介质,该方法包括:计算第一损失函数值,第一损失函数值为待剪枝神经网络的损失函数值;获取待剪枝神经网络的被剪枝层的层数n;计算n层被剪枝层所对应的n个第二损失函数值,第二损失函数值为待剪枝神经网络剪去对应一层被剪枝层的权重所得到的损失函数值;基于第一损失函数值和n个第二损失函数值,确定被剪枝层的各层的实际剪枝比例;基于实际剪枝比例对待剪枝神经网络进行剪枝得到目标神经网络。本申请针对神经网络中每层的不同特性、对网络表达能力的不同影响,来确定每层被剪枝层的实际剪枝比例,确保了神经网络在网络剪枝过程中的稳定性和可靠性。

Description

神经网络的剪枝方法、装置、电子设备及存储介质
技术领域
本申请涉及人工智能技术领域,尤其涉及一种神经网络的剪枝方法、装置、电子设备及存储介质。
背景技术
以卷积神经网络(Convolutional Neural Networks,CNN)、循环神经网络(Recurrent Neural Network,RNN)等为代表的深度学习(Deep Learning,DL)算法在机器视觉、自然语言处理、自动驾驶、机器人等领域中得到了广泛的应用,然而其复杂的结构在推理时带来了巨大的功耗和计算资源(CPU、内存、存储空间等)占用,对计算能力和内存要求很高,从而严重限制了此类技术在功耗和资源受限的移动和嵌入式平台上的部署。
为了推进基于深度学习产品的应用,一种做法是对神经网络模型进行简化来减少其对计算能力和内存的需求,例如剪枝(Pruning)。其中,网络剪枝方法(Network Pruning)直接去除整个卷积核,无需特定的软件和硬件设计即可实现加速,能够在不明显影响网络预测准确率的前提下降低网络的参数量和计算量,因此得到大量的关注。但目前的网络剪枝过程中,难以准确挖掘出权重和网络输出之间的关系,剪枝过程也会受到大量无关因素的干扰,从而影响了剪枝结果的稳定性和可靠性。因此,如何提高剪枝结果的稳定性和可靠性成为亟待解决的技术问题。
发明内容
本申请实施例提供一种神经网络的剪枝方法、装置、电子设备及存储介质,确保了神经网络在网络剪枝过程中的稳定性和可靠性。
第一方面,本申请实施例提供一种神经网络的剪枝方法,所述方法包括:
计算第一损失函数值,所述第一损失函数值为待剪枝神经网络的损失函数值,所述待剪枝神经网络为已收敛的神经网络;
获取所述待剪枝神经网络的被剪枝层的层数n,所述n为正整数;
计算n层所述被剪枝层所对应的n个第二损失函数值,所述第二损失函数值为所述待剪枝神经网络剪去对应一层所述被剪枝层的权重所得到的损失函数值;
基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例;
基于所述实际剪枝比例对所述待剪枝神经网络进行剪枝,得到目标神经网络。
第二方面,本申请实施例提供一种神经网络的剪枝装置,应用于电子设备,所述装置包括:
计算单元,用于计算第一损失函数值,所述第一损失函数值为待剪枝神经网络的损失函数值,所述待剪枝神经网络为已收敛的神经网络;
获取单元,用于获取所述待剪枝神经网络的被剪枝层的层数n,所述n为正整数;
所述计算单元,还用于计算n层所述被剪枝层所对应的n个第二损失函数值,所述第二损失函数值为所述待剪枝神经网络剪去对应一层所述被剪枝层的权重所得到的损失函数值;
确定单元,用于基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例;
剪枝单元,用于基于所述实际剪枝比例对所述待剪枝神经网络进行剪枝,得到目标神经网络。
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面任一方法中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,在本申请实施例中,通过计算第一损失函数值,第一损失函数值为待剪枝神经网络的损失函数值,所述待剪枝神经网络为已收敛的神经网络;获取待剪枝神经网络的被剪枝层的层数n;计算n层被剪枝层所对应的n个第二损失函数值,第二损失函数值为待剪枝神经网络剪去对应一层被剪枝层的权重所得到的损失函数值;基于第一损失函数值和n个第二损失函数值,确定被剪枝层的各层的实际剪枝比例;基于实际剪枝比例对待剪枝神经网络进行剪枝,得到目标神经网络。本申请针对神经网络中每层的不同特性、对网络表达能力的不同影响,来确定每层被剪枝层的实际剪枝比例,确保了神经网络在网络剪枝过程中的稳定性和可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的神经网络剪枝方法的应用场景;
图2是本申请实施例提供的一种神经网络的剪枝方法的流程示意图;
图3a是本申请实施例提供的一种计算n个第二损失函数值的流程示意图;
图3b是本申请实施例提供的另一种计算n个第二损失函数值的流程示意图;
图4是本申请实施例提供的一种确定实际剪枝比例的流程示意图;
图5a是本申请实施例提供的另一种确定实际剪枝比例的流程示意图;
图5b是本申请实施例提供的另一种确定实际剪枝比例的流程示意图;
图6是本申请实施例提供的一种神经网络的剪枝装置的示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的相关术语和概念进行介绍。
1)电子设备可以是还包含其它功能诸如个人数字助理和/或音乐播放器功能的便携式电子设备,诸如手机、平板电脑、具备无线通讯功能的可穿戴电子设备(如智能手表)等。便携式电子设备的示例性实施例包括但不限于搭载IOS系统、Android系统、Microsoft系统或者其它操作系统的便携式电子设备。上述便携式电子设备也可以是其它便携式电子设备,诸如膝上型计算机(Laptop)等。还应当理解的是,在其他一些实施例中,上述电子设备也可以不是便携式电子设备,而是台式计算机。
2)损失函数:在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objectivefunction),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
3)反向传播算法:卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。
4)神经网络剪枝:确保较小性能损失的前提下,将复杂神经网络模型中多余的结构信息或参数信息进行删除,以降低计算开销。目前主流的网络剪枝大多依据神经元的重要性,通过提出一种判断神经元是否重要的度量标准,进而按照该度量标准判断各个神经元是否重要,以将不重要的神经元去除。示例性地,判断神经元是否重要的度量标准为神经元的权重,若某一神经元的权重接近于0,则确定该神经元不重要,进而将该神经元去除。
本申请实施例可以应用于以下应用场景,包括但不限于:部署到电子设备上的基于神经网络模型的处理系统、用于大规模计算机视觉应用(例如图像分类、目标检测和视频分析等功能)、用于语音信号处理、自然语言处理、推荐系统或者其他由于有限资源和时延要求需要对神经网络模型进行压缩去除冗余的操作算子(例如用于卷积运算的卷积核或者用于全连接操作的全连接算子)的情况。本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
请参阅图1,图1为本申请实施例提供的神经网络剪枝方法的应用场景。如图1所示,电子设备在步骤S110获取待剪枝神经网络模型,具体为可以获取待剪枝神经网络模型的初始模型参数。初始模型参数包括待剪枝神经网络模型的各级层的权重,例如卷积层的初始卷积核、池化层和全连接层等其它常见构筑,还可以包括待剪枝神经网络模型的内部架构等。待剪枝神经网络模型可以是基于深度学习的算法模型,可以用于大规模计算机视觉应用,例如用来实现图像分类、目标检测和视频分析等功能,还可以用来实现筛选推荐内容、自然语言处理和语音信号分析等功能。然后在步骤S120,对在步骤S110获得的待剪枝神经网络模型进行剪枝,例如去除不重要的或者冗余的权重,又或者例如去除不重要的全连接层或者其中的部分全连接操作。
应当理解的是,待剪枝神经网络模型可以理解成包含成多层结构,例如一个或多个卷积层,一个或多个全连接层,以及其他可能的构筑。其中,卷积层和全连接层还有其它类似的结构可以称之为待剪枝神经网络模型的操作层,而操作层上有相应的操作算子来完成对应的运算操作。例如卷积层上有卷积核来完成卷积操作,或者例如全连接层上有全连接算子来完成全连接操作,或者例如其它构筑提供像是线性叠加之类的运算操作。下面以操作层为卷积层,操作算子为卷积核以及运算操作为卷积操作为例。下面的实施例以卷积神经网络模型的卷积层的卷积核为例子,但是应当理解成可以适用于其他操作方式和其它架构的神经网络模型。
根据下面本申请实施例详细叙述的神经网络的剪枝流程,步骤S120的剪枝过程针对神经网络中每层的不同特性、对网络表达能力的不同影响,来确定每层的实际剪枝比例,尽量减少无关因素对剪枝过程的干扰,从而在大幅简化待剪枝神经网络模型的同时还保留了网络预测准确率,并且提高了剪枝结果的稳定性和可靠性。进一步地,步骤S130将剪枝后的神经网络模型部署到电子设备上。电子设备可以是移动电话、可穿戴设备或者其它需要在本地处理深度学习相关的任务且受限于本地有限的资源的设备。例如,待剪枝神经网络模型是用于实现目标检测的模型,则可以对该待剪枝神经网络模型进行剪枝后部署到用于目标检测的安防摄像头等设备上,从而利用简化的神经网络模型占用较少的计算能力和内存,也有利于节省能耗和缩短时延。
在一些示例性实施例中,在步骤S120和步骤S130之间,还可能增加一个步骤,对剪枝后的神经网络模型进行再次训练,从而微调模型参数以便进一步提高网络性能,例如通过重新训练来微调各卷积层的卷积核的权重系数。
请参阅图2,图2是本申请实施例提供的一种神经网络的剪枝方法的流程示意图,应用于电子设备,如图2所示,本神经网络的剪枝方法包括以下操作。
S210、计算第一损失函数值,所述第一损失函数值为待剪枝神经网络的损失函数值,所述待剪枝神经网络为已收敛的神经网络。
其中,待剪枝神经网络是指完成训练和学习过程,并且已经训练至收敛或达到最大迭代次数的深度神经网络。这些完成训练和学习过程的深度神经网络可能参数较多、结构较为复杂等,需要占用电子设备较多的计算资源和存储资源,因而需要精简网络结果和网络参数,这就需要电子设备获取这些深度神经网络并对其进行一系列的处理。
本申请实施例对电子设备获取已训练完成的神经网络的方式不作限定。可选地,已训练完成的神经网络由电子设备从其它设备处拉取;或者,已训练完成的神经网络位于电子设备的本地存储空间中,电子设备直接从本地存储空间中拉取已训练完成的神经网络即可。例如,该已训练完成的神经网络由该电子设备训练和学习,在完成训练和学习过程后,电子设备直接将该已训练完成的神经网络存储在本地存储空间中;又例如,该已训练完成的神经网络由电子设备从其它设备处拉取并存储在本地存储空间中,电子设备可以从训练和学习该已训练完成的神经网络的设备中拉取至少一个完成训练的深度神经网络,然后将其存储在本地存储空间中,以便于后续对这些深度神经网络进行处理。示例性地,电子设备从其它设备处拉取的神经网络时,需要判断该神经网络是否已经收敛,若已经收敛了则执行步骤S210;若未收敛则使用训练数据对其进行训练直至收敛或达到最大步数限制。
可选的,上述待剪枝神经网络可以是浮点模型(参数为浮点数的模型),也可以是任意位宽(例如16-bit、12-bit、11-bit、10-bit、8-bit、7-bit、4-bit等)的定点模型、整数模型或二值化模型。
本申请实施例对计算第一损失函数值的方式不作限定。可选的,电子设备可以采用LogLoss对数损失函数(如逻辑回归损失函数、交叉熵损失函数等)、平方损失函数(如最小二乘法损失函数)、指数损失函数、Hinge损失函数或其他损失函数等来计算待剪枝神经网络的第一损失函数值。
S220、获取所述待剪枝神经网络的被剪枝层的层数n,所述n为正整数。
其中,待剪枝神经网络模型包含成多层结构,例如一个或多个卷积层,一个或多个全连接层,以及其他可能的构筑。每层中有对应的权重参数,例如每个卷积层可各自包含一个或多个卷积核,每个卷积核也有各自的权重系数。在本申请中,考虑DNN中每层的不同特性,以及对网络表达能力的不同影响,通过计算每一被剪枝层的实际剪枝比例来对待剪枝神经网络进行剪枝,从而可在同等全局剪枝比例设定下取得更为合理的稀疏NN结构,提升精度。
进一步地,该被剪枝层数可以小于或等于待剪枝神经网络的总层数。在获取被剪枝层数时,电子设备可以根据预设规则从待剪枝神经网络选择出可被剪枝的层数,该预设规则可以是设计人员预先设置的,例如,根据经验法则避免对1×1卷积层进行剪枝,因此可预先设置1×1卷积层不能是可被剪枝的层。又例如,为避免一些权重的剪枝影响待剪枝神经网络的运行,可预先设置权重的数量大于阈值的层可被选择为可被剪枝的层。
S230、计算n层所述被剪枝层所对应的n个第二损失函数值,所述第二损失函数值为所述待剪枝神经网络剪去对应一层所述被剪枝层的权重所得到的损失函数值。
本申请实施例在剪枝策略中引入敏感度分析(Sensitivity Analysis,SA),该SA是指研究数学模型或系统(数值或其他)输出中的不确定性如何在其输入中被分配到不同的不确定性来源,对于DL领域的剪枝而言,本申请通过对每个(组)权重的剪枝在最终稀疏神经网络的精度损失中的贡献大小来确定每个(组)权重的敏感度,剪枝后造成精度损失越大的权重(组)敏感度越高,其剪枝比例需要相应地减小,而敏感度较低的权重(组)则可适当提高剪枝比例,最终在全局满足压缩率要求确定整个神经网络的剪枝策略。这种较为精耕细作的方法,相比传统上全局统一比例或依赖经验建模的剪枝,能更加精准地识别不重要的权重(组),提高稀疏神经网络稳定性和可靠性。
具体地,本申请计算n层所述被剪枝层所对应的n个第二损失函数值,通过第二损失函数值来体现每层被剪枝层中被剪枝的权重的重要性和敏感性。
在一可能的示例中,如图3a所示,上述S230,计算n层所述被剪枝层所对应的n个第二损失函数值,具体包括以下步骤:
S310、构建所述临时神经网络,所述临时神经网络与所述待剪枝神经网络的构架与权重参数均相同;
S311、按照第一预设剪枝比例剪去所述临时神经网络中第i个被剪枝层中的权重,所述i为正整数;
S312、计算所述第i个被剪枝层所对应的所述第二损失函数值;
S313、令i=i+1,并重复执行上述步骤,直至i=n。
其中,电子设备在内存中创建与被剪枝层数相同数量的临时神经网络,该临时神经网络是待剪枝神经网络的副本,即临时神经网络的架构和权重参数与待剪枝神经网络的架构和权重参数均相同。然后遍历每个临时神经网络,分别以第一预设剪枝比例剪去每个临时神经网络中对应可剪枝层中的权重,再将全部或部分训练数据集输入到剪枝了对应可剪枝层权重的每个临时神经网络中,得到输出结果,根据输出结果计算此时每个临时神经网络的损失函数,即第二损失函数值。最后将每个临时神经网络的第一损失函数值与待剪枝神经网络的第一损失函数值分别进行比较,从而计算出每个被剪枝层的实际剪枝比例。
示例性地,电子设备在内存中创建n个临时神经网络,然后按照第一预设剪枝比例剪去第一个临时神经网络中第一个被剪枝层中的权重,第一个临时神经网络中其他所有层的权重均保持不变;按照第一预设剪枝比例剪去第二个临时神经网络中第二个被剪枝层的权重,第二个临时神经网络中其他所有层的权重均保持不变;按照第一预设剪枝比例剪去第三个临时神经网络中第三个被剪枝层中的权重,第三个临时神经网络中其他所有层的权重均保持不变,依次下去,直至按照第一预设剪枝比例剪去第n个临时神经网络中第n个被剪枝层中的权重,第n个临时神经网络中其他所有层均保持不变。之后将全部或部分训练数据集分别输入待该n个临时神经网络中进行运算,分别得到每个临时神经网络的输出结果,根据该每个临时神经网络的输出结果计算出每个临时神经网络的第二损失函数值。
在另一可能的示例中,如图3b所示,上述S230,所述计算n层所述被剪枝层所对应的n个第二损失函数值,具体包括以下步骤:
S320、按照第一预设剪枝比例剪去所述待剪枝神经网络中第i个被剪枝层中的权重;
S321、计算所述第i个被剪枝层所对应的所述第二损失函数值;
S322、恢复所述待剪枝神经网络中所述第i个被剪枝层中被剪枝的权重;
S323、令i=i+1,并重复执行上述步骤,直至i=n。
在本申请实施例中,为节省储存n个临时神经网络的内存,电子设备可以采用循环的方式。其中每个循环开头电子设备只对待剪枝神经网络中的其中一层被剪枝层进行剪枝,待剪枝神经网络中其他层均保持不变,完成第一损失函数值的运算后再将被剪枝过后的待剪枝神经网络恢复成初始的待剪枝神经网络,并进入下一循环,从而电子设备无需预先创建n个临时神经网络,节省了内存。
具体地,电子设备以第一预设剪枝比例剪去待剪枝神经网络中第i个可剪枝层中的权重,再将全部或部分训练数据集输入到剪枝了第i个可剪枝层权重的待剪枝神经网络中,得到输出结果,根据输出结果计算此时待剪枝神经网络的损失函数,即第二损失函数值。然后将剪枝了第i个被剪枝层权重的待剪枝神经网络的第二损失函数值与待剪枝神经网络的第一损失函数值分别进行比较,从而计算出第i个被剪枝层的实际剪枝比例。之后电子设备再将剪枝了第i个被剪枝层权重的待剪枝神经网络恢复成初始的待剪枝神经网络,即将剪枝了第i个被剪枝层权重的待剪枝神经网络中第i个被剪枝层的权重恢复,再以第一预设剪枝比例剪去待剪枝神经网络中第i+1层可剪枝层中的权重,进而计算出第i+1层被剪枝层的实际剪枝比例。依照此方法循环往复,直至计算出第n层被剪枝层的实际剪枝比例。
示例性地,电子设备首先按照第一预设剪枝比例剪去待剪枝神经网络中第一个被剪枝层中的权重,待剪枝神经网络中其他所有层的权重均保持不变,然后计算出剪枝了第一个被剪枝层中权重的待剪枝神经网络的损失函数值,根据该损失函数值计算出第一个被剪枝层的实际剪枝比例。之后再将剪枝了第一个被剪枝层中权重的待剪枝神经网络恢复成初始的待剪枝神经网络,再按照第一预设剪枝比例剪去待剪枝神经网络中第二个被剪枝层的权重,待剪枝神经网络中其他所有层的权重均保持不变,然后计算出剪枝了第二个被剪枝层中权重的待剪枝神经网络的损失函数值,根据该损失函数值计算出第二个被剪枝层的实际剪枝比例,依次下去,直至按照第一预设剪枝比例得到每层被剪枝层的实际剪枝比例。
S240、基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例。
可选的,所述基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,包括:
分别计算每一所述第二损失函数值与所述第一损失函数值的第一差值;基于所述第一差值确定对应被剪枝层的目标敏感度值;基于所述敏感度值与剪枝比例之间的映射关系、以及全局压缩率,确定每层被剪枝层的所述目标敏感度值对应的实际剪枝比例。
在本申请中,通过电子设备将第一损失函数值和每个第二损失函数值进行比较,通过第二损失函数值与第一损失函数值之间的差值来表现待剪枝神经网络中被剪枝层的敏感度。其中第一差值与敏感度值呈正相关,在第二损失函数值大于第一损失函数值时,电子设备将n个第一差值分别转换成被剪枝层的敏感度值。其中第一差值越大其敏感度值越大,该敏感度值越大则其对应的被剪枝层越敏感。进一步地,被剪枝层越敏感,则表示该被剪枝层中的权重越重要,因此该被剪枝层中的实际剪枝比例可能越小。在第二损失函数值小于或等于第一损失函数值,则表示剪枝后的临时神经网络与待剪枝神经网络之间变化不大,该临时神经网络中被剪枝掉的权重对其影响不大,因此该被剪枝层中的实际剪枝比例可能越大。
其中,本申请中的敏感度值的取值为(0,1)之间的浮点数,即敏感度值为连续值,其可以实现更加精细的实现剪枝率控制,对当前网络结构、当前数据集、当前训练任务的适配度更强,利于提升剪枝的压缩效果和精度表现。
具体地,所述全局压缩率为待剪枝神经网络中总的实际剪枝比例。电子设备可预先存储敏感度值和剪枝比例之间的映射关系,从而电子设备可基于各层被剪枝层的敏感度值与实际剪枝比例之间的负相关关系,以及各层被剪枝层的实际剪枝比例之和满足全局压缩率的关系,计算出各层被剪枝层的实际剪枝比例。例如,假设待剪枝神经网络包括4层被剪枝层,全局压缩率为20%,通过计算得到第一层被剪枝层的敏感度值为0.3、第二层被剪枝层的敏感度值为0.5、第三层被剪枝层的敏感度值为0.1、第四层被剪枝层的敏感度值为0.6,因此可得第一层被剪枝层、第二层被剪枝层、第三层被剪枝层和第四层被剪枝层实际剪枝比例分别为4%、1.33%、6.67%、8%。
在本申请中,每层被剪枝层的敏感度值的计算是基于大量训练数据的真实推理表现,而非按经验法则使用梯度、范数等近似,可最大化地削弱剪枝对待剪枝神经网络表达能力的负面影响,降低剪枝策略不稳定的概率,从而提高了神经网络剪枝的精度。
可选的,如图4所示,上述S240,所述基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,具体包括以下步骤:
S401、计算第j损失函数值与第一损失函数值的第二差值,所述第j损失函数值为第i个被剪枝层所对应的损失函数值,j为大于1的正整数;
S402、根据所述第二差值,调整所述第i个被剪枝层的剪枝比例;
S403、令j=j+1,并重复执行上述步骤,直至达到第一预设条件,得到所述第i个被剪枝层的实际剪枝比例;
S404、令i=i+1,并重复执行上述步骤,直至i=n;其中,当j=2时,所述第j损失函数值为所述第二损失函数值。
其中,在计算每层被剪枝层的实际剪枝比例时,电子设备可以通过循环迭代直接计算出每层被剪枝层的实际剪枝比例,从而可以节省计算出敏感度之后再将其转换为剪枝比例的运算量。具体为在计算出第二损失函数值后,电子设备将第一损失函数值和每个第二损失函数值进行比较,计算出第二损失函数值与第一损失函数值之间的差值,即第二差值。然后将第二差值反向传播回到临时神经网络或待剪枝神经网络的初始剪枝策略,得到下一迭代的被剪枝层的剪枝比例。其中第一差值越大,表示剪枝后的临时神经网络或剪枝后的待剪枝神经网络与初始的待剪枝神经网络之间变化越大,该临时神经网络中被剪枝掉的权重对其影响越大,进而该被剪枝层中的权重越重要,因此该被剪枝层中的实际剪枝比例可能越小;反之,则表示该被剪枝层中的权重越不重要,因此该被剪枝层中的实际剪枝比例可能越大。之后将临时神经网络或待剪枝神经网络中第i个被剪枝层的剪枝比例更新为下一迭代的第i个被剪枝层的剪枝比例,再全部或部分训练数据集分别输入待该n个临时神经网络中进行前向运算,得到输出结果,再根据输出结果计算第二损失函数值。进而计算出第二差值,根据第二差值得到下一迭代的被剪枝层的剪枝比例,如此循环往复,直至第i个被剪枝层的剪枝比例收敛。
需要说明的是,本申请中计算第二损失函数值的方式与计算第一损失函数值的方式相同,例如,电子设备可以采用LogLoss对数损失函数(如逻辑回归损失函数、交叉熵损失函数等)、平方损失函数(如最小二乘法损失函数)、指数损失函数、Hinge损失函数或其他损失函数等来第二损失函数值。
本申请实施例基于逐层计算敏感度的剪枝方法,充分利用待剪枝神经网络已经具备的表达能力,并且根据第一损失函数值和每层进行初始剪枝的得到的第二损失函数来计算每层被剪枝层的实际剪枝比例,提高了剪枝精度,更具备实际指导意义。
在本申请实施例中,电子设备可以一次性执行剪去所有符合不重要条件的权重,也可以通过多次迭代,每次使用较小的全局剪枝比例剪去符合不重要条件的权重,直至总体剪枝比例达标,完成剪枝。
在一种可能的示例中,如图5a所示,所述基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,具体包括以下步骤:
S501、构建n个临时神经网络,所述临时神经网络与所述待剪枝神经网络的构架与权重参数均相同,所述n为所述被剪枝层的层数;
S502、按照第k预设剪枝比例剪去第i个临时神经网络中第i个被剪枝层中的权重,所述i和k均为正整数;
S503、计算第二损失函数值,所述第二损失函数为第i个临时神经网络剪去第i个所述被剪枝层的权重所得到的损失函数值;
S504、基于所述第二损失函数值和所述第一损失函数值,计算所述第i个被剪枝层的所述中间剪枝比例;
S505、令i=i+1,并重复执行上述步骤,直至i=n,得到每层被剪枝层的所述中间剪枝比例;
S506、令k=k+1,并重复执行上述步骤,直至满足第二预设条件,得到每层被剪枝层的多个所述中间剪枝比例;
S507、将每层被剪枝层的多个所述中间剪枝比例分别进行累加,得到所述被剪枝层的各层的实际剪枝比例。
在本申请中,第k预设剪枝比例、第k+1预设剪枝比例、第k+2预设剪枝比例等的和需要等于待剪枝神经网络的总体剪枝比例。因此第二预设条件为k等于总体剪枝比例-公差为1的(k-1)等差数列之和。
具体地,电子设备可预先设置待剪枝神经网络的总体剪枝比例,即全局压缩率。然后将总体剪枝比例分成多个预设剪枝比例,根据该多个预设剪枝比例依次对n个临时神经网络中的对应层被剪枝层进行权重剪枝,并通过运算得到每层被剪枝层实际剪枝比例。其中该多个预设剪枝比例可以是多个相等的预设剪枝比例,也可以是多个互不相等的预设剪枝比例,本申请实施例对此不做限定。
示例性地,在待剪枝神经网络的全局压缩率为20%时,电子设备可以先以6%的预设剪枝比例剪去每个临时神经网络中对应可剪枝层中的权重,再将全部或部分训练数据集输入到剪枝了对应可剪枝层权重的每个临时神经网络中,得到输出结果,根据输出结果计算此时每个临时神经网络的损失函数,即第二损失函数值。将每个临时神经网络的第一损失函数值与待剪枝神经网络的第一损失函数值分别进行比较,从而计算出每个被剪枝层的中间剪枝比例。之后按照每层被剪枝层的中间剪枝比例分别对n个临时神经网络进行剪枝,然后电子设备再以10%的预设剪枝比例剪去每个临时神经网络中对应可剪枝层中的权重,再根据上述方法计算出每个被剪枝层的中间剪枝比例,并按照每层被剪枝层的中间剪枝比例分别对n个临时神经网络进行剪枝,然后电子设备再以4%的预设剪枝比例剪去每个临时神经网络中对应可剪枝层中的权重,再根据上述方法计算出每个被剪枝层的中间剪枝比例,由于预设的剪枝比例之和达到了全局压缩率,因此将被剪枝层的多个中间剪枝比例之和作为最后的该被剪枝层的实际剪枝比例。
在一种可能的示例中,如图5b所示,所述基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,具体包括以下步骤:
S510、按照第k预设剪枝比例剪去所述待剪枝神经网络中第i个被剪枝层中的权重;
S511、计算第二损失函数值,所述第二损失函数值为所述待剪枝神经网络剪去第i个被剪枝层的权重后的损失函数值;
S512、基于所述第二损失函数值和所述第一损失函数值,计算所述第i个被剪枝层的中间剪枝比例;
S513、恢复所述待剪枝神经网络中所述第i个被剪枝层中被剪枝的权重;
S514、令i=i+1,并重复执行上述步骤,直至i=n,得到每层被剪枝层的所述中间剪枝比例;
S515、令k=k+1,并重复执行上述步骤,直至满足第二预设条件,得到每层被剪枝层的多个所述中间剪枝比例;
S516、将每层被剪枝层的多个所述中间剪枝比例分别进行累加,得到所述被剪枝层的各层的实际剪枝比例。
其中,,该中间剪枝比例为待剪枝神经网络中的每层剪枝层按照第k预设剪枝比例剪去权重后得到的剪枝比例。例如,在待剪枝神经网络的全局压缩率为20%时,电子设备可以先以6%的预设剪枝比例剪去待剪枝神经网络中第i个可剪枝层中的权重,再将全部或部分训练数据集输入到剪枝了第i个可剪枝层权重的待剪枝神经网络中,得到输出结果,根据输出结果计算此时待剪枝神经网络的损失函数,即第二损失函数值。然后将剪枝了第i个被剪枝层权重的待剪枝神经网络的第二损失函数值与待剪枝神经网络的第一损失函数值分别进行比较,从而计算出第i个被剪枝层的中间剪枝比例。之后电子设备再将剪枝了第i个被剪枝层权重的待剪枝神经网络恢复成初始的待剪枝神经网络,即将剪枝了第i个被剪枝层权重的待剪枝神经网络中第i个被剪枝层的权重恢复,再以6%的预设剪枝比例剪去待剪枝神经网络中第i+1层可剪枝层中的权重,进而计算出第i+1层被剪枝层的中间剪枝比例。依照此方法循环往复,直至计算出第n层被剪枝层的中间剪枝比例。然后电子设备按照每层被剪枝层的中间剪枝比例对待剪枝神经网络进行剪枝,然后电子设备再以10%的预设剪枝比例剪去待剪枝神经网络中第i个可剪枝层中的权重,再根据上述方法计算出每个被剪枝层的中间剪枝比例,并按照每个被剪枝层的中间剪枝比例对待剪枝神经网络进行剪枝,然后电子设备再以4%的预设剪枝比例剪去待剪枝神经网络中第i个可剪枝层中的权重,再根据上述方法计算出每层被剪枝层的中间剪枝比例,由于预设的剪枝比例之和达到了全局压缩率,因此将被剪枝层的多个中间剪枝比例之和作为最后的该被剪枝层的实际剪枝比例。
其中,基于第一损失函数值和第二损失函数值,计算第i个被剪枝层的所述实际剪枝比例的具体实现方式可参照上述实现方式,在此不再赘述。
在本申请实施例中,通过在初始剪枝比例(第一预设剪枝比例、第k预设剪枝比例、第k+1预设剪枝比例、第k+2预设剪枝比例等)的基础上对各层被剪枝层的剪枝比例进行微调得到实际剪枝比例,可以减少实际剪枝比例的运算量,提高待剪枝神经网络的剪枝效率。
S250、基于所述实际剪枝比例对所述待剪枝神经网络进行剪枝,得到目标神经网络。
在本申请中,电子设备在确定了待剪枝神经网络中每个可剪枝层数的实际剪枝比例后,可以按照该实际剪枝比例剪去可剪枝层数中的权重(组),以实现对待剪枝神经网络的网络剪枝,得到剪枝后的目标神经网络。
其中,剪枝最小单位可以是单个权重(通称非结构化剪枝(unstructuredpruning)),也可以是更加结构化的一组权重(如权重条、滤波器、特征图等)(通称结构化剪枝(structured pruning)),甚至可以同时结合多种不同粒度的剪枝(通称异质剪枝(heterogeneous pruning))。
进一步地,按照实际剪枝比例对每层可剪枝层进行权重剪枝,可以是将被剪枝的权重置为零,以普通密集(dense)矩阵格式存储,也可以是将剪枝后的权重矩阵用稀疏(sparse)格式进行压缩存储,并在运算时使用相应优化的稀疏算子。
其中,本申请中的剪枝无需修改神经网络模型的定义和训练过程,可以以较低的开发成本取得较好的剪枝效果,且能避免因训练过程变化导致与待剪枝神经网络无法对齐的可能,提高了神经网络的剪枝精度,且节省资源和开发精力。
可选的,所述方法还包括:对所述目标神经网络进行训练迭代,直至达到训练条件,所述训练条件为所述目标神经网络的损失函数值满足第一预设条件和/或迭代次数满足预设次数。
在本申请实施例中,在得到目标神经网络后,为了避免权重剪枝后得到的目标神经网络相较于待剪枝神经网络的处理效果受到影响,电子设备可对目标神经网络进行训练,使得训练后的目标神经网络满足用户的需求。
示例性地,在对目标神经网络进行训练之前,电子设备可将目标神经网络中一个或多个可剪枝层中被剪枝的权重恢复,也可以将目标神经网络的权重设置成待剪枝神经网络第i次剪枝后的权重,还可以将目标神经网络的全部权重初始化,本申请实施例对此不做限定。
其中,电子设备可以采用计算第一损失函数、第二损失函数或第三损失函数的计算方法来计算目标神经网络的损失函数,也可以根据其他计算方式来计算目标神经网络的损失函数本申请实施例对此不做限定。
示例性地,为了降低精度损失,目标神经网络的损失函数可以使用目标神经网络与待剪枝神经网络和/或其他神经网络之间的表达能力的误差来表示,该表达能力的误差可由输出层和/或中间层算出。
需要说明的是,在目标神经网络满足用户要求时,可不需要对其再进行训练,例如,因为对待剪枝神经网络的剪枝或待剪枝神经网络的权重的选取导致生成的目标神经网络的损失函数值可达到精度要求,则可不需要在对目标神经网络进行训练。
可以看出,本申请实施例提供的神经网络剪枝方法,计算第一损失函数值,第一损失函数值为待剪枝神经网络的损失函数值;获取待剪枝神经网络的被剪枝层的层数n;计算n层被剪枝层所对应的n个第二损失函数值,第二损失函数值为待剪枝神经网络剪去对应一层被剪枝层的权重所得到的损失函数值;基于第一损失函数值和n个第二损失函数值,确定被剪枝层的各层的实际剪枝比例;基于实际剪枝比例对待剪枝神经网络进行剪枝得到目标神经网络。本申请针对神经网络中每层的不同特性、对网络表达能力的不同影响,来确定每层被剪枝层的实际剪枝比例,确保了神经网络在网络剪枝过程中的稳定性和可靠性。
可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图6示出了神经网络的剪枝装置的示意图,如图6所示,该神经网络的剪枝装置600应用于电子设备,该神经网络的剪枝装置600可以包括:计算单元610、获取单元620、确定单元630和剪枝单元640。
其中,计算单元610可以用于支持电子设备执行上述S210和S230等,和/或用于本文所描述的技术的其他过程。
获取单元620可以用于支持电子设备执行上述S220等,和/或用于本文所描述的技术的其他过程。
确定单元630可以用于支持电子设备执行上述S240等,和/或用于本文所描述的技术的其他过程。
剪枝单元640可以用于支持电子设备执行上述S250,和/或用于本文所描述的技术的其他过程。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的电子设备,用于执行上述神经网络的剪枝方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,电子设备可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对电子设备的动作进行控制管理,例如,可以用于支持电子设备执行上述计算单元610、获取单元620、确定单元630和剪枝单元640执行的步骤。存储模块可以用于支持电子设备执行存储程序代码和数据等。通信模块,可以用于支持电子设备与其他设备的通信。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi-Fi芯片等与其他电子设备交互的设备。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的神经网络的剪枝方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的神经网络的剪枝方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的神经网络的剪枝方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (15)

1.一种神经网络的剪枝方法,其特征在于,所述方法包括:
计算第一损失函数值,所述第一损失函数值为待剪枝神经网络的损失函数值,所述待剪枝神经网络为已收敛的神经网络;
获取所述待剪枝神经网络的被剪枝层的层数n,所述n为正整数;
计算n层所述被剪枝层所对应的n个第二损失函数值,所述第二损失函数值为所述待剪枝神经网络剪去对应一层所述被剪枝层的权重所得到的损失函数值;
基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例;
基于所述实际剪枝比例对所述待剪枝神经网络进行剪枝,得到目标神经网络。
2.根据权利要求1所述的方法,其特征在于,所述计算n层所述被剪枝层所对应的n个第二损失函数值,包括:
构建临时神经网络,所述临时神经网络与所述待剪枝神经网络的构架与权重参数均相同;
按照第一预设剪枝比例剪去所述临时神经网络中第i个被剪枝层中的权重,所述i为正整数;
计算所述第i个被剪枝层所对应的所述第二损失函数值;
令i=i+1,并重复执行上述步骤,直至i=n。
3.根据权利要求1所述的方法,其特征在于,所述计算n层所述被剪枝层所对应的n个第二损失函数值,包括:
按照第一预设剪枝比例剪去所述待剪枝神经网络中第i个被剪枝层中的权重;
计算所述第i个被剪枝层所对应的所述第二损失函数值;
恢复所述待剪枝神经网络中所述第i个被剪枝层中被剪枝的权重;
令i=i+1,并重复执行上述步骤,直至i=n。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,包括:
分别计算每一所述第二损失函数值与所述第一损失函数值的第一差值;
基于所述第一差值确定对应被剪枝层的目标敏感度值;
基于所述敏感度值与剪枝比例之间的映射关系、以及全局压缩率,确定每层被剪枝层的所述目标敏感度值对应的实际剪枝比例。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,包括:
计算第j损失函数值与第一损失函数值的第二差值,所述第j损失函数值为第i个被剪枝层所对应的损失函数值,j为大于1的正整数;
根据所述第二差值,调整所述第i个被剪枝层的剪枝比例;
令j=j+1,并重复执行上述步骤,直至达到第一预设条件,得到所述第i个被剪枝层的实际剪枝比例;
令i=i+1,并重复执行上述步骤,直至i=n;
其中,当j=2时,所述第j损失函数值为所述第二损失函数值。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
对所述目标神经网络进行训练迭代,直至达到训练条件,所述训练条件为所述目标神经网络的损失函数值满足第一预设条件和/或迭代次数满足预设次数。
7.根据权利要求1所述的方法,其特征在于,所述计算n层所述被剪枝层所对应的n个第二损失函数值,基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,包括:
构建n个临时神经网络;
按照第k预设剪枝比例剪去第i个临时神经网络中第i个被剪枝层中的权重,所述i和k均为正整数;
计算第二损失函数值,所述第二损失函数为第i个临时神经网络剪去第i个所述被剪枝层的权重所得到的损失函数值;
基于所述第二损失函数值和所述第一损失函数值,计算所述第i个被剪枝层的中间剪枝比例;
令i=i+1,并重复执行上述步骤,直至i=n,得到每层被剪枝层的所述中间剪枝比例;
令k=k+1,并重复执行上述步骤,直至满足第二预设条件,得到每层被剪枝层的多个所述中间剪枝比例;
将每层被剪枝层的多个所述中间剪枝比例分别进行累加,得到所述被剪枝层的各层的实际剪枝比例。
8.根据权利要求1所述的方法,其特征在于,所述计算n层所述被剪枝层所对应的n个第二损失函数值,基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例,包括:
按照第k预设剪枝比例剪去所述待剪枝神经网络中第i个被剪枝层中的权重;
计算第二损失函数值,所述第二损失函数值为所述待剪枝神经网络剪去第i个被剪枝层的权重后的损失函数值;
基于所述第二损失函数值和所述第一损失函数值,计算所述第i个被剪枝层的中间剪枝比例;
恢复所述待剪枝神经网络中所述第i个被剪枝层中被剪枝的权重;
令i=i+1,并重复执行上述步骤,直至i=n,得到每层被剪枝层的所述中间剪枝比例;
令k=k+1,并重复执行上述步骤,直至满足第二预设条件,得到每层被剪枝层的多个所述中间剪枝比例;
将每层被剪枝层的多个所述中间剪枝比例分别进行累加,得到所述被剪枝层的各层的实际剪枝比例。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述待剪枝神经网络模型为浮点模型、整数模型、二值化模型、定点模型中的任一种。
10.根据权利要求9所述的方法,其特征在于,所述剪枝的最小单位为单个权重和/或一组权重。
11.根据权利要求1所述的方法,其特征在于,所述基于所述实际剪枝比例对所述待剪枝神经网络进行剪枝,得到目标神经网络,包括:
按照实际剪枝比例将待剪枝神经网络中每层被剪枝层中的被剪枝权重置零,得到所述目标神经网络。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:使用密集格式的矩阵存储所述被剪枝权重,或使用稀疏格式的矩阵压缩存储所述被剪枝权重。
13.一种神经网络的剪枝装置,其特征在于,所述装置包括:
计算单元,用于计算第一损失函数值,所述第一损失函数值为待剪枝神经网络的损失函数值,所述待剪枝神经网络为已收敛的神经网络;
获取单元,用于获取所述待剪枝神经网络的被剪枝层的层数n,所述n为正整数;
所述计算单元,还用于计算n层所述被剪枝层所对应的n个第二损失函数值,所述第二损失函数值为所述待剪枝神经网络剪去对应一层所述被剪枝层的权重所得到的损失函数值;
确定单元,用于基于所述第一损失函数值和所述n个第二损失函数值,确定所述被剪枝层的各层的实际剪枝比例;
剪枝单元,用于基于所述实际剪枝比例对所述待剪枝神经网络进行剪枝,得到目标神经网络。
14.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-12任一项所述的方法中的步骤的指令。
15.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-12任一项所述的方法。
CN202110537566.8A 2021-05-17 2021-05-17 神经网络的剪枝方法、装置、电子设备及存储介质 Pending CN115374926A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110537566.8A CN115374926A (zh) 2021-05-17 2021-05-17 神经网络的剪枝方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110537566.8A CN115374926A (zh) 2021-05-17 2021-05-17 神经网络的剪枝方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115374926A true CN115374926A (zh) 2022-11-22

Family

ID=84058640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110537566.8A Pending CN115374926A (zh) 2021-05-17 2021-05-17 神经网络的剪枝方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115374926A (zh)

Similar Documents

Publication Publication Date Title
US11593658B2 (en) Processing method and device
JP7366274B2 (ja) ニューラル・ネットワークのための適応的探索方法および装置
US20220147877A1 (en) System and method for automatic building of learning machines using learning machines
CN113469340A (zh) 一种模型处理方法、联邦学习方法及相关设备
CN113505883A (zh) 一种神经网络训练方法以及装置
CN111428854A (zh) 一种结构搜索方法及结构搜索装置
CN113238989A (zh) 将数据进行量化的设备、方法及计算机可读存储介质
CN116502692A (zh) 一种模型的训练方法、光伏发电功率的预测方法及设备
CN116090536A (zh) 神经网络的优化方法、装置、计算机设备及存储介质
CN115017178A (zh) 数据到文本生成模型的训练方法和装置
CN115222046A (zh) 神经网络结构搜索方法、装置、电子设备及存储介质
CN113238987B (zh) 量化数据的统计量化器、存储装置、处理装置及板卡
CN116796821A (zh) 面向3d目标检测算法的高效神经网络架构搜索方法及装置
CN115374926A (zh) 神经网络的剪枝方法、装置、电子设备及存储介质
CN116502745A (zh) 电力负荷预测方法、系统、电子设备以及存储介质
CN116306879A (zh) 数据处理方法、装置、电子设备以及存储介质
CN113157453B (zh) 一种基于任务复杂度的高能效目标检测任务动态调度方法
CN114970822A (zh) 一种神经网络模型量化方法、系统、设备及计算机介质
CN113238988A (zh) 优化深度神经网络的参数的处理系统、集成电路及板卡
CN113238975A (zh) 优化深度神经网络的参数的内存、集成电路及板卡
CN113238976A (zh) 缓存控制器、集成电路装置及板卡
CN115934661B (zh) 一种图神经网络压缩方法、装置、电子设备及存储介质
CN115238873B (zh) 神经网络模型部署方法、装置、计算机设备
CN110826704B (zh) 一种用于防止神经网络过拟合的处理装置及系统
CN117952174A (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