CN117709399A - 一种神经网络模型处理、推理方法及相关设备 - Google Patents

一种神经网络模型处理、推理方法及相关设备 Download PDF

Info

Publication number
CN117709399A
CN117709399A CN202211064818.0A CN202211064818A CN117709399A CN 117709399 A CN117709399 A CN 117709399A CN 202211064818 A CN202211064818 A CN 202211064818A CN 117709399 A CN117709399 A CN 117709399A
Authority
CN
China
Prior art keywords
convolution
pruning
unstructured
model
electronic device
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
CN202211064818.0A
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.)
Honor Device Co Ltd
Original Assignee
Honor Device Co 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211064818.0A priority Critical patent/CN117709399A/zh
Publication of CN117709399A publication Critical patent/CN117709399A/zh
Pending legal-status Critical Current

Links

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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供了一种神经网络模型处理、推理方法及相关设备。根据该神经网络模型处理方法,电子设备在对原始模型进行结构化剪枝之前,可以首先对待结构化剪枝的卷积层进行若干次非结构化剪枝,直到原始模型中进行非结构化剪枝后的卷积层的稀疏度达到目标稀疏度,再对非结构化剪枝后的模型进行结构化剪枝。电子设备可以重复执行该非结构化剪枝和结构化剪枝过程,直到原始模型中进行结构化剪枝后的卷积层的已修剪的卷积核数量达到预先设置的卷积核数量。通过上述方法可以得到简化后的模型,使用该模型时的网络推理速度得以提升,并且由于非结构化剪枝和结构化剪枝均分为若干次进行,避免了一次完成剪枝造成的模型效果回退,保证了模型效果不受影响。

Description

一种神经网络模型处理、推理方法及相关设备
技术领域
本申请涉及人工智能领域,尤其涉及一种神经网络模型处理、推理方法及相关设备。
背景技术
神经网络由于包括大规模并行处理,分布式存储,弹性拓扑,高度冗余和非线性运算等特点,因而具有很髙的运算速度、很强的联想能力、很强的适应性、很强的容错能力和自组织能力。这些特点和能力构成了神经网络模拟智能活动的技术基础,并在广阔的领域获得了重要的应用。例如,在通信领域,神经网络可以用于数据压缩、图像处理、矢量编码、差错控制(纠错和检错编码)、自适应信号处理、自适应均衡、信号检测、模式识别、ATM流量控制、路由选择、通信网优化和智能网管理等等。
理论上来说,神经网络模型越深,非线性程度也就越大,模拟智能活动的能力越强。但是训练成本和模型大小也会相应增加。并且,在部署模型时,大模型需要的推理时间更长,还需要更好的硬件支持。但随着神经网络模型的广泛应用,很多场景下需要将模型部署在手机、IoT设备等终端上。在这种情况下,部署环境受到能耗和设备体积的限制,端侧硬件的计算能力和存储能力相对较弱。
因此,如何对神经网络模型进行处理以缩短网络推理时间和降低计算消耗是目前亟待解决的问题。
发明内容
本申请提供了一种神经网络模型处理、推理方法及相关设备。根据该神经网络模型处理方法,电子设备在对原始模型进行结构化剪枝之前,可以首先对待结构化剪枝的卷积层进行若干次非结构化剪枝,直到原始模型中进行非结构化剪枝后的卷积层的稀疏度达到目标稀疏度。这样,电子设备可以再针对非结构化剪枝后的模型进行结构化剪枝。可理解,电子设备可以重复执行上述非结构化剪枝和结构化剪枝过程,直到原始模型中进行结构化剪枝后的卷积层中已修剪的卷积核数量达到预先设置的卷积核数量。通过上述方法可以对原始模型进行压缩,得到简化后的模型,使用该简化后的模型时的网络推理速度得以提升,并且由于非结构化剪枝和结构化剪枝可以分为若干次进行,避免了一次完成剪枝所造成的模型效果回退,保证了模型效果不受影响。
第一方面,本申请提供了一种神经网络模型处理方法。该方法可以包括:电子设备可以确定原始模型中的第一卷积层和第一卷积核数,并基于第一卷积核数,对第一卷积层进行若干次结构化剪枝。第一卷积层可以包括k个卷积层。第一卷积核数可以包括k个卷积层分别对应待修剪的卷积核数。其中,电子设备针对若干次结构化剪枝中的第n次结构化剪枝,可以包括:电子设备可以确定进行第n次结构化剪枝的m个卷积层和第二卷积核数,并对m个卷积层进行若干次非结构化剪枝,得到第二卷积层,还可以基于第二卷积核数,对第二卷积层中的卷积核进行修剪,得到第n次结构化剪枝后的模型。其中,k、n、m为正整数,m小于或等于k,m个卷积层为k个卷积层中的卷积层。第二卷积核数可以包括针对第n次结构化剪枝m个卷积层分别对应待修剪的卷积核数。第n次结构化剪枝之后,m个卷积层已修剪的卷积核数分别不大于第一卷积核数中m个卷积层对应待修剪的卷积核数。第二卷积层的稀疏度达到目标稀疏度。稀疏度为卷积层中值为0的参数数量占卷积层中所有参数数量的比例。
在本申请提供的方案中,电子设备可以在进行结构化剪枝之前,进行若干次非结构化剪枝。通过这种方式,电子设备可以更准确的确定重要性更小的卷积核,并去除这些卷积核,既压缩了模型,提升了使用该模型时的推理速度,又不会因去除重要性大的卷积核而太过影响模型效果。
在本申请的一些实施例中,电子设备可以在进行该若干次结构化剪枝中的部分结构化剪枝之前,对待结构化剪枝的卷积层进行若干次非结构化剪枝。例如,电子设备总共进行5次结构化剪枝,则电子设备可以在进行其中3次结构化剪枝之前对该3次结构化剪枝的卷积层先进行若干次非结构化剪枝。
在本申请的一些实施例中,电子设备可以在进行每一次结构化剪枝之前,都对待结构化剪枝的卷积层进行若干次非结构化剪枝。
结合第一方面,在一种可能的实现方式中,电子设备对m个卷积层进行若干次非结构化剪枝,得到第二卷积层,具体可以包括:电子设备可以确定目标稀疏度和单次稀疏度变化值,还可以基于单次稀疏度变化值,对该m个卷积层进行第i次非结构化剪枝。若第i次非结构化剪枝之后,该m个卷积层的稀疏度均达到目标稀疏度,电子设备可以得到第二卷积层。若第i次非结构化剪枝之后,该m个卷积层的稀疏度未全部达到目标稀疏度,则将i加1,电子设备可以执行上述基于单次稀疏度变化值,对该m个卷积层进行第i次非结构化剪枝的步骤。其中,单次稀疏度变化值为该m个卷积层进行一次非结构化剪枝后的稀疏度的变化值。i的初始值为1。
在本申请提供的方案中,电子设备可以确定目标稀疏度和单次稀疏度变化值,并基于单次稀疏度变化值来对该m个卷积层(即待进行第n次结构化剪枝的卷积层)进行非结构化剪枝,并在非结构化剪枝后该m个卷积层的稀疏度未全部达到目标稀疏度的情况下,进行下一次非结构化剪枝,以及在非结构化剪枝后该m个卷积层的稀疏度全部达到目标稀疏度的情况下,得到非结构化剪枝后的m个卷积层(即第二卷积层),然后再对第二卷积层进行结构化剪枝。通过这种方法,电子设备可以控制单次非结构化剪枝的力度,进行若干次非结构化剪枝,从而避免因单次非结构化剪枝力度过大而导致剪枝后的模型效果回退。
可理解,在第i次非结构化剪枝之后,该m个卷积层的稀疏度均达到目标稀疏度的情况下,第二卷积层可以包括该进行第i次非结构化剪枝之后且稀疏度均达到目标稀疏度的m个卷积层。可理解,经过非结构化剪枝之后,该m个卷积层包括的参数的值发生了变化。
在本申请的一些实施例中,在进行结构化剪枝前的非结构化剪枝过程中,该m个卷积层的目标稀疏度可以为相同值,该m个卷积层的单次稀疏度变化值也可以为相同值。例如,该m个卷积层的目标稀疏度可以为30%,该m个卷积层的单次稀疏度变化值可以为5%。该m个卷积层的稀疏度未全部达到目标稀疏度指的是该m个卷积层中存在一个或多个稀疏度未达到目标稀疏度的卷积层。例如,该m个卷积层的目标稀疏度可以为30%,该m个卷积层中存在一个稀疏度未达到30%的卷积层。
可理解,单次稀疏度变化值可以根据实际需求进行设置,本申请对此不作限制。
在本申请的一些实施例中,该m个卷积层进行每一次非结构化剪枝的单次稀疏度变化值是相同的。例如,该m个卷积层进行每一次非结构化剪枝的单次稀疏度变化值都是5%。
在本申请的一些实施例中,该m个卷积层进行若干次非结构化剪枝的单次稀疏度变化值不一定相同。例如,该m个卷积层总共进行4次非结构化剪枝。这4次非结构化剪枝分别对应的单次稀疏度变化值为8%、6%、4%和2%。具体地,该m个卷积层进行第1次非结构化剪枝的单次稀疏度变化值为8%,该m个卷积层进行第2次非结构化剪枝的单次稀疏度变化值为6%,该m个卷积层进行第3次非结构化剪枝的单次稀疏度变化值为4%,该m个卷积层进行第4次非结构化剪枝的单次稀疏度变化值为2%。
可理解,单次稀疏度变化值可以包括ki。在本申请的一些实施例中,i为不同值时,ki均相同的情况下,单次稀疏度变化值与ki的含义相同。
结合第一方面,在一种可能的实现方式中,电子设备对m个卷积层进行第i次非结构化剪枝之后,该方法还可以包括:电子设备可以对第i次非结构化剪枝后的模型进行训练。在该m个卷积层的稀疏度均达到目标稀疏度的情况下,电子设备得到的第二卷积层包括该训练后的模型中的该m个卷积层。在该m个卷积层的稀疏度未全部达到目标稀疏度的情况下,将i加1后进行的第i次非结构化剪枝的m个卷积层为该训练后的模型中的该m个卷积层。其中,对第i次非结构化剪枝后的模型进行训练的过程中,第i次非结构化剪枝后的模型中已置零的参数的值保持不变。
可理解,该训练后的模型中的该m个卷积层指的是对第i次非结构化剪枝后的模型进行训练之后所得的模型中的该m个卷积层。例如,该m个卷积层包括原始模型中的卷积层1、卷积层2和卷积层3。电子设备对卷积层1、卷积层2和卷积层3进行第i次非结构化剪枝,并对第i次非结构化剪枝后的模型进行训练。若第i次非结构化剪枝后的模型中的卷积层1、卷积层2和卷积层3的稀疏度均达到目标稀疏度,第二卷积层包括对第i次非结构化剪枝后的模型进行训练后得到的模型中的卷积层1、卷积层2和卷积层3。
在本申请提供的方案中,电子设备可以对非结构化剪枝后的模型进行训练,这样可以保证模型效果不因剪枝而回退。
结合第一方面,在一种可能的实现方式中,电子设备对第i次非结构化剪枝后的模型进行训练,具体可以包括:在训练轮次达到第一目标轮次,且损失值小于第一预设损失值的情况下,电子设备可以得到对第i次非结构化剪枝后的模型进行训练后的模型。
可理解,第一目标轮次和第一预设损失值的相关描述可以参考后文,在此不展开说明。
在本申请提供的方案中,电子设备可以在训练轮次和损失值达到一定条件的情况下,停止对模型的训练。通过这种方式,可以在剪枝后模型得以压缩的前提下,保证模型效果。
结合第一方面,在一种可能的实现方式中,电子设备基于单次稀疏度变化值,对该m个卷积层进行第i次非结构化剪枝,具体可以包括:电子设备可以分别将该m个卷积层包括的参数总数乘以单次稀疏度变化值,得到第一待置零参数数量。第一待置零参数数量可以包括该m个卷积层针对第i次非结构化剪枝所对应的待置零参数的数量。第一待置零参数数量包括Zr。Zr为该m个卷积层中第r个卷积层针对第i次非结构化剪枝所对应的待置零参数的数量。r为不大于所述m的正整数。电子设备基于单次稀疏度变化值,对该m个卷积层进行第i次非结构化剪枝,具体还可以包括:电子设备可以对该m个卷积层中第r个卷积层的Zr个参数进行置零处理,得到第i次非结构化剪枝后的模型。其中,Zr个参数为第r个卷积层中排序前Zr个的参数。这里所提及的排序指的是第r个卷积层的参数按绝对值由小到大的顺序进行的排序。
在本申请提供的方案中,在对卷积层进行非结构化剪枝的过程中,卷积层中绝对值小的参数可以评估为是对该卷积层影响较小的参数。也就是说,绝对值越小的参数,其对模型的影响越小,这也就意味着,更改该参数的值对模型的影响较小。针对第i次非结构化剪枝,电子设备可以优先对绝对值小的参数进行置零处理,这样可以尽量减少非结构化剪枝对模型的影响,一定程度上保证了模型效果。
结合第一方面,在一种可能的实现方式中,第二卷积层包括进行若干次非结构化剪枝后的m个卷积层。第二卷积核数包括Ur。Ur为针对第n次结构化剪枝m个卷积层中第r个卷积层对应待修剪的卷积核数。r为不大于m的正整数。电子设备基于第二卷积核数,对第二卷积层中的卷积核进行修剪,具体可以包括:电子设备可以去除第二卷积层包括的m个卷积层中第r个卷积层的Ur个卷积核。Ur个卷积核为该第r个卷积层中排序前Ur个的卷积核。这里所提及的排序指的是第r个卷积层的卷积核按参数绝对值总和由小到大的顺序进行的排序。
在本申请的一些实施例中,在对卷积层进行结构化剪枝的过程中,卷积层中参数绝对值总和小的卷积核可以评估为是对该卷积层影响较小的卷积核。也就是说,参数绝对值总和越小的卷积核,其对模型的影响越小,这也就意味着,去除该卷积核对模型的影响较小。针对第n次结构化剪枝,电子设备可以优先去除参数绝对值总和小的卷积核,这样可以尽量减少结构化剪枝对模型的影响,一定程度上保证了模型效果。
结合第一方面,在一种可能的实现方式中,电子设备确定第一卷积核数,具体可以包括:在硬件平台的通道对齐方式为w通道对齐的情况下,电子设备可以确定原始模型中k个卷积层分别包括的卷积核数与第一卷积核数包括的k个卷积层分别对应待修剪的卷积核数的差值均为w的倍数。其中,w为正整数。
在本申请提供的方案中,电子设备可以基于硬件平台的属性(例如,通道对齐方式)来确定第一卷积核。这种方式可以显著提升性能收益。也就是说,通过这种方式确定第一卷积核且基于第一卷积核进行结构化剪枝后,模型的推理速度可以显著提升。
可理解,原始模型中卷积层Y包括的卷积核数与第一卷积核数包括的卷积层Y对应待修剪的卷积核数的差值为w的倍数。其中,卷积层Y为原始模型包括的k个卷积层中的任意一个卷积层。
在本申请的一些实施例中,原始模型包括的k个卷积层的卷积核数均为w的倍数,则第一卷积核数包括的k个卷积层分别对应待修剪的卷积核数均为w的倍数。
可理解,硬件平台的通道对齐方式和w的相关描述可以参考后文,在此不展开说明。
结合第一方面,在一种可能的实现方式中,电子设备得到第n次结构化剪枝后的模型之后,该方法还可以包括:若第n次结构化剪枝之后,第一卷积层包括的k个卷积层已修剪的卷积核数分别等于第一卷积核数中该k个卷积层对应待修剪的卷积核数,电子设备可以得到若干次结构化剪枝后的模型。若第n次结构化剪枝之后,第一卷积层包括的k个卷积层已修剪的卷积核数未分别等于第一卷积核数中该k个卷积层对应待修剪的卷积核数,则将n加1,执行第n次结构化剪枝的步骤。
可理解,上述电子设备得到的若干次结构化剪枝后的模型即为第n次结构化剪枝后的模型。上述第n次结构化剪枝的步骤可以包括:确定进行第n次结构化剪枝的m个卷积层和第二卷积核数;对m个卷积层进行若干次非结构化剪枝,得到第二卷积层;基于第二卷积核数,对第二卷积层中的卷积核进行修剪,得到第n次结构化剪枝后的模型。
在本申请提供的方案中,电子设备可以控制单次结构化剪枝的力度,对原始模型进行若干次结构化剪枝,避免因一次结构化剪枝力度过大(即去除的卷积核数量太多)导致模型效果受到较大影响。
结合第一方面,在一种可能的实现方式中,电子设备得到第n次结构化剪枝后的模型之后,该方法还可以包括:电子设备可以对第n次结构化剪枝后的模型进行训练。在第一卷积层包括的k个卷积层已修剪的卷积核数分别等于第一卷积核数中该k个卷积层对应待修剪的卷积核数的情况下,电子设备得到的第n次结构化剪枝后的最终模型包括对第n次结构化剪枝后的模型进行训练后所得的模型中的该m个卷积层。在第一卷积层包括的k个卷积层已修剪的卷积核数未分别等于第一卷积核数中该k个卷积层对应待修剪的卷积核数的情况下,电子设备将n加1后进行的第n次结构化剪枝的m个卷积层为对第n次结构化剪枝后的模型进行训练后所得的模型中的该m个卷积层。
在本申请提供的方案中,电子设备可以对结构化剪枝后的模型进行训练,从而降低结构化剪枝对模型效果造成的影响。
在本申请的一些实施例中,电子设备进行每一次结构化剪枝之后,都可以对结构化剪枝后的模型进行训练。
在本申请的一些实施例中,电子设备进行若干次结构化剪枝中部分次数的结构化剪枝之后,可以对该部分次数的结构化剪枝后的模型进行训练。
结合第一方面,在一种可能的实现方式中,电子设备对第一卷积层进行若干次结构化剪枝之后,该方法还可以包括:电子设备可以确定进行若干次结构化剪枝后的模型中的x个卷积层、该x个卷积层分别对应的稀疏度阈值,以及该x个卷积层分别对应的单次稀疏度变化值,并基于该x个卷积层分别对应的单次稀疏度变化值,对该x个卷积层进行非结构化剪枝。若对该x个卷积层进行非结构化剪枝之后,该x个卷积层的稀疏度未达到该x个卷积层分别对应的稀疏度阈值,对该x个卷积层再次进行非结构化剪枝,直到该x个卷积层的稀疏度达到该x个卷积层分别对应的稀疏度阈值。其中,x为正整数。
在本申请提供的方案中,在硬件平台支持稀疏计算的情况下,电子设备在进行结构化剪枝之后,还可以按照上述方式进行层维度的非结构化剪枝,从而进一步提升模型的推理速度。
可理解,x个卷积层和稀疏度阈值的相关描述可以参考后文,在此不展开说明。
结合第一方面,在一种可能的实现方式中,电子设备对x个卷积层进行非结构化剪枝之后,该方法还可以包括:电子设备可以训练对x个卷积层进行非结构化剪枝后的模型,并且在训练轮次达到第二目标轮次,且损失值小于第二预设损失值的情况下,得到训练后的模型。其中,在电子设备对x个卷积层进行非结构化剪枝后的模型进行训练的过程中,电子设备可以添加原始模型进行知识蒸馏。
在本申请提供的方案中,电子设备可以对进行层维度的非结构化剪枝后的模型进行训练,从而减少该非结构化剪枝对模型效果的影响。
可理解,对层维度的非结构化剪枝后的模型进行训练的过程可以参考后文,在此不展开说明。
第二方面,本申请提供了一种神经网络模型推理方法。该方法可以包括:电子设备可以将待处理数据输入到神经网络模型,并输出经过神经网络模型处理后的数据。其中,该神经网络模型为经过如上述第一方面中任一实现方式的神经网络模型处理方法处理得到的神经网络模型。
在本申请提供的方案中,电子设备可以利用经上述神经网络模型处理方法处理后的模型来处理数据,从而大大提升了数据处理的速度。
结合第二方面,在一种可能的实现方式中,电子设备将待处理数据输入到神经网络模型之前,该方法还可以包括:电子设备可以显示拍摄界面,拍摄界面可以包括快门控件;检测并响应于作用在快门控件上的操作,电子设备可以得到通过摄像头采集并处理的原始图像数据。电子设备将待处理数据输入到神经网络模型,并输出经过所述神经网络模型处理后的数据,具体可以包括:电子设备可以将原始图像数据输入到神经网络模型中,并输出经过神经网络模型处理后的图像。
在本申请提供的方案中,上述神经网络模型处理方法可以应用到拍照模型(例如,夜景模式下的拍照模型)中,使用经过经上述神经网络模型处理方法处理后的拍照模型进行拍照时,由于模型推理速度大大提升,用户得到图像的时间也缩短了,提升了用户体验。
第三方面,本申请提供了一种电子设备,该电子设备包括存储器和一个或多个处理器;其中,存储器与一个或多个处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第四方面,本申请提供一种计算机存储介质,包括计算机指令,当该计算机指令在电子设备上运行时,使得该电子设备执行上述第一方面中任一种可能的实现方式。
第五方面,本申请实施例提供一种芯片,该芯片可以应用于电子设备,该芯片包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行上述第一方面中任一种可能的实现方式。
第六方面,本申请实施例提供一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行上述第一方面任一种可能的实现方式。
第七方面,本申请提供了一种电子设备,该电子设备包括摄像头、存储器和一个或多个处理器;其中,存储器与一个或多个处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行如第二方面以及第二方面中任一可能的实现方式描述的方法。
第八方面,本申请提供一种计算机存储介质,包括计算机指令,当该计算机指令在电子设备上运行时,使得该电子设备执行上述第二方面中任一种可能的实现方式。
第九方面,本申请实施例提供一种芯片,该芯片可以应用于电子设备,该芯片包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行上述第二方面中任一种可能的实现方式。
第十方面,本申请实施例提供一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行上述第二方面任一种可能的实现方式。
可理解,上述第三方面提供的电子设备、第四方面提供的计算机存储介质、第五方面提供的芯片,以及第六方面提供的计算机程序产品均用于执行上述第一方面中任一种可能的实现方式。因此,其所能达到的有益效果可参考上述第一方面中任一种可能的实现方式的有益效果,此处不再赘述。类似的,上述第七方面提供的电子设备、第八方面提供的计算机存储介质、第九方面提供的芯片,以及第十方面提供的计算机程序产品均用于执行上述第二方面中任一种可能的实现方式。因此,其所能达到的有益效果可参考上述第二方面中任一种可能的实现方式的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的神经网络模型处理过程的示意图;
图2为本申请实施例提供的非结构化剪枝过程的示意图;
图3为本申请实施例提供的一种非结构化剪枝方法的流程图;
图4为本申请实施例提供的一种神经网络模型处理方法的流程图;
图5为本申请实施例提供的又一种神经网络模型处理方法的流程图;
图6为本申请实施例提供的一种神经网络模型推理方法的流程图;
图7为本申请实施例提供的一种电子设备的硬件结构示意图;
图8为本申请实施例提供的一种电子设备的软件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
应当理解,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
根据上文,神经网络模型越深,非线性程度也就越大,模拟智能活动的能力越强。但是其训练成本和模型大小会相应增加,从而使得推理时间变长,还需要更好的硬件支持。
为了降低网络模型的计算量,从而减小网络的训练时间、计算和推理时间,并使其所占用的内存也随之变小,在性能较差的网络器件上也能够使用。一系列的模型压缩方法随之而生。例如,网络剪枝(Pruning)、量化(Quantization)、低秩分解(Low-rankfactorization)、知识蒸馏(Knowledge distillation)等。
其中,网络剪枝的大概思路是在网络训练过程中寻求一种评判机制,剔除掉不重要的连接、节点甚至卷积核,从而实现对网络模型的压缩。由于卷积层到全连接层存在大量冗余参数,大多是神经元被激活后的输出值区域0,因此,即使将这些神经元剔除也能够表达出模型特征。
网络剪枝可以分为结构化剪枝(Structured pruning)和非结构化剪枝(Unstructured pruning)两类。非结构化剪枝的大概思路是通过调整卷积核中权重参数(即参数)的大小来实现对模型的压缩。进一步的,非结构化剪枝可以通过将卷积层的一些权重参数置零(即值改为0)来实现对模型的压缩。而结构化剪枝的大概思路是通过减少参数数量来实现对模型的压缩。可理解,非结构化剪枝没有改变参数的数量,而是对其进行了稀疏化处理,这样可以降低模型的计算量,并且对模型效果的影响较小,但是需要特定的硬件支持才能提升推理速度。对于不支持稀疏计算部分硬件架构来说,无法提升推理速度,实际运行速度得不到提升。而结构化剪枝改变了参数的数量,剪枝粒度较大,对模型效果的影响较大,但是不需要特定的硬件支持就可以提升推理速度。
本申请提供了一种神经网络模型处理、推理方法及相关设备。根据该神经网络模型处理方法,电子设备在对原始模型进行结构化剪枝之前,可以首先对待结构化剪枝的卷积层进行若干次非结构化剪枝,直到原始模型中进行非结构化剪枝后的卷积层的稀疏度达到目标稀疏度,这样,电子设备再针对非结构化剪枝后的模型进行结构化剪枝。可理解,电子设备可以重复执行上述非结构化剪枝和结构化剪枝过程,直到原始模型中进行结构化剪枝后的卷积层的被修剪的卷积核数量达到预先设置的卷积核数量。其中,非结构化剪枝和结构化剪枝可以交替进行。通过上述方法可以得到简化后的模型,该简化后的模型的网络推理速度得以提升,并且由于非结构化剪枝和结构化剪枝均分为若干次进行,避免了一次完成剪枝所造成的模型效果回退,保证了模型效果不受影响。
请参阅图1,图1为本申请实施例提供的神经网络模型处理过程的示意图。
如图1所示,电子设备在进行结构化剪枝之前,可以对待结构化剪枝的卷积层(即针对结构化剪枝待修剪的卷积层)进行非结构化剪枝(即第1次非结构化剪枝到第J次非结构化剪枝,J为正整数)。等到非结构化剪枝结束之后,电子设备再对非结构化剪枝后的模型进行结构化剪枝。并且,电子设备可以再次对结构化剪枝后的模型进行若干次非结构化剪枝,然后再对该非结构化剪枝后的模型进行结构化剪枝。可理解,电子设备可以重复执行上述非结构化剪枝和结构化剪枝的过程,最终得到处理后的模型(即压缩后的模型)。与原始模型相比,该处理后的模型中的经过修剪的卷积层与预设待修剪卷积层一致,且每一个经过修剪的卷积层中已修剪的卷积核的数量与相应预设待修剪数量一致。也就是说,电子设备对原始模型经过若干次非结构化剪枝和若干次结构化剪枝,直到预设待修剪卷积层中已修剪的卷积核的数量达到预设待修剪数量,才停止剪枝,并得到剪枝后的模型。该模型即为压缩后的模型。可理解,每一次进行非结构化剪枝之后,电子设备可以对该非结构化剪枝后的模型进行训练。类似的,每一次进行结构化剪枝之后,电子设备也可以对该结构化剪枝后的模型进行训练。上述训练过程可以避免模型效果回退。
可理解,原始模型可以为神经网络模型。例如,卷积神经网络模型。原始模型也可以为其他包含有卷积层的神经网络模型,本申请对此不作限制。预设待修剪卷积层和预设待修剪数量可以根据实际需要进行设置,本申请对此不作限制。预设待修剪卷积层和预设待修剪数量的相关描述可以参考后文,在此不展开说明。
需要说明的是,本申请所提供的神经网络模型处理方法(如图1所示)可以应用于夜景模式下的拍照模型,从而提升夜景模式下的拍照速度。可理解,本申请所提供的神经网络模型方法还可以应用于其他模型中,本申请对此不作限制。
下面首先介绍本申请提供的一种非结构化剪枝方法。
基于图1所示的神经网络模型处理过程,下面结合图2和图3具体说明其中的非结构化剪枝过程。
首先,请参阅图2,图2为本申请实施例提供的非结构化剪枝过程的示意图。
如图2所示,电子设备可以对原始模型进行若干次非结构化剪枝,直到原始模型中进行非结构化剪枝后的卷积层的稀疏度达到目标稀疏度,电子设备才停止非结构化剪枝。也就是说,在非结构化剪枝后的模型中的已进行非结构化剪枝的卷积层的稀疏度均达到目标稀疏度的情况下,电子设备停止非结构化剪枝。
在一种可能的实现方式中,原始模型中进行非结构化剪枝后的卷积层的稀疏度达到目标稀疏度指的是:原始模型中已进行非结构化剪枝的卷积层的总的稀疏度达到目标稀疏度。
在又一种可能的实现方式中,原始模型中进行非结构化剪枝后的卷积层的稀疏度达到目标稀疏度指的是:原始模型中已进行非结构化剪枝的卷积层的稀疏度分别达到各自的目标稀疏度。
在本申请的一些实施例中,电子设备可以对原始模型进行若干次非结构化剪枝,直到原始模型中已进行非结构化剪枝后的卷积层的稀疏度在目标稀疏度范围内,电子设备才停止非结构化剪枝。也就是说,在非结构化剪枝后的模型中的已经过非结构化剪枝的卷积层的稀疏度在目标稀疏度范围内的情况下,电子设备停止非结构化剪枝。
在一种可能的实现方式中,原始模型中进行非结构化剪枝后的卷积层的稀疏度均在目标稀疏度范围内指的是:原始模型中已进行非结构化剪枝的卷积层的总的稀疏度在目标稀疏度范围内。
在又一种可能的实现方式中,原始模型中进行非结构化剪枝后的卷积层的稀疏度均在目标稀疏度范围内指的是:原始模型中已进行非结构化剪枝的卷积层的各自的稀疏度均在目标稀疏度范围内。
可理解,稀疏度指的是卷积层中值为0的参数(即权重参数)的数量占卷积层中所有参数数量的比例,也可以理解为卷积层中值为0的参数的数量与该卷积层中所有参数数量的比值。
为了便于描述,本申请将目标稀疏度记为S。可理解,目标稀疏度(即S)的范围为[0,1],也可以表示为[0,100%]。目标稀疏度(即S)可以根据实际需求进行设置,本申请对此不作限制。例如,S可以为30%。
在本申请的一些实施例中,电子设备可以在目标稀疏度范围中选择目标稀疏度。
可理解,目标稀疏度范围可以根据实际需求进行设置,本申请对此不作限制。例如,目标稀疏度范围可以为[20%,30%]。在这种情况下,电子设备可以在[20%,30%]这一范围内确定S。比如,电子设备可以确定S为25%。
为了便于描述,本申请将整个非结构化剪枝过程中电子设备总共进行的非结构化剪枝的次数记为J。也就是说,在整个非结构化剪枝过程中,电子设备对原始模型进行了J次非结构化剪枝。
需要说明的是,电子设备可以预先设置整个非结构化剪枝过程中总共进行非结构化剪枝的次数,也可以不必预先设置整个非结构化剪枝过程中总共进行非结构化剪枝的次数。
在本申请的一些实施例中,电子设备对原始模型进行第1次非结构化剪枝后,可以对第1次非结构化剪枝后的模型进行训练。类似的,电子设备对原始模型进行第i次非结构化剪枝后,可以对第i次非结构化剪枝后的模型进行训练。其中,i为不大于J的正整数。例如,在J=5的情况下,i可以为1-5中的任意一个正整数。可理解,电子设备对非结构化剪枝后的模型进行训练,可以减少因非结构化剪枝造成的模型效果的损失。
在本申请的一些实施例中,在总共J次非结构化剪枝过程中,电子设备可以在每一次进行非结构化剪枝后都对该剪枝后的模型进行训练。
在本申请的一些实施例中,在总共J次非结构化剪枝过程中,电子设备可以在其中若干次非结构化剪枝后对该剪枝后的模型进行训练。即电子设备无需在每一次进行非结构化剪枝后都对该剪枝后的模型进行训练。
在本申请的一些实施例中,电子设备对原始模型进行一次非结构化剪枝之后,可以不对该剪枝后的模型进行训练就进行下一次非结构化剪枝。
其次,基于图2所示的内容,请参阅图3,图3为本申请实施例提供的一种非结构化剪枝方法的流程图。该非结构化方法包括但不限于以下步骤:
S301:电子设备确定原始模型中的非结构化剪枝卷积层和目标稀疏度。非结构化剪枝卷积层为针对非结构化剪枝原始模型中对应修剪的卷积层。目标稀疏度指的是卷积层进行非结构化剪枝后最终的稀疏度。
可理解,电子设备可以确定原始模型中所有待进行非结构化剪枝的卷积层(即非结构化剪枝卷积层)和目标稀疏度。其中,非结构化剪枝卷积层指的是:针对非结构化剪枝,原始模型中对应修剪的卷积层。非结构化剪枝卷积层也可以理解为原始模型中所有待进行非结构化剪枝的卷积层的集合。为了便于描述,本申请将非结构化剪枝卷积层记为L。目标稀疏度(即S)的相关描述可以参考上文,在此不再赘述。需要说明的是,非结构化剪枝中的修剪指的是对参数进行置零处理,而非去除参数。
可理解,非结构化剪枝卷积层(即L)可以根据实际需要进行设置,本申请对此不作限制。可理解,L可以包括原始模型中的部分卷积层。
下面示例性给出电子设备确定非结构化剪枝卷积层的方式。
在本申请中的一些实施例中,电子设备可以从原始模型中的卷积层中任意选择预设数量的卷积层,并确定该选择的卷积层就是非结构化剪枝卷积层。
可理解,这里所提及的预设数量指的是预先设置的非结构化剪枝卷积层的数量,本申请对其具体值不作限制。但是,需要注意的是,预设数量为正整数,并且预设数量应不大于原始模型中的卷积层的总数。
示例性的,原始模型可以包括6层卷积层,预设数量可以为3。电子设备可以从原始模型中的6层卷积层中选择3层卷积层来进行非结构化剪枝。电子设备选择的这3层卷积层即为非结构化剪枝卷积层。
在本申请的一些实施例中,电子设备可以确定预设数量,评估原始模型中各个卷积层的重要性,并以优先选择重要性较小的卷积层为规则,从原始模型中的卷积层中选择预设数量的卷积层。
其中,评估卷积层重要性的方法,具体包括:电子设备可以将原始模型中需要评估的卷积层的参数全部改成0,然后计算当前模型的输出,并根据该当前模型的输出与原始模型输出的差别来衡量该卷积层的重要性大小。可理解,更改卷积层的参数后,该当前模型的输出与原始模型的输出的差别越小,该卷积层的重要性越小。这也就意味着,更改该卷积层的参数之后对模型输出的影响较小。
示例性的,预设数量可以为4。原始模型可以包括8层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5、卷积层6、卷积层7和卷积层8。将这8层卷积层按照卷积层重要性由小到大排列有:卷积层8、卷积层2、卷积层3、卷积层1、卷积层5、卷积层7、卷积层6和卷积层4。其中,卷积层1、卷积层2、卷积层3和卷积层8为这8层卷积层中重要性更小的4层卷积层。电子设备可以确定非结构化剪枝卷积层包括:卷积层1、卷积层2、卷积层3和卷积层8。
本申请的一些实施例中,电子设备可以确定预设数量,并以优先选择参数数量更多的卷积层为规则,从原始模型中的卷积层中选择预设数量的卷积层。
例性的,预设数量可以为3,目标稀疏度为30%。原始模型可以包括8层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5、卷积层6、卷积层7和卷积层8。这8层卷积层中的参数数量分别为50、100、80、120、60、200、60和150。由于预设数量为3,且上述8个参数数量中最大的三个值为120、200和150,则电子设备可以确定非结构化剪枝卷积层为120、200和150对应的三个卷积层,即卷积层4、卷积层6和卷积层8。
当然,电子设备还可以通过其他方式确定非结构化剪枝卷积层,本申请对此不作限制。
S302:电子设备基于非结构化剪枝卷积层和目标稀疏度,确定第i次非结构化剪枝卷积层,以及第i次非结构化剪枝的稀疏度变化值。第i次非结构化剪枝卷积层为针对第i次非结构化剪枝原始模型中对应修剪的卷积层。第i次非结构化剪枝的稀疏度变化值指的是第i次非结构化剪枝卷积层在进行第i次非结构化剪枝前后的稀疏度的变化值。
可理解,电子设备可以基于原始模型中所有待进行非结构化剪枝的卷积层(即非结构化剪枝卷积层)和目标稀疏度,确定原始模型中待进行第i次非结构化剪枝的卷积层(即第i次非结构化剪枝卷积层),以及第i次非结构化剪枝的稀疏度变化值。
为了便于描述,本申请将第i次非结构化剪枝卷积层记为Li。而第i次非结构化剪枝卷积层(即Li)包括L中的全部或部分卷积层。
可理解,第i次非结构化剪枝的稀疏度变化值指的是卷积层中原本不为零但在第i次非结构化剪枝的过程中置零的参数的数量占该卷积层中所有参数数量的比例,也可以理解为卷积层中原本不为零但在第i次非结构化剪枝的过程中置零的参数的数量与该卷积层中所有参数数量的比值。
为了便于描述,本申请将第i次非结构化剪枝的稀疏度变化值记为ki。根据上文,在整个非结构化剪枝过程中,电子设备总共进行的非结构化剪枝的次数为J。则电子设备总共进行的J次非结构化剪枝的稀疏度变化值分别为k1,k2,…,ki,…,kJ。可理解,ki的范围为[0,1],也可以表示为[0,100%]。结合上文对目标稀疏度(即S)的相关描述,可得:在L所包括的某一个卷积层的参数的初始值均不为0的情况下,针对这一个卷积层来说,k1+k2+…+ki+…+kJ=S;而在L所包括的某一个卷积层的参数的初始值不完全为0的情况下,针对这一个卷积层来说,L所包括的这一个卷积层的初始稀疏度+k1+k2+…+ki+…+kJ=S。
下面对第i次非结构化剪枝卷积层进行说明。
可理解,第i次非结构化剪枝卷积层是非结构化剪枝卷积层中的全部或部分卷积层。即Li是L中的全部或部分卷积层。
在本申请的一些实施例中,电子设备每一次进行非结构化剪枝的卷积层都是相同的。也就是说,第i次非结构化剪枝卷积层与非结构化剪枝卷积层相同。即Li=L。
在本申请的一些实施例中,电子设备每一次进行非结构化剪枝的卷积层不完全相同。在这种情况下,L所包括的卷积层达到目标稀疏度的时间可能有差异。也就是说,在电子设备对L包括的卷积层进行非结构化剪枝的过程中,可能存在L中的部分卷积层率先达到目标稀疏度的情况。在这种情况下,L包括的卷积层各自进行非结构化剪枝的次数并不一定相同。可理解,L所包括的卷积层各自进行非结构化剪枝的次数不一定是J次。
下面对第i次非结构化剪枝的稀疏度变化值进行说明。
可理解,i为不同值时,第i次非结构化剪枝的稀疏度变化值可以相同,也可以不相同。即i为不同值时,ki的值可以相同,也可以不同。
在本申请的一些实施例中,第i次非结构化剪枝的稀疏度变化值是预先设置好的一个固定值。即ki=k。也就是说,每一次非结构化剪枝的稀疏度变化值都可以是相同的。可理解,若电子设备总共进行J次非结构化剪枝,则这J次非结构化剪枝的稀疏度变化值均为k。
示例性的,k=5%。在这种情况下,若原始模型中进行非结构化剪枝的卷积层中的参数的初始值均不为0,且S=25%,则电子设备可以对原始模型总共进行5次非结构化剪枝,每一次进行非结构化剪枝的卷积层相同,这些卷积层每一次非结构化剪枝的稀疏度变化值为5%。具体地,电子设备对原始模型进行第1次非结构化剪枝后,模型中进行该非结构化剪枝的相应卷积层的稀疏度变为5%,电子设备对原始模型进行第2次非结构化剪枝(即对第1次非结构化剪枝后的模型再进行一次非结构化剪枝)后,模型中进行该非结构化剪枝的相应卷积层的稀疏度变为10%,电子设备对原始模型进行第3次非结构化剪枝(即对第2次非结构化剪枝后的模型再进行一次非结构化剪枝)后,模型中进行该非结构化剪枝的相应卷积层的稀疏度变为15%,电子设备对原始模型进行第4次非结构化剪枝(即对第3次非结构化剪枝后的模型再进行一次非结构化剪枝)后,模型中进行该非结构化剪枝的相应卷积层的稀疏度变为20%,电子设备对原始模型进行第5次非结构化剪枝(即对第4次非结构化剪枝后的模型再进行一次非结构化剪枝)后,模型中进行该非结构化剪枝的相应卷积层的稀疏度变为25%。
在本申请的一些实施例中,第i次非结构化剪枝的稀疏度变化值是电子设备预先设置的若干稀疏度变化值中的一个值。也就是说,每一次非结构化剪枝的稀疏度变化值可以不完全相同。即i为不同值时,ki的值可以不完全相同。可理解,电子设备总共进行J次非结构化剪枝,这J次非结构化剪枝的稀疏度变化值可以完全不相同,也可以部分相同。
可理解,对于L所包括的不同的卷积层来说,其第i次非结构化剪枝的稀疏度变化值(即ki)可能不同。例如,卷积层1的ki可以为5%,卷积层3的ki可以为8%。
下面示例性给出电子设备确定第i次非结构化剪枝卷积层和第i次非结构化剪枝的稀疏度变化值的方式。
以下内容为电子设备确定第i次非结构化剪枝卷积层(即Li)与第i次非结构化剪枝的稀疏度变化值(即ki)需要满足的条件。可理解,电子设备可以在满足以下条件中的一项或多项的情况下确定Li与ki
条件一:每一次进行非结构化剪枝的卷积层的并集与非结构化剪枝卷积层相同。也就是说,Li的并集=L。其中,i为不大于J的正整数。即L1∪…∪Li∪…∪LJ=L。
条件二:对于每一个进行非结构化剪枝的卷积层(即L所包括的每一个卷积层)来说,在该卷积层的参数的初始值均不为0的情况下,k1+k2+…+ki+…+kJ=S;而在该卷积层的参数的初始值不完全为0的情况下,该卷积层的初始稀疏度+k1+k2+…+ki+…+kJ=S。也就是说,在L所包括的卷积层y的参数的初始值均为0的情况下,k1+k2+…+ki+…+kJ=S。而在L所包括的卷积层y的参数的初始值不为0的情况下,卷积层y的初始稀疏度+k1+k2+…+ki+…+kJ=S。其中,S指的是卷积层y对应的目标稀疏度。ki指的是卷积层y对应的进行第i次非结构化剪枝的稀疏度变化值。即在第i次非结构化剪枝前后,卷积层y的稀疏度的变化值。可理解,卷积层y可以为L中任意一个卷积层。
条件三:第i次非结构化剪枝的卷积层与非结构化剪枝卷积层不完全相同。即Li和L不完全相同。
条件四:第i次非结构化剪枝卷积层与非结构化剪枝卷积层相同。即Li=L。
方式一:电子设备可以在满足上述条件一和条件二的情况下确定Li和ki
在本申请的一些实施例中,电子设备基于方式一确定ki,且ki在预设稀疏度变化范围内。
可理解,预设稀疏度变化范围中的最小值为正数,其中的最大值不超过S。预设稀疏度变化范围可以根据实际需要进行具体设置,本申请对此不作限制。例如,S=30%,预设稀疏度变化范围为[3%,8%]。
在一种可能的实现方式中,在满足上述条件(即条件一、条件二和ki在预设稀疏度变化范围内)的情况下,电子设备可以任意确定ki
在一种可能的实现方式中,在满足上述条件(即条件一、条件二和ki在预设稀疏度变化范围内)的情况下,电子设备还可以以预设步长减少每一次非结构化剪枝对应的非结构化剪枝卷积层的稀疏度变化值。
可理解,预设步长可以根据实际需要进行设置,本申请对此不作限制。例如,预设步长可以为2%。在这种情况下,电子设备进行第1次非结构化剪枝的稀疏度变化值为8%,第2次非结构化剪枝的稀疏度变化值为6%,第3次非结构化剪枝的稀疏度变化值为4%,第4次非结构化剪枝的稀疏度变化值为2%。
在一种可能的实现方式中,在满足上述条件(即条件一、条件二和ki在预设稀疏度变化范围内)的情况下,电子设备还可以以预设步长增加每一次非结构化剪枝对应的非结构化剪枝卷积层的稀疏度变化值。
可根据上文,预设步长可以根据实际需要进行设置,本申请对此不作限制。例如,预设步长可以为2%。在这种情况下,电子设备进行第1次非结构化剪枝的稀疏度变化值为2%,第2次非结构化剪枝的稀疏度变化值为4%,第3次非结构化剪枝的稀疏度变化值为6%,第4次非结构化剪枝的稀疏度变化值为8%。
在本申请的一些实施例中,电子设备可以确定预设稀疏度变化值。在预设稀疏度变化值可以整除目标稀疏度的情况下,电子设备可以确定ki为预设稀疏度变化值。在预设稀疏度变化值不可以整除目标稀疏度的情况下,电子设备可以确定目标稀疏度除以预设稀疏度变化值的商和余数。为了便于描述,本申请中将目标稀疏度除以预设稀疏度变化值的商记为u,而将目标稀疏度除以预设稀疏度变化值的余数记为v。电子设备可以确定在整个非结构化剪枝过程中总共进行非结构化剪枝的次数为u+1。即J=u+1。可理解,u为正整数。在该u+1次非结构化剪枝过程中,电子设备可以确定其中u次非结构化剪枝的稀疏度变化值均为预设稀疏度变化值,而其中1次非结构化剪枝的稀疏度变化值为v。也就是说,总共J次非结构化剪枝中有u次非结构化剪枝的稀疏度变化值为预设稀疏度变化值,有1次非结构化剪枝的稀疏度变化值为v。
可理解,预设稀疏度变化值可以根据实际需要进行设置,本申请对此不作限制。预设稀疏度变化值不大于S。例如,预设稀疏度变化值可以为5%。在本申请的一些实施例中,预设稀疏度变化值在预设稀疏度变化范围内。
在上述实施方式中,电子设备可以任意安排该J次非结构化剪枝的顺序。可理解,在i为[1,u+1]中任意一个整数的情况下,第i次非结构化剪枝的稀疏度变化值为v。例如,电子设备可以确定前u次非结构化剪枝的稀疏度变化值为预设稀疏度变化值,最后1次非结构化剪枝的稀疏度变化值为v。也就是说,在i=1,2,...,u的情况下,第i次非结构化剪枝的稀疏度变化值为预设稀疏度变化值,而在i=u+1的情况下,第i次非结构化剪枝的稀疏度变化值为v。即i=1,2,...,u时,ki等于预设稀疏度变化值,i=u+1时,ki=v。例如,电子设备可以确定第1次非结构化剪枝的稀疏度变化值为v,后u次非结构化剪枝的稀疏度变化值为预设稀疏度变化值。也就是说,在i=1的情况下,第i次非结构化剪枝的稀疏度变化值为v,而在i=2,...,u+1的情况下,第i次非结构化剪枝的稀疏度变化值为预设稀疏度变化值。即i=2,...,u+1时,ki等于预设稀疏度变化值,i=1时,ki=v。再例如,在J不小于3的情况下,电子设备可以确定第3次非结构化剪枝的稀疏度变化值为v。即k3=v。
示例性的,目标稀疏度为30%,预设稀疏度变化值为7%。可理解,目标稀疏度无法被预设稀疏度变化值整除。目标稀疏度除以预设稀疏度变化值的商为4,余数为2%(即u=4,v=2%)。电子设备可以确定总共进行5次非结构化剪枝。电子设备可以确定这5次非结构化剪枝中的4次非结构化剪枝的稀疏度变化值为7%,而其中1次非结构化剪枝的稀疏度变化值为2%。电子设备可以任意安排这5次非结构化剪枝的顺序。
方式二:电子设备可以在满足上述条件一、条件二和条件三的情况下确定Li和ki
示例性的,原始模型可以包括8层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5、卷积层6、卷积层7和卷积层8。L包括卷积层2、卷积层3、卷积层4、卷积层6和卷积层7。卷积层2、卷积层3、卷积层4、卷积层6和卷积层7的参数的初始值均不为0。S=20%。电子设备可以确定L1包括卷积层2、卷积层3、卷积层4、卷积层6,L2包括卷积层2、卷积层3、卷积层4、卷积层6和卷积层7,L3包括卷积层2、卷积层3、卷积层4、卷积层6和卷积层7,L4包括卷积层2、卷积层3、卷积层4、卷积层6。电子设备可以确定卷积层2、卷积层3、卷积层4、卷积层6对应的ki均为5%,卷积层7对应的ki为10%。
方式三:电子设备可以在满足上述条件一、条件二和条件四的情况下确定Li和ki。可理解,Li=L。可理解,电子设备可以确定每一次非结构化剪枝的稀疏度变化值均相同(即i为不同值时,ki均相同),并基于目标稀疏度确定ki
例如,电子设备可以确定可以整除目标稀疏度(即S)的预设稀疏度变化值。即S可以被预设稀疏度变化值整除。电子设备可以确定ki等于预设稀疏度变化值。电子设备还可以确定总共进行的非结构化剪枝的次数(即J)等于S除以预设稀疏度变化值的商。
示例性的,S为30%,预设稀疏度变化值为5%。S可以被预设稀疏度变化值整除。电子设备可以确定ki=5%。可理解,S除以预设稀疏度变化值的商为6。电子设备还可以确定J=6。也就是说,i=1,2,...,6。
再例如,电子设备可以确定总共进行的非结构化剪枝的次数(即J)。电子设备可以确定ki等于S除以J的商。
示例性的,S为25%,电子设备可以确定J=5。S除以J的商为5%。可理解,电子设备可以确定ki=5%。
当然,电子设备还可以通过其他方式确定第i次非结构化剪枝卷积层和第i次非结构化剪枝的稀疏度变化值,本申请对此不作限制。
S303:电子设备基于第i次非结构化剪枝的稀疏度变化值对第i次非结构化剪枝卷积层中的参数进行置零处理,得到第i次非结构化剪枝后的模型。
具体地,电子设备确定第i次非结构化剪枝卷积层(即Li)中的每一个卷积层的参数总数,将该每一个卷积层的参数总数乘以第i次非结构化剪枝的稀疏度变化值(即ki),即可得到该每一个卷积层分别对应的待置零参数的数量。电子设备可以基于得到的该每一个卷积层分别对应的待置零参数的数量,在该每一个卷积层中分别选择相应数量的非零参数进行置零处理,即将选择的非零参数变为0,并且得到第i次非结构化剪枝后的模型。可理解,上述置零处理后的模型即为第i次非结构化剪枝后的模型。
可理解,待置零参数指的是电子设备进行非结构化剪枝时卷积层中需要置零的参数。待置零参数可以理解为还未置零但即将置零的参数。
在本申请的一些实施例中,电子设备可以选择卷积层中绝对值较小的非零参数,并对其进行置零处理。具体地,电子设备可以按照优先选择绝对值更小的参数的规则,对卷积层所包括的参数的绝对值进行选择,然后再对这些参数进行置零处理。可理解,电子设备选择的参数的数量为该卷积层参数总数与ki的乘积。
示例性的,原始模型可以包括6层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5和卷积层6。Li可以包括卷积层1。ki=5%。卷积层1可以包括3*3*128个参数。则卷积层1进行第i次非结构化剪枝时待置零的参数的数量为58(即3*3*128*5%≈58)。电子设备可以对卷积层1中的参数按照绝对值由小到大或者绝对值由大到小的顺序进行排序,并选择其中绝对值最小的58个参数,并对这58个参数进行置零处理,即将这58个参数的值替换为0。
在本申请的一些实施例中,电子设备可以确定卷积层中每一个卷积核的参数绝对值的总和,优先选择参数绝对值的总和更小的卷积核中的参数并对其进行置零处理。
在一种可能的实现方式中,在卷积层对应的待置零参数的数量不大于该卷积层中的每个卷积核参数数量的情况下,电子设备可以优先选择参数绝对值的总和更小的卷积核,并将该卷积核中的参数按照优先选择绝对值更小的参数的规则,对卷积核所包括的参数进行置零处理。
在一种可能的实现方式中,在卷积层对应的待置零参数的数量不大于该卷积层中的卷积核数量的情况下,电子设备可以优先选择参数绝对值的总和更小的卷积核,并将该卷积核中绝对值最小的一个参数替换为0。可理解,电子设备选择的卷积核的数量与卷积层对应的待置零参数的数量一致。在卷积层对应的待置零参数的数量大于该卷积层中的卷积核数量的情况下,电子设备可以确定平均每一个卷积核对应的待置零参数的数量,并通过进一法对所得的平均每一个卷积核对应的待置零参数的数量进行处理,得到处理后的平均每一个卷积核对应的待置零参数的数量。电子设备可以在Li中的一个卷积层中优先选择参数绝对值的总和更小的卷积核,并在该卷积核中选择绝对值最小的相应数量(即处理后的平均每一个卷积核对应的待置零参数的数量)的参数,将该参数替换为0。可理解,电子设备可以不断对该卷积层中不同卷积核包括的参数进行置零处理,直到已置零参数的数量达到待置零参数的数量,电子设备就可以停止对该卷积层的置零处理。类似的,电子设备可以再对Li中的又一个卷积层进行上述处理。
当然,电子设备还可以通过其他方式对第i次非结构化剪枝卷积层中的参数进行置零处理,本申请对此不作限制。
S304:电子设备对第i次非结构化剪枝后的模型进行训练,并在满足终止训练条件的情况下停止训练,得到第i次非结构化剪枝后的最终模型。
可理解,电子设备可以对置零处理后的模型(即第i次非结构化剪枝后的模型)进行训练,训练时,电子设备可以保持已经置零的参数不再变化,并将若干样本数据输入到该置零处理后的模型中,以及通过损失函数来度量训练过程中的模型的输出与真实输出之前的差值,并不断迭代使得损失函数最小化。在满足终止训练条件的情况下,电子设备可以停止训练,停止训练后的模型即为进行第i次非结构化剪枝后的最终模型。
可理解,上述模型训练的更具体的方式可以参考相关技术文档,本申请不展开说明。
在本申请的一些实施例中,终止训练条件可以包括:训练轮次达到第一目标轮次。训练轮次可以理解为迭代次数。
可理解,电子设备对第i次非结构化剪枝后的模型进行训练的第一目标轮次可以根据实际需求进行设置,本申请对此不作限制。
在一种可能的实现方式中,进行第i次非结构化剪枝之后,Li中的卷积层的稀疏度均相同,在这种情况下,第一目标轮次为这些已进行第i次非结构化剪枝的卷积层当前的稀疏度(即第i次非结构化剪枝卷积层进行第i次非结构化剪枝后的稀疏度)与预设系数的乘积。
在又一种可能的实现方式中,进行第i次非结构化剪枝之后,Li中的卷积层的稀疏度不完全相同,在这种情况下,电子设备可以确定这些已进行第i次非结构化剪枝的卷积层当前的稀疏度的平均值,并确定该平均值与预设系数的乘积为第一目标轮次。
可理解,预设系数可以根据实际需求进行设置,本申请对此不作限制。例如,预设系数可以为10。例如,预设系数可以为30。再例如,预设系数可以为50。
在一种可能的实现方式中,电子设备可以在预设系数范围内确定预设系数。其中,预设系数范围可以根据实际需求进行设置,本申请对此不作限制。例如,预设系数范围可以为[10,50]。
在本申请的一些实施例中,终止训练条件可以包括:损失值(即loss)小于第一预设损失值。
可理解,loss可以指损失函数的值,可以理解为训练时模型的输出与真实输出之间的差别。第一预设损失值可以根据实际需求进行设置,本申请对此不作限制。
在本申请的一些实施例中,终止训练条件可以包括:训练轮次达到第一目标轮次,以及损失值(即loss)小于第一预设损失值。
在本申请的一些实施例中,电子设备可以不执行步骤S304。
S305:电子设备确定第i次非结构化剪枝后的最终模型中已进行非结构化剪枝的卷积层的稀疏度是否均达到目标稀疏度。
可理解,电子设备得到第i次非结构化剪枝后的最终模型之后,可以确定该模型中已进行非结构化剪枝的卷积层的稀疏度是否均达到目标稀疏度。具体地,Li包括m个卷积层,在进行第i次非结构化剪枝之后,电子设备可以确定该m个卷积层的稀疏度是否均达到该m个卷积层对应的目标稀疏度。
S306:电子设备得到非结构化剪枝后的最终模型。
可理解,若电子设备可以确定进行第i次非结构化剪枝后的最终模型中已进行非结构化剪枝的卷积层的稀疏度均达到目标稀疏度,则电子设备不再进行下一次非结构化剪枝,可以得到非结构化剪枝后的最终模型。可理解,第i次非结构化剪枝后的最终模型即为非结构化剪枝后的最终模型。
S307:电子设备将i加1,即i=i+1。
可理解,若电子设备可以确定进行第i次非结构化剪枝后的最终模型中已进行非结构化剪枝的卷积层的稀疏度没有都达到目标稀疏度,则电子设备可以将i加1。即i=i+1。
需要说明的是,如图3所示,在执行步骤S307之后,电子设备可以再次执行步骤S302-步骤S307。
可理解,若进行第i次非结构化剪枝后的最终模型中已进行非结构化剪枝的卷积层的稀疏度未全部达到目标稀疏度,则电子设备可以对进行第i+1次非结构化剪枝的卷积层中的参数进行置零处理,并对该置零处理后的模型进行训练,并且,在满足终止训练条件的情况下停止训练,得到进行第i+1次非结构化剪枝后的模型。类似的,若进行第i+1次非结构化剪枝后的模型中已进行非结构化剪枝的卷积层的稀疏度未全部达到目标稀疏度,在进行第i+1次非结构化剪枝后的模型的基础上,电子设备基于第i+2次非结构化剪枝的稀疏度变化值对进行第i+2次非结构化剪枝的卷积层中的参数进行置零处理。需要说明的是,直到进行非结构化剪枝后的模型中所有已进行非结构化剪枝的卷积层的稀疏度均达到目标稀疏度,电子设备才可以停止非结构化剪枝,此时,电子设备得到非结构化剪枝后的最终模型。可理解,电子设备进行第i+1次非结构化剪枝和进行第i+2次非结构化剪枝的具体实现方式可以参考上文中进行第i次非结构化剪枝的实现方式,在此不再赘述。
在具体实现过程中,在进行第i次非结构化剪枝后的最终模型中存在已进行非结构化剪枝的卷积层的稀疏度未达到目标稀疏度的情况下,在进行第i次非结构化剪枝后的最终模型的基础上,电子设备可以执行步骤S307,并继续进行非结构化剪枝。具体地,电子设备可以确定i=i+1,并继续执行步骤S302-步骤S305。即在i=i+1之后,电子设备可以继续基于第i次非结构化剪枝的稀疏度变化值对第i次非结构化剪枝卷积层中的参数进行置零处理,以及对置零处理后的模型进行训练。
可理解,若电子设备在进行非结构化剪枝之前(如进行第1次非结构化剪枝之前)就确定了每一次进行非结构化剪枝的卷积层和每一次非结构化剪枝的稀疏度变化值,则电子设备确定i=i+1之后,电子设备确定原始模型中的第i次非结构化剪枝卷积层,以及第i次非结构化剪枝的稀疏度变化值指的是:电子设备可以从已确定的每一次进行非结构化剪枝的卷积层和每一次非结构化剪枝的稀疏度变化值中,查找第i次非结构化剪枝卷积层,以及第i次非结构化剪枝的稀疏度变化值。然后,电子设备可以继续执行步骤S303-步骤S305。然而,若电子设备在每一次非结构化剪枝之前确定进行当前这一次非结构化剪枝的卷积层,以及这一次非结构化剪枝对应的稀疏度变化值,则电子设备确定i=i+1之后,电子设备可以直接按照上述步骤S302中提供的方法来确定第i次非结构化剪枝卷积层,以及第i次非结构化剪枝的稀疏度变化值。然后,电子设备可以继续执行步骤S303-步骤S305。
示例性的,i=2,电子设备可以通过上述步骤(如步骤S303和步骤S304)对原始模型进行第2次非结构化剪枝和训练,得到第2次非结构化剪枝后的模型。第2次非结构化剪枝后的模型中已进行非结构化剪枝的卷积层包括卷积层1、卷积层3和卷积层6。其中,卷积层1和卷积层6的稀疏度均已达到目标稀疏度——30%,而卷积层3的稀疏度为28%,其并未达到目标稀疏。电子设备可以在进行第2次非结构化剪枝后的模型的基础上,再进行第3次非结构化剪枝。即电子设备可以基于第3次非结构化剪枝的稀疏度变化值对进行第3次非结构化剪枝的卷积层中的参数进行置零处理。
在本申请的一些实施例中,在i<J的情况下,在进行第i次非结构化剪枝后的最终模型的基础上,电子设备可以确定i=i+1,并继续执行步骤S303和步骤S304。即电子设备可以基于第i次非结构化剪枝的稀疏度变化值对第i次非结构化剪枝卷积层中的参数进行置零处理,以及对置零处理后的模型进行训练。
示例性的,i=1,电子设备可以通过上述步骤(如步骤S303和步骤S304)对原始模型进行第1次非结构化剪枝和训练,得到第1次非结构化剪枝后的模型。因为J=6,即i<6,则电子设备可以在进行第1次非结构化剪枝后的模型的基础上,再进行第2次非结构化剪枝。即电子设备可以基于第2次非结构化剪枝的稀疏度变化值对进行第2次非结构化剪枝的卷积层中的参数进行置零处理。在具体实现过程中,在J=6且i<6的情况下,电子设备可以确定i=2,并且在进行第1次非结构化剪枝后的模型的基础上,电子设备再基于第i(即2)次非结构化剪枝的稀疏度变化值对第i次非结构化剪枝卷积层中的参数进行置零处理。即电子设备再进行第i次非结构化剪枝。
可选的,电子设备执行步骤S301之后,还可以基于原始模型中所有待进行非结构化剪枝的卷积层(即非结构化剪枝卷积层)和目标稀疏度,确定原始模型中的第i次非结构化剪枝卷积层,以及第i次非结构化剪枝的稀疏度。其中,第i次非结构化剪枝的稀疏度指的是进行第i次非结构化剪枝之后相应卷积层的稀疏度。并且,电子设备还可以基于第i次非结构化剪枝的稀疏度对第i次非结构化剪枝卷积层中的参数进行置零处理。
为了便于描述,本申请将第i次非结构化剪枝后的稀疏度记为Di。根据上文,电子设备总共进行的非结构化剪枝的次数为J。则电子设备总共进行的J次非结构化剪枝后的稀疏度分别为D1,D2,…,Di,…,DJ。可理解,Di的范围为[0,1],也可以表示为[0,100%]。结合上文对目标稀疏度(即S)的相关描述,Di的范围可以为[0,S]。可理解,DJ=S。
对于每一个进行非结构化剪枝的卷积层(即L所包括的每一个卷积层)来说,在该卷积层的参数的初始值均不为0的情况下,k1+k2+…+ki=Di;而在该卷积层的参数的初始值不完全为0的情况下,该卷积层的初始稀疏度+k1+k2+…+ki=Di。也就是说,在L所包括的卷积层y的参数的初始值均为0的情况下,k1+k2+…+ki=Di。而在L所包括的卷积层y的参数的初始值不为0的情况下,卷积层y的初始稀疏度+k1+k2+…+ki=Di。其中,Di指的是卷积层y进行第i次非结构化剪枝后的稀疏度。ki指的是卷积层y对应的进行第i次非结构化剪枝的稀疏度变化值。
可理解,Di与i正相关。在本申请的一些实施例中,随着i的增大,Di线性增长。
在本申请的一些实施例中,电子设备进行第i次非结构化剪枝时,可以按照优先选择绝对值更小的参数的规则,对卷积层所包括的参数进行选择(如步骤S303),然后再对这些参数进行置零处理,直到卷积层的稀疏度达到Di
在本申请的一些实施例中,电子设备进行第i次非结构化剪枝时,可以确定卷积层中每一个卷积核的参数绝对值的总和,并优先选择参数绝对值的总和更小的卷积核中的参数(如步骤S303),然后再对这些参数进行置零处理,直到卷积层的稀疏度达到Di
可理解,上述进行非结构化剪枝的具体描述可以参考上文,本申请在此不再赘述。
可选的,原始模型中进行非结构化剪枝的卷积层对应的目标稀疏度可以不相同,也可以相同。
可选的,电子设备可以在进行第1次非结构化剪枝之前就确定总共进行的J次非结构化剪枝的稀疏度变化值。后续过程中,电子设备可以直接基于确定的J次非结构化剪枝的稀疏度变化值来进行J次非结构化剪枝。
可选的,电子设备还可以在进行每一次非结构化剪枝之前确定这一次非结构化剪枝的稀疏度变化值。
下面介绍本申请提供的一种神经网络模型处理方法。
请参阅图4,图4为本申请实施例提供的一种神经网络模型处理方法的流程图。该方法可以包括但不限于以下步骤:
S401:电子设备可以确定原始模型中的结构化剪枝卷积层,以及结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数。结构化剪枝卷积层为针对结构化剪枝原始模型中对应修剪的卷积层。
可理解,结构化剪枝卷积层指的是:针对结构化剪枝,原始模型中对应修剪的卷积层。在进行结构化剪枝之前,结构化剪枝卷积层可以理解为待进行结构化剪枝的卷积层,也可以理解为需要进行结构化剪枝的卷积层。结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数不超过该相应卷积层包括的卷积核总数。
可理解,电子设备确定原始模型中的结构化剪枝卷积层的具体方式可以参考步骤S301中给出的电子设备确定非结构化剪枝卷积层的方式。例如,电子设备可以从原始模型中的卷积层中任意选择一定数量的卷积层作为结构化剪枝卷积层。例如,电子设备可以优先选择重要性更小的卷积层作为结构化剪枝卷积层。再例如,电子设备可以优先选择参数数量更多的卷积层作为结构化剪枝卷积层。
当然,电子设备还可以通过其他方式确定原始模型中的结构化剪枝卷积层,本申请对此不作限制。
为了便于描述,本申请将结构化剪枝卷积层记为C,将结构化剪枝卷积层对应待修剪的总卷积核数记为H。可理解,C可以包括k个卷积层。该k个卷积层均为原始模型中的卷积层。H可以包括C包括的每一个卷积层分别对应待修剪的总卷积核数。即H可以包括该k个卷积层分别对应待修剪的卷积核数。即H=[H1,H2,…,Hk]。其中,H1、H2和Hk等表示的是C中的k个卷积层分别对应待修剪的总卷积核数。
在本申请的一些实施例中,电子设备可以根据硬件平台的属性来确定C包括的k个卷积层分别对应待修剪的总卷积核数。具体地,电子设备可以根据硬件平台的通道对齐方式来确定C包括的k个卷积层分别对应待修剪的总卷积核数。可理解,C包括的k个卷积层分别对应待修剪的总卷积核数可以相同,也可以不同。
具体地,在硬件平台的通道对齐方式为w通道对齐的情况下,电子设备可以确定原始模型包括的k个卷积层分别对应的卷积核数与C包括的k个卷积层分别对应待修剪的总卷积核数的差值均为w的倍数。也就是说,电子设备基于该C包括的k个卷积层分别对应待修剪的总卷积核数对原始模型中的k个卷积层进行修剪之后,修剪后的k个卷积层包括的卷积核数为w的倍数。w为正整数。需要说明的是,硬件平台的通过对齐方式为w通道对齐指的是:对于卷积核数量为w×(a+1)的卷积层和卷积核数量为w×a+b的卷积层来说在,硬件平台的性能收益是一样的。其中,a和b均为正整数,且b小于w。也就是说,包含卷积核数量为w×(a+1)的卷积层的模型和包含卷积核数量为w×a+b的卷积层的模型部署在该硬件平台上时,模型的推理速度是一样的。
在本申请的一些实施例中,原始模型包括的结构化剪枝卷积层中每一个卷积层的卷积核数(即修剪前的卷积核数)均为w的倍数,则结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数均为w的倍数。即H包括的元素(例如,H1、H2和Hk等)均为w的倍数。
例如,w可以为32。在硬件平台的通道对齐方式为32通道对齐的情况下,电子设备可以确定结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数均为32的倍数。也就是说,C包括的k个卷积层分别对应待修剪的总卷积核数均为32的倍数。即H包括的元素均为32的倍数。
示例性的,原始模型可以包括8层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5、卷积层6、卷积层7和卷积层8。其中,卷积层2、卷积层4和卷积层8为结构化剪枝卷积层。电子设备可以确定卷积层2、卷积层4和卷积层8对应待修剪的总卷积核数均为32。在另一个示例中,电子设备可以确定卷积层2和卷积层4对应待修剪的总卷积核数为32,而卷积层8对应待修剪的总卷积核数为64。
例如,w可以为16。在硬件平台的通道对齐方式为16通道对齐的情况下,电子设备可以确定结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数均为16的倍数。也就是说,C包括的k个卷积层分别对应待修剪的总卷积核数均为16的倍数。即H包括的元素均为16的倍数。
示例性的,原始模型可以包括6层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5和卷积层6。其中,卷积层1、卷积层2和卷积层5为结构化剪枝卷积层。电子设备可以确定卷积层1、卷积层2和卷积层5对应待修剪的总卷积核数均为32。在另一个示例中,电子设备可以确定卷积层1对应待修剪的总卷积核数为16,卷积层2对应待修剪的总卷积核数为32,卷积层5对应待修剪的总卷积核数为64。
在本申请的一些实施例中,电子设备可以以结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数均不超过相应卷积层包括的所有卷积核数的e%(即C包括的k个卷积层分别对应待修剪的总卷积核数不超过该k个卷积层分别包括的卷积核数的e%)为规则,确定结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数。
可理解,e的具体数值可以根据实际需求进行设置,本申请对此不作限制。e的范围可以为(0,100)。例如,e=50。
在本申请的一些实施例中,电子设备可以任意确定结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数。即电子设备可以任意确定C包括的k个卷积层分别对应待修剪的总卷积核数。C包括的k个卷积层分别对应待修剪的总卷积核数不超过原始模型中该k个卷积层分别包括的卷积核数。
当然,电子设备还可以通过其他方式来确定结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数,本申请对此不作限制。
可理解,结构化剪枝卷积层可以指上文所提及的预设待修剪卷积层。结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数可以指上文所提及的预设待修剪数量。
S402:电子设备确定第n次结构化剪枝卷积层,以及第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。第n次结构化剪枝卷积层为针对第n次结构化剪枝原始模型中对应修剪的卷积层。n为正整数。
可理解,电子设备可以确定原始模型中进行第n次结构化剪枝时需要修剪的卷积层,即第n次结构化剪枝卷积层,以及第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝对应待修剪的卷积核数。
在本申请的一些实施例中,第n次结构化剪枝卷积层包括的一个或多个卷积层分别对应待修剪的总卷积核数等于第n次结构化剪枝卷积层包括的该一个或多个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。
需要说明的是,第n次结构化剪枝卷积层为结构化剪枝卷积层中的部分或全部卷积层。
优选地,第n次结构化剪枝卷积层为结构化剪枝卷积层中的部分卷积层。在这种情况下,n的最大值大于1,电子设备可以对原始模型进行多次结构化剪枝。这样可以控制单次结构化剪枝力度,避免因一次剪枝力度太大而造成模型效果的回退。
在一种可能的实现方式中,第n次结构化剪枝卷积层与结构化剪枝卷积层相同。在这种情况下,n=1,电子设备只对原始模型进行一次结构化剪枝。
为了便于描述,本申请将第n次结构化剪枝卷积层记为Cn,将第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数记为h-n。可理解,Cn可以包括m个卷积层。该m个卷积层可以为上文所提及的k个卷积层中的卷积层。其中,m为正整数,且m不大于k。h-n可以包括Cn包括的每一个卷积层分别对应待修剪的卷积核数。即h-n可以包括该m个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。即h-n=[h-n-1,h-n-2,…,h-n-m]。其中,h-n-1、h-n-2和h-n-m等表示的是Cn中的m个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。根据上文,H=[H1,H2,...,Hk]。可理解,H1和h-n-1分别表示的是同一个卷积层进行结构化剪枝对应待修剪的总卷积核数,以及进行第n次结构化剪枝对应待修剪的卷积核数。类似的,H2和h-n-2分别表示的是同一个卷积层进行结构化剪枝对应待修剪的总卷积核数,以及进行第n次结构化剪枝对应待修剪的卷积核数。
可理解,Cn包括的m个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数不超过该m个卷积层分别对应待修剪的总卷积核数。也就是说,第n次结构化剪枝卷积层中的某一个卷积层针对第n次结构化剪枝对应待修剪的卷积核数不超过这一个卷积层对应修改的总卷积核数。
示例性的,结构化剪枝卷积层包括卷积层1、卷积层2、卷积层3、卷积层5和卷积层6。这6层卷积层对应待修剪的总卷积核数分别为32、32、64、32和32。第n次结构化剪枝卷积层包括卷积层1、卷积层2和卷积层3。卷积层1针对第n次结构化剪枝对应待修剪的卷积核数为16,卷积层2针对第n次结构化剪枝对应待修剪的卷积核数为20,卷积层3针对第n次结构化剪枝对应待修剪的卷积核数为32。
为了便于描述,本申请将电子设备总共进行的结构化剪枝的次数记为P。也就是说,电子设备对原始模型进行了P次结构化剪枝。其中,P为不小于n的正整数。可理解,电子设备可以预先设置总共进行结构化剪枝的次数,也可以不必预先设置总共进行结构化剪枝的次数。
需要说明的是,每一次进行结构化剪枝的卷积层的并集与结构化剪枝卷积层相同。也就是说,Cn的并集=C。其中,n为不大于P的正整数。即C1∪…∪Cn∪…∪CP=C。并且,结构化剪枝卷积层包括的每一个卷积层分别针对每一次进行结构化剪枝对应待修剪的卷积核数之和等于结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数。即C包括的k个卷积层分别针对每一次结构化剪枝对应待修剪的卷积核数之和等于该k个卷积层分别对应的总卷积核数。也就是说,H1=h-1-1+h-2-1+…+h-n-1+…+h-P-1。类似的,H2=h-1-2+h-2-2+…+h-n-2+…+h-P-2。在此以H1和H2为例进行说明,结构化剪枝卷积层包括的其他卷积层对应待修剪的卷积核数可以参考H1和H2的相关描述,本申请中不再赘述。
可理解,在满足上述条件(即C1∪…∪Cn∪…∪CP=C,以及C包括的k个卷积层分别针对每一次结构化剪枝对应待修剪的卷积核数之和等于该k个卷积层分别对应的总卷积核数)的情况下,电子设备可以确定Cn,以及Cn包括的m个卷积层针对第n次结构化剪枝对应待修剪的卷积核数。
可选的,电子设备可以在进行第1次结构化剪枝之前就确定总共进行的P次结构化剪枝分别需要修剪的卷积层(即C1,...,Cn,...,CP),以及这些卷积层针对每一次结构化剪枝分别对应待修剪的卷积核数。后续过程中,电子设备可以直接基于确定的P次结构化剪枝分别需要修剪的卷积层,以及这些卷积层针对每一次结构化剪枝对应待修剪的卷积核数,来进行P次结构化剪枝。例如,P=3。电子设备可以在进行第1次结构化剪枝之前确定C1、C2和C3,以及C1包括的每一个卷积层针对第1次结构化剪枝分别对应待修剪的卷积核数、C2包括的每一个卷积层针对第2次结构化剪枝分别对应待修剪的卷积核数和C3包括的每一个卷积层针对第3次结构化剪枝分别对应待修剪的卷积核数。
可选的,电子设备还可以在进行每一次结构化剪枝之前确定这一次结构化剪枝需要修剪的卷积层,以及这些卷积层针对这一次结构化剪枝分别对应待修剪的卷积核数。例如,电子设备可以在进行第1次结构化剪枝之前确定C1,以及C1包括的每一个卷积层针对第1次结构化剪枝分别对应待修剪的卷积核数。再例如,电子设备可以在进行第1次结构化剪枝之后,进行第2次结构化剪枝之前,确定C2,以及C2包括的每一个卷积层针对第1次结构化剪枝分别对应待修剪的卷积核数。
在本申请的一些实施例中,电子设备可以确定每一次结构化剪枝修剪的卷积层均为结构化剪枝卷积层包括的所有卷积层。即Cn=C。在这种情况下,C包括的k个卷积层均会进行P次结构化剪枝。
在本申请的一些实施例中,每一次结构化剪枝修剪的卷积层不完全相同。在这种情况下,C包括的k个卷积层中的部分或全部卷积层进行结构化剪枝的次数小于P。
在一种可能的实现方式中,电子设备可以确定结构化剪枝卷积层包括的一个卷积层(即C包括的k个卷积层中的一个卷积层)在每一次进行结构化剪枝时对应待修剪的卷积核数相等。例如,h-1-1=h-2-1=…=h-n-1=…=h-P-1。在这种情况下,该k个卷积层中的不同卷积层每一次进行结构化剪枝时对应待修剪的卷积核数不一定相等。
示例性的,原始模型可以包括8层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5、卷积层6、卷积层7和卷积层8。电子设备可以确定C包括卷积层2、卷积层4、卷积层5、卷积层6和卷积层8,并且Cn=C。即每一次进行结构化剪枝修剪的卷积层均为全部结构化剪枝卷积层(即C包括的k个卷积层)。电子设备还可以确定H=[32,...,32]。即结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数均为32。电子设备可以确定卷积层2、卷积层4、卷积层5、卷积层6和卷积层8每一次进行结构化剪枝时对应修剪的卷积核数为4。可理解,电子设备总共需进行8次结构化剪枝。
示例性的,原始模型可以包括8层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5、卷积层6、卷积层7和卷积层8。电子设备可以确定C包括卷积层2、卷积层4、卷积层5、卷积层6和卷积层8,H=[H1,H2,H3,H4,H5]。其中,H1为卷积层2对应待修剪的总卷积核数,H2为卷积层4对应待修剪的总卷积核数,H3为卷积层5对应待修剪的总卷积核数,H4为卷积层6对应待修剪的总卷积核数,H5为卷积层8对应待修剪的总卷积核数。具体地,电子设备可以确定H1=H2=H4=32,H3=H5=64。即H=[32,32,64,32,64]。电子设备还可以确定C1包括卷积层2、卷积层4、卷积层5和卷积层8,C2包括卷积层5、卷积层6和卷积层8,C3包括卷积层2、卷积层4、卷积层5、卷积层6和卷积层8,C4包括卷积层4、卷积层5、卷积层6和卷积层8,C5包括卷积层2、卷积层5和卷积层8,C6包括卷积层2、卷积层4、卷积层5、卷积层6和卷积层8,C7包括卷积层5和卷积层8,C8包括卷积层5和卷积层6。电子设备可以确定h-1=[h-1-1,h-1-2,h-1-3,h-1-5]。其中,h-1-1为卷积层2针对第1次结构化剪枝对应待修剪的卷积核数,h-1-2为卷积层4针对第1次结构化剪枝对应待修剪的卷积核数,h-1-3为卷积层5针对第1次结构化剪枝对应待修剪的卷积核数,h-1-5为卷积层8针对第1次结构化剪枝对应待修剪的卷积核数。电子设备可以确定h-2=[h-2-3,h-2-4,h-2-5]。其中,h-2-3为卷积层5在针对第2次结构化剪枝对应待修剪的卷积核数,h-2-4为卷积层6针对第2次结构化剪枝对应待修剪的卷积核数,h-2-5为卷积层8针对第2次结构化剪枝对应待修剪的卷积核数。电子设备可以确定h-3=[h-3-1,h-3-2,h-3-3,h-3-4,h-3-5]。其中,h-3-1为卷积层2针对第3次结构化剪枝对应待修剪的卷积核数,h-3-2为卷积层4针对第3次结构化剪枝对应待修剪的卷积核数,h-3-3为卷积层5针对第3次结构化剪枝对应待修剪的卷积核数,h-3-4为卷积层6针对第3次结构化剪枝对应待修剪的卷积核数,h-3-5为卷积层8针对第3次结构化剪枝对应待修剪的卷积核数。电子设备可以确定h-4=[h-4-2,h-4-3,h-4-4,h-4-5]。其中,h-4-2为卷积层4针对第4次结构化剪枝对应待修剪的卷积核数,h-4-3为卷积层5针对第4次结构化剪枝对应待修剪的卷积核数,h-4-4为卷积层6针对第4次结构化剪枝对应待修剪的卷积核数,h-4-5为卷积层8针对第4次结构化剪枝对应待修剪的卷积核数。电子设备可以确定h-5=[h-5-1,h-5-3,h-5-5]。其中,h-5-1为卷积层2针对第5次结构化剪枝对应待修剪的卷积核数,h-5-3为卷积层5针对第5次结构化剪枝对应待修剪的卷积核数,h-5-5为卷积层8针对第5次结构化剪枝对应待修剪的卷积核数。电子设备可以确定h-6=[h-6-1,h-6-2,h-6-3,h-6-4,h-6-5]。其中,h-6-1为卷积层2针对第6次结构化剪枝对应待修剪的卷积核数,h-6-2为卷积层4针对第6次结构化剪枝对应待修剪的卷积核数,h-6-3为卷积层5针对第6次结构化剪枝对应待修剪的卷积核数,h-6-4为卷积层6针对第6次结构化剪枝对应待修剪的卷积核数,h-6-5为卷积层8针对第6次结构化剪枝对应待修剪的卷积核数。电子设备可以确定h-7=[h-7-3,h-7-5]。其中,h-7-3为卷积层5针对第7次结构化剪枝对应待修剪的卷积核数,h-7-5为卷积层8针对第7次结构化剪枝对应待修剪的卷积核数。电子设备可以确定h-8=[h-8-3,h-8-5]。其中,h-8-3为卷积层5针对第8次结构化剪枝对应待修剪的卷积核数,h-7-5为卷积层8针对第8次结构化剪枝对应待修剪的卷积核数。
示例性的,在上述情况下,电子设备可以确定h-1-1=h-3-1=h-5-1=h-6-1=8,h-1-2=h-3-2=h-4-2=h-6-2=8,h-1-3=h-2-3=h-3-3=h-4-3=h-5-3=h-6-3=h-7-3=h-8-3=8,h-2-4=h-3-4=h-4-4=h-6-4=8,h-1-5=h-2-5=h-3-5=h-4-5=h-5-5=h-6-5=h-7-5=h-8-5==8。
示例性的,在上述情况下,电子设备可以确定卷积层2针对每一次结构化剪枝对应待修剪的卷积核数分别为:h-1-1=10,h-3-1=10,h-5-1=6,h-6-1=6,h-1-2=12,卷积层4针对每一次结构化剪枝对应待修剪的卷积核数分别为:h-3-2=6,h-4-2=6,h-6-2=8,卷积层5针对每一次结构化剪枝对应待修剪的卷积核数分别为:h-1-3=7,h-2-3=9,h-3-3=8,h-4-3=8,h-5-3=10,h-6-3=5,h-7-3=8,h-8-3=9,卷积层6针对每一次结构化剪枝对应待修剪的卷积核数分别为:h-2-4=5,h-3-4=7,h-4-4=12,h-6-4=8,卷积层8针对每一次结构化剪枝对应待修剪的卷积核数分别为:h-1-5=7,h-2-5=5,h-3-5=10,h-4-5=10,h-5-5=8,h-6-5=9,h-7-5=8,h-8-5=7。
可理解,上文提及的卷积层针对第n次结构化剪枝对应待修剪的卷积核数并不是指卷积层针对其进行的所有结构化剪枝中的第n次结构化剪枝对应待修剪的卷积核数,而是指卷积层针对电子设备对原始模型进行的所有结构化剪枝中的第n次结构化剪枝对应待修剪的卷积核数。例如,卷积层8针对第4次结构化剪枝对应待修剪的卷积核数指的是:针对电子设备对原始模型进行的第4次结构化剪枝,卷积层8对应待修剪的卷积核数。
在一种可能的实现方式中,电子设备可以确定结构化剪枝卷积层中的一个卷积层针对若干次结构化剪枝对应待修剪的卷积核数之间的差值不超过预设差值。例如,C包括的k个卷积层中的某一个卷积层针对P次结构化剪枝所对应待修剪的卷积核数之间的差值不超过预设差值。
在一种可能的实现方式中,电子设备可以确定结构化剪枝卷积层包括的每一个卷积层针对第1次结构化剪枝分别对应的初始待修剪卷积核数,在后续结构化剪枝过程中,电子设备可以在初始待修剪卷积核数的基础上逐渐增加针对每一次结构化剪枝对应待修剪的卷积核数。
可理解,电子设备可以采取上述方式来确定h-n。当然,电子设备还可以通过其他方式确定结构化剪枝卷积层包括的每一个卷积层针对每一次结构化剪枝对应待修剪的卷积核数(包括确定h-n),本申请对此不作限制。
需要说明的是,结构化剪枝卷积层包括的不同卷积层针对每一次结构化剪枝对应待修剪的卷积核数不一定相等。电子设备可以采取相同或不同的方法确定结构化剪枝卷积层包括的每一个卷积层针对每一次结构化剪枝对应待修剪的卷积核数。
S403:电子设备对第n次结构化剪枝卷积层进行非结构化剪枝。
具体地,在对第n次结构化剪枝卷积层进行结构化剪枝之前,电子设备可以对其进行非结构化剪枝,即电子设备可以对进行第n次结构化剪枝时需修剪的卷积层首先进行非结构化剪枝。电子设备可以基于第n次结构化剪枝卷积层和目标稀疏度,确定第i次非结构化剪枝卷积层和第i次非结构化剪枝的稀疏度变化值,并基于该第i次非结构化剪枝的稀疏度变化值对第i次非结构化剪枝卷积层中的参数进行置零处理。具体地,电子设备可以分别将Cn中的m个卷积层包括的参数总数乘以该第i次非结构化剪枝的稀疏度变化值,得到第一待置零参数数量。第一待置零参数数量包括该m个卷积层针对所述第i次非结构化剪枝所对应的待置零参数的数量。第一待置零参数数量可以包括Zr。Zr为该m个卷积层中第r个卷积层针对第i次非结构化剪枝所对应的待置零参数的数量。其中,r为不大于m的正整数。电子设备还可以对该m个卷积层中第r个卷积层的Zr个参数进行置零处理,得到第i次非结构化剪枝后的模型。其中,Zr个参数为第r个卷积层中排序前Zr个的参数。该排序指的是第r个卷积层的参数按绝对值按由小到大的顺序排序。
可理解,电子设备基于第n次结构化剪枝卷积层和目标稀疏度确定第i次非结构化剪枝卷积层和第i次非结构化剪枝的稀疏度变化值的具体实现方式可以参考步骤S302。可理解,电子设备可以执行步骤S303-步骤S307。并且,电子设备在执行步骤S307之后,还可以继续基于第n次结构化剪枝卷积层和目标稀疏度,确定第i次非结构化剪枝卷积层和第i次非结构化剪枝的稀疏度变化值。非结构化剪枝的相关描述可以参考上文(如图3的相关描述,以及步骤S302-步骤S307),在此不再赘述。
值得注意的是,电子设备在进行第n次结构化剪枝之前,可以对进行第n次结构化剪枝时需修剪的卷积层(即第n次结构化剪枝卷积层)进行若干次非结构化剪枝,直到满足相应条件(例如,第n次结构化剪枝卷积层的稀疏度均达到目标稀疏度)才得到非结构化剪枝后的模型。在后续过程中,电子设备可以对非结构化剪枝后的模型进行结构化剪枝。
可理解,电子设备在进行每一次结构化剪枝之前,均可以对这一次结构化剪枝时需要修剪的卷积层进行若干次非结构化剪枝。
S404:电子设备基于第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数,对第n次结构化剪枝卷积层中的卷积核进行修剪,得到第n次结构化剪枝后的模型。
可理解,对于第n次结构化剪枝卷积层包括的每一个卷积层来说,电子设备可以找到该卷积层针对第n次结构化剪枝对应待修剪的卷积核数,并在该卷积层中选择相应数量(即该卷积层对应待修剪的卷积核数)的卷积核进行修剪。具体地,电子设备可以从h-n中找到Cn中的第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应修剪的卷积核数,并从第n次结构化剪枝卷积层中的每一个卷积层包括的卷积核中选择相应数量(即该卷积层对应修剪的卷积核数)的卷积核,将这些卷积核修剪掉,并得到第n次结构化剪枝后的模型。可理解,非结构化剪枝中的修剪指的是置零参数值,结构化剪枝中的修剪指的是移除,而非替换参数值。
示例性的,原始模型可以包括6层卷积层——卷积层1、卷积层2、卷积层3、卷积层4、卷积层5和卷积层6。Cn包括卷积层2和卷积层6。电子设备可以从h-n中找到与卷积层2和卷积层6针对第1次结构化剪枝对应待修剪的卷积核数分别为12和8。电子设备可以从卷积层2包括的卷积核中选择12个卷积核,并移除(即去除)选择的12个卷积核,以及从卷积层6包括的卷积核中选择8个卷积核,并移除选择的8个卷积核。
在本申请的一些实施例中,电子设备可以根据卷积核中参数绝对值总和由小到大进行修剪。也就是说,电子设备在第n次结构化剪枝卷积层包括的每一个卷积层中选择相应数量的卷积核时,优先选择参数绝对值总和更小的卷积核进行修剪。
可理解,Cn包括的m个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数中包括Ur。其中,Ur为针对第n次结构化剪枝该m个卷积层中第r个卷积层对应待修剪的卷积核数。r为不大于m的正整数。在对第n次结构化剪枝卷积层包括的卷积层(即Cn包括的m个卷积层)进行若干次非结构化剪枝之后,电子设备可以去除该m个卷积层中第r个卷积层的Ur个卷积核。该Ur个卷积核为该第r个卷积层中排序前Ur个的卷积核。该排序指的是该第r个卷积层的卷积核按参数绝对值总和由小到大的顺序进行排序。
示例性的,原始模型中的卷积层3为进行第n次结构化剪枝时需修剪的卷积层(即Cn包括卷积层3)。卷积层3包括2个卷积核——卷积核1和卷积核2。其中,卷积核1包括的参数分别为9、9和10,而卷积核2包括的参数分别为8、8和20。在对卷积层3进行非结构化剪枝时需对卷积层3中绝对值最小的2个参数进行置零处理。因此,非结构化剪枝之后,卷积层3中的卷积核1包括的参数为9、9和10,而卷积核2包括的参数为20、0和0。在后续结构化剪枝过程中,卷积层3对应修剪的卷积核数为1,即电子设备需要移除卷积层3中的1个卷积核。由于卷积核1中参数绝对值总和为28,卷积核2中参数绝对值总和为20,则电子设备可以移除卷积层3中参数绝对值总和最小的卷积核,即卷积核2。
在本申请的一些实施例中,电子设备可以在第n次结构化剪枝卷积层中选择对模型损失影响更小的卷积核来进行修剪。例如,电子设备可以通过最小化特征重建误差来确定需要修剪的卷积核,具体方式可以参考相关技术文档,本申请不展开说明。
在本申请的一些实施例中,电子设备可以在第n次结构化剪枝卷积层中选择对特征输出的可重建性影响更小的卷积核来进行修剪。具体方式可以参考相关技术文档,本申请不展开说明。
当然,电子设备还可以通过其他方式来选择修剪的卷积核,本申请对此不作限制。
S405:电子设备对第n次结构化剪枝后的模型进行训练,并得到第n次结构化剪枝后的最终模型。
可理解,电子设备可以训练进行第n次结构化剪枝后的模型(即电子设备执行步骤S404所得到的模型)。训练时,电子设备可以将若干样本数据输入到该模型中,并通过损失函数来度量训练过程中模型的输出与真实输出之间的差值,并不断迭代使得损失函数收敛,从而得到第n次结构化剪枝后的最终模型。
可理解,上述模型训练的更具体的方式可以参考相关技术文档,本申请不展开说明。
在本申请的一些实施例中,电子设备可以不执行步骤S405。
S406:电子设备确定第n次结构化剪枝后的最终模型中已进行结构化剪枝的卷积层是否为结构化剪枝卷积层包括的所有卷积层。
可理解,进行第n次结构化剪枝并对第n次结构化剪枝后的模型进行训练后,电子设备可以确定第n次结构化剪枝后的最终模型中已进行结构化剪枝的卷积层是否为结构化剪枝卷积层包括的所有卷积层。即电子设备可以确定C包括的k个卷积层是否都进行了结构化剪枝。
S407:电子设备确定结构化剪枝卷积层包括的每一个卷积层已修剪的卷积核数是否分别等于结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数。
可理解,在第n次结构化剪枝后的最终模型中已进行结构化剪枝的卷积层为结构化剪枝卷积层(即C包括的k个卷积层均进行结构化剪枝)的情况下,电子设备可以确定结构化剪枝卷积层包括的每一个卷积层分别已修剪的卷积核数是否等于结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数(即该k个卷积层已修剪的卷积核数是否分别等于该k个卷积层对应待修剪的总卷积核数)。可理解,该k个卷积层对应待修剪的总卷积核数指的是该k个卷积层针对结构化剪枝对应待修剪的卷积核数。
S408:电子设备得到结构化剪枝后的最终模型。
可理解,若电子设备确定第n次结构化剪枝后的最终模型中已进行结构化剪枝的卷积层为结构化剪枝卷积层包括的所有卷积层,并且结构化剪枝卷积层包括的每一个卷积层已修剪的卷积核数分别等于结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数,则电子设备不再进行下一次结构化剪枝,可以得到结构化剪枝后的最终模型。在这种情况下,第n次结构化剪枝后的最终模型即为结构化剪枝后的最终模型。
S409:电子设备将n加1,即n=n+1。
可理解,若电子设备确定第n次结构化剪枝后的最终模型中已进行结构化剪枝的卷积层并不为结构化剪枝卷积层包括的所有卷积层,即C包括的k个卷积层并未都进行了结构化剪枝,则电子设备可以将n加1,即n=n+1,并继续执行步骤S402-步骤S409。若电子设备确定第n次结构化剪枝后的最终模型中已进行结构化剪枝的卷积层为结构化剪枝卷积层包括的所有卷积层,但是结构化剪枝卷积层包括的每一个卷积层已修剪的卷积核数并不分别等于结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数,即C包括的k个卷积层都进行了结构化剪枝,但该k个卷积层已修剪的卷积核数并不分别等于该k个卷积层对应待修剪的总卷积核数,则电子设备可以将n加1,即n=n+1,并继续执行步骤S402-步骤S409。
可理解,进行第n次结构化剪枝之后,若C包括的k个卷积层已修剪的卷积核数并不分别等于该k个卷积层对应待修剪的总卷积核数,则电子设备可以继续进行第n+1次结构化剪枝,并且对该结构化剪枝后的模型进行训练,得到第n+1次结构化剪枝后的最终模型。类似的,进行第n+1次结构化剪枝之后,若C包括的k个卷积层已修剪的卷积核数仍然不分别等于该k个卷积层对应待修剪的总卷积核数,则电子设备可以继续进行第n+2次结构化剪枝,并且对该结构化剪枝后的模型进行训练,得到第n+2次结构化剪枝后的最终模型。需要说明的是,直到C包括的k个卷积层已修剪的卷积核数分别等于该k个卷积层对应待修剪的总卷积核数,电子设备可以停止结构化剪枝,此时,电子设备可以得到结构化剪枝后的最终模型。值得注意的是,电子设备进行结构化剪枝之前,还可以进行非结构化剪枝。可理解,电子设备进行第n+1次结构化剪枝和进行第n+2次结构化剪枝的具体实现方式可以参考上文中进行第n次结构化剪枝的实现方式(具体可以参考步骤S402-步骤S405),在此不再赘述。
在具体实现过程中,若C包括的k个卷积层并未都进行了结构化剪枝,则电子设备可以将n加1,即n=n+1,并继续执行步骤S402-步骤S409。即在n=n+1之后,电子设备可以继续基于第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数,对第n次结构化剪枝卷积层中的卷积核进行修剪,得到第n次结构化剪枝后的模型,以及对该第n次结构化剪枝后的模型进行训练。
在本申请的一些实施例中,若n<P,则电子设备可以继续进行第n+1次结构化剪枝,并且对该结构化剪枝后的模型进行训练,得到第n+1次结构化剪枝后的最终模型。类似的,若n+1<P,则电子设备可以继续进行第n+2次结构化剪枝,并且对该结构化剪枝后的模型进行训练,得到第n+2次结构化剪枝后的最终模型。需要说明的是,电子设备对原始模型中的结构化剪枝卷积层均完成相应数量卷积核的修剪(即C包括的k个卷积层已修剪的卷积核数分别等于该k个卷积层对应待修剪的卷积核数)之后,电子设备可以不再进行结构化剪枝。
具体实现过程中,若n<P,则电子设备可以将n加1,即n=n+1,并继续执行步骤S402-步骤S409。即在n=n+1之后,电子设备可以继续基于第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数,对第n次结构化剪枝卷积层中的卷积核进行修剪,得到第n次结构化剪枝后的模型,以及对该第n次结构化剪枝后的模型进行训练。
示例性的,电子设备总共需对原始模型进行5次结构化剪枝(即P=5)。在n=1的情况下,电子设备可以进行第1次结构化剪枝。在进行第1次结构化剪枝之后,电子设备可以确定未完成结构化剪枝。可理解,在结构化剪枝卷积层包括的每一个卷积层中移除的卷积核数未分别达到结构化剪枝卷积层包括的每一个卷积层对应待修剪的总卷积核数的情况下,电子设备可以确定未完成结构化剪枝。另外,在n<P的情况下,电子设备可以确定未完成结构化剪枝。在电子设备确定未完成结构化剪枝之后,电子设备可以确定n=1+1=2,并执行步骤S402-步骤S405,从而完成第2次结构化剪枝。类似的,在进行第2次结构化剪枝之后,若电子设备确定未完成结构化剪枝,则电子设备可以确定n=2+1=3,并执行步骤S402-步骤S405从而完成第3次结构化剪枝。可理解,在进行第5次结构化剪枝之后,电子设备可以确定已完成结构化剪枝,并不再进行结构化剪枝。
可理解,若电子设备在进行结构化剪枝之前(如进行第1次结构化剪枝之前)就确定每一次结构化剪枝需要修剪的卷积层和每一次结构化剪枝时相应卷积层对应修剪的卷积核数(即总共进行的P次结构化剪枝分别需要修剪的卷积层,以及这些卷积层在每一次结构化剪枝时对应修剪的卷积核数),则电子设备确定n=n+1之后,电子设备确定第n次结构化剪枝卷积层,以及第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数指的是:电子设备可以从已确定的每一次结构化剪枝需要修剪的卷积层和每一次结构化剪枝时相应卷积层对应修剪的卷积核数中,查找第n次结构化剪枝卷积层,以及第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。也就是说,电子设备可以确定n为不同值时的Cn,以及n为不同值时的h-n。电子设备可以从已确定的n为不同值时的Cn和h-n中选择n为具体值时的Cn和h-n。
可理解,电子设备可以在进行第n次结构化剪枝之前再确定第n次结构化剪枝卷积层,以及第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。类似的,在n=n+1的情况下,在上一次进行结构化剪枝之后,在第n次结构化剪枝之前,电子设备可以确定第n次结构化剪枝卷积层,以及第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。
可选的,电子设备完成上述结构化剪枝(即完成P次结构化剪枝)之后,可以进行模型层维度的非结构化剪枝。模型层维度的非结构化剪枝的具体实现方式基本与图3所示的非结构化剪枝的具体实现方式(如步骤S301-步骤S307)相同,特别的是,对于模型层维度的非结构化剪枝来说,原始模型中进行非结构化剪枝的卷积层以及该进行非结构化剪枝的卷积层各自对应的目标稀疏度,可以根据模型中每一个卷积层的重要性来确定(例如,进行层维度的非结构化剪枝的每一个卷积层的目标稀疏度可以不同),并且在训练过程中电子设备可以添加原始模型进行知识蒸馏,从而让训练时的模型去拟合原始模型的输出。可理解,知识蒸馏指的是通过教师模型,来将其知识“传授”给紧凑的学生模型,从而使学生模型的效果接近教师模型的效果,也因此能够降低达到目标精度所需的计算量和模型大小。知识蒸馏的具体实现方式可以参考相关技术文档,本申请不展开说明。
具体地,电子设备可以确定进行若干次结构化剪枝(即完成P次结构化剪枝)之后的模型中的x个卷积层、该x个卷积层分别对应的稀疏度阈值,以及该x个卷积层分别对应的单次稀疏度变化值。电子设备还可以基于该x个卷积层分别对应的单次稀疏度变化值,对该x个卷积层进行非结构化剪枝。若对该x个卷积层进行非结构化剪枝之后,该x个卷积层的稀疏度未达到该x个卷积层分别对应的稀疏度阈值,对该x个卷积层再次进行非结构化剪枝,直到该x个卷积层的稀疏度达到该x个卷积层分别对应的稀疏度阈值。其中,x可以为正整数。
可理解,该x个卷积层分别对应的稀疏度阈值可以根据实际需要进行设置,本申请对此不作限制。例如,稀疏度阈值可以为20%,还可以为30%。稀疏度阈值可以在稀疏度阈值范围内。稀疏度阈值范围可以根据实际需要进行设置,本申请对此不作限制。例如,稀疏度阈值范围可以为[20%,30%]电子设备确定稀疏度阈值和稀疏度阈值范围的具体方式可以参考步骤S302,在此不再赘述。
在本申请的一些实施例中,在电子设备对该x个卷积层进行一次非结构化剪枝之后,电子设备还可以训练该非结构化剪枝后的模型。具体地,电子设备可以训练对该x个卷积层进行非结构化剪枝后的模型,并在训练轮次达到第二目标轮次且损失值小于第二预设损失值的情况下,得到训练后的模型。其中,损失值指的是损失函数的值,具体可参考上文,在此不再赘述。另外,如上文所述,在训练对该x个卷积层进行非结构化剪枝后的模型的过程中,电子设备可以添加原始模型作为“老师”来进行知识蒸馏,使得非结构化剪枝后的模型的输出可以拟合原始模型的输出。
在本申请的一些实施例中,在硬件平台支持稀疏计算的情况下,电子设备可以进行模型层维度的非结构化剪枝。
下面介绍本申请实施例提供的又一种神经网络模型处理方法。
请参阅图5,图5为本申请实施例提供的一种神经网络模型处理方法的流程图。该方法可以包括但不限于以下步骤:
S501:电子设备确定原始模型中的第一卷积层和第一卷积核数。第一卷积层包括k个卷积层。第一卷积核数包括k个卷积层分别对应待修剪的卷积核数。
可理解,电子设备可以确定原始模型中的第一卷积层和第一卷积核数。第一卷积层为原始模型中待结构化剪枝的卷积层,也可以理解为针对结构化剪枝原始模型中对应修剪的卷积层。第一卷积层可以包括k个卷积层。第一卷积核数可以包括k个卷积层分别对应待修剪的卷积核数。
在本申请中,第一卷积层可以为上文所述的结构化剪枝卷积层(即C)。第一卷积核数可以为上文所述的结构化剪枝卷积层包括的每一个卷积层分别对应待修剪的总卷积核数。可理解,电子设备确定第一卷积层和第一卷积核数的具体方法可以参考上文,在此不再赘述。
S502:电子设备基于第一卷积核数,对第一卷积层进行若干次结构化剪枝。其中,电子设备针对第n次结构化剪枝,包括:确定进行第n次结构化剪枝的m个卷积层和第二卷积核数;对m个卷积层进行若干次非结构化剪枝,得到第二卷积层;基于第二卷积核数,对第二卷积层中的卷积核进行修剪,得到第n次结构化剪枝后的模型。
可理解,电子设备可以基于第一卷积核数,对第一卷积层进行若干次结构化剪枝。其中,电子设备进行该若干次结构化剪枝中的第n次结构化剪枝,具体可以包括:电子设备可以确定进行第n次结构化剪枝的m个卷积层和第二卷积核数,然后对m个卷积层进行若干次非结构化剪枝,得到第二卷积层,再基于第二卷积核数对第二卷积层中的卷积核进行修剪,得到第n次结构化剪枝后的模型。
可理解,电子设备进行若干次结构化剪枝和若干次非结构化剪枝的具体方式可以参考上文,在此不再赘述。
可理解,k、n、m为正整数,m小于或等于k。该m个卷积层为该k个卷积层中的卷积层。
在本申请中,进行第n次结构化剪枝的m个卷积层可以为上文所述的第n次结构化剪枝卷积层(即Cn)。第二卷积核数可以为上文所述的第n次结构化剪枝卷积层包括的每一个卷积层针对第n次结构化剪枝分别对应待修剪的卷积核数。也就是说,第二卷积核数可以包括针对第n次结构化剪枝该m个卷积层分别对应待修剪的卷积核数。
需要说明的是,第n次结构化剪枝之后,该m个卷积层已修剪的卷积核数分别等于第二卷积核数中该m个卷积层对应待修剪的卷积核数,并且,该m个卷积层已修剪的卷积核数分别不大于第一卷积核数中该m个卷积层对应的待修剪的卷积核数。第二卷积层的稀疏度达到目标稀疏度。稀疏度为卷积层中值为0的参数数量占卷积层中所有参数数量的比例。
其中,该m个卷积层已修剪的卷积核数分别不大于第一卷积核数中该m个卷积层对应的待修剪的卷积核数,也可以理解为:卷积层y已修剪的卷积核数不大于第一卷积核数中卷积层y对应待修剪的卷积核数,卷积层y为该m个卷积层中的任意一个卷积层。
在本申请的一些实施例中,第二卷积层的稀疏度达到目标稀疏度,具体包括:第二卷积层包括的m个卷积层整个的稀疏度达到目标稀疏度。即该m个卷积层中值为0的参数数量占该m个卷积层所有参数数量的比例达到了目标稀疏度。
在本申请的一些实施例中,第二卷积层的稀疏度达到目标稀疏度,具体包括:第二卷积层包括的m个卷积层的稀疏度分别达到了各自的目标稀疏度。即该m个卷积层中值为0的参数数量分别占该m个卷积层的参数数量的比例分别达到了该m个卷积层各自的目标稀疏度。可理解,该m个卷积层各自的目标稀疏度可以相同,也可以不同。
可理解,第二卷积层包括的m个卷积层为进行若干次非结构化剪枝后的m个卷积层。
还需要说明的是,若干次结构化剪枝之后,模型中的该k个卷积层已修剪的卷积核数分别等于第一卷积核数中该k个卷积层对应待修剪的卷积核数。
下面介绍本申请实施例提供的一种神经网络模型推理方法。
请参阅图6,图6为本申请实施例提供的一种神经网络模型推理方法的流程图。该方法可以包括但不限于以下步骤:
S601:电子设备将待处理数据输入到神经网络模型。
可理解,电子设备可以将待处理数据输入到神经网络模型中。该神经网络模型为基于如图4或图5所示的神经网络模型处理方法对原始模型进行处理后的模型。
在本申请的一些实施例中,待处理数据可以为摄像头采集并经过处理的原始图像数据。
在本申请的一些实施例中,神经网络模型为拍照模型。例如,神经网络模型为夜景模式下的拍照模型。
S602:电子设备输出经过神经网络模型处理后的数据。
在本申请的一些实施例中,电子设备输出的经过神经网络模型处理后的数据可以为RGB图像。
例如,电子设备可以显示拍摄界面。拍摄界面可以包括快门控件。电子设备可以检测并响应于作用在快门控件上的操作,相应的,电子设备可以获取摄像头采集并处理的原始图像数据。电子设备可以将原始图像数据输入到该神经网络模型中,并输出经过该神经网络模型处理后的图像。可理解,该作用在快门控件上的操作可以为触摸、声音、手势等形式的用户操作,本申请对此不作限制。
下面介绍本申请实施例涉及的装置。
图7为本申请实施例提供的一种电子设备的硬件结构示意图。
电子设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(Universal Serial Bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(Subscriber Identification Module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(Application Processor,AP),调制解调处理器,图形处理器(Graphics Processingunit,GPU),图像信号处理器(即ISP),控制器,存储器,视频编解码器,数字信号处理器(Digital Signal Processor,DSP),基带处理器,和/或神经网络处理器(Neural-networkProcessing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
在本申请提供的实施例中,电子设备可以通过处理器110执行所述模型压缩方法。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。处理器110所包括的接口还可以用于连接其他电子设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
移动通信模块150可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。
无线通信模块160可以提供应用在电子设备上的包括无线局域网(WirelessLocal Area Networks,WLAN)(如无线保真(Wireless Fidelity,Wi-Fi)网络),蓝牙(Bluetooth,BT),全球导航卫星系统(Global Navigation Satellite System,GNSS),调频(Frequency Modulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等无线通信的解决方案。
在一些实施例中,电子设备的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。
电子设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(Liquid Crystal Display,LCD),有机发光二极管(Organic Light-EmittingDiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(Active-MatrixOrganic Light Emitting Diode的,AMOLED),柔性发光二极管(Flex Light-EmittingDiode,FLED),Mini LED,Micro LED,Micro-OLED,量子点发光二极管(Quantum Dot LightEmitting Diodes,QLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现获取功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像或视频。ISP还可以对图像的噪点,亮度,颜色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(Charge Coupled Device,CCD)或互补金属氧化物半导体(Complementary Metal-Oxide-Semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像或视频信号。ISP将数字图像或视频信号输出到DSP加工处理。DSP将数字图像或视频信号转换成标准的RGB,YUV等格式的图像或视频信号。
数字信号处理器用于处理数字信号,除了可以处理数字图像或视频信号,还可以处理其他数字信号。例如,当电子设备在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备可以支持一种或多种视频编解码器。这样,电子设备可以播放或录制多种编码格式的视频,例如:动态图像专家组(Moving Picture Experts Group,MPEG)1,MPEG2,MPEG3,MPEG4等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像视频播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。
电子设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
传感器模块180可以包括1个或多个传感器,这些传感器可以为相同类型或不同类型。可理解,图7所示的传感器模块180仅为一种示例性的划分方式,还可能有其他划分方式,本申请对此不作限制。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。当有触摸操作作用于显示屏194,电子设备根据压力传感器180A检测所述触摸操作强度。电子设备也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。
陀螺仪传感器180B可以用于确定电子设备的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。
加速度传感器180E可检测电子设备在各个方向上(一般为三轴)加速度的大小。当电子设备静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备可以利用距离传感器180F测距以实现快速对焦。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备的表面,与显示屏194所处的位置不同。
气压传感器180C用于测量气压。磁传感器180D包括霍尔传感器。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。电子设备使用光电二极管检测来自附近物体的红外反射光。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于获取指纹。温度传感器180J用于检测温度。骨传导传感器180M可以获取振动信号。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备可以接收按键输入,产生与电子设备的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。
图8为本申请实施例提供的一种电子设备的软件结构示意图。
如图8所示,本申请涉及的电子设备的软件框架可以包括应用程序层,应用程序框架层(framework,FWK)、系统库、安卓运行时、硬件抽象层和内核层(kernel)。
其中,应用程序层可以包括一系列应用程序包,例如相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序(也可以称为应用)。其中,相机用于获取图像和视频。关于应用程序层的其他应用,可以参考常规技术中的介绍和说明,本申请不展开说明。
应用程序框架层为应用程序层的应用程序提供应用编程接口(ApplicationProgramming Interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图8所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话界面形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
运行时(Runtime)包括核心库和虚拟机。Runtime负责系统的调度和管理。
核心库包含两部分:一部分是编程语言(例如,java语言)需要调用的功能函数,另一部分是系统的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的编程文件(例如,java文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(Surface Manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2-Dimensional,2D)和三维(3-Dimensional,3D)图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现3D图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
硬件抽象层(HAL)是位于操作系统内核与上层软件之间的接口层,其目的在于将硬件抽象化。硬件抽象层是设备内核驱动的抽象接口,用于实现向更高级别的Java API框架提供访问底层设备的应用编程接口。HAL包含多个库模块,例如相机、显示屏、蓝牙、音频等。其中每个库模块都为特定类型的硬件组件实现一个接口。当系统框架层API要求访问便携设备的硬件时,Android操作系统将为该硬件组件加载库模块。
内核层是Android操作系统的基础,Android操作系统最终的功能都是通过内核层完成。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,虚拟卡驱动。
需要说明的是,本申请提供的图8所示的电子设备的软件结构示意图仅作为一种示例,并不限定Android操作系统不同分层中的具体模块划分,具体可以参考常规技术中对Android操作系统软件结构的介绍。另外,本申请提供的拍摄方法还可以基于其他操作系统实现,本申请不再一一举例。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (17)

1.一种神经网络模型处理方法,其特征在于,所述方法包括:
电子设备确定原始模型中的第一卷积层和第一卷积核数;所述第一卷积层包括k个卷积层;所述第一卷积核数包括所述k个卷积层分别对应待修剪的卷积核数;
所述电子设备基于所述第一卷积核数,对所述第一卷积层进行若干次结构化剪枝;
其中,所述电子设备针对第n次结构化剪枝,包括:确定进行所述第n次结构化剪枝的m个卷积层和第二卷积核数;对所述m个卷积层进行若干次非结构化剪枝,得到第二卷积层;基于所述第二卷积核数,对所述第二卷积层中的卷积核进行修剪,得到所述第n次结构化剪枝后的模型;
其中,所述k、所述n、所述m为正整数;所述m小于或等于所述k,所述m个卷积层为所述k个卷积层中的卷积层;所述第二卷积核数包括针对所述第n次结构化剪枝所述m个卷积层分别对应待修剪的卷积核数;所述第n次结构化剪枝之后,所述m个卷积层已修剪的卷积核数分别不大于所述第一卷积核数中所述m个卷积层对应待修剪的卷积核数;所述第二卷积层的稀疏度达到目标稀疏度;所述稀疏度为卷积层中值为0的参数数量占所述卷积层中所有参数数量的比例。
2.如权利要求1所述的方法,其特征在于,所述对所述m个卷积层进行若干次非结构化剪枝,得到第二卷积层,具体包括:
确定所述目标稀疏度和单次稀疏度变化值;所述单次稀疏度变化值为所述m个卷积层进行一次非结构化剪枝后的稀疏度的变化值;
基于所述单次稀疏度变化值,对所述m个卷积层进行第i次非结构化剪枝;所述i的初始值为1;
若所述第i次非结构化剪枝之后,所述m个卷积层的稀疏度均达到所述目标稀疏度,得到所述第二卷积层;
若所述第i次非结构化剪枝之后,所述m个卷积层的稀疏度未全部达到所述目标稀疏度,则将所述i加1,执行所述基于所述单次稀疏度变化值,对所述m个卷积层进行第i次非结构化剪枝的步骤。
3.如权利要求2所述的方法,其特征在于,所述对所述m个卷积层进行第i次非结构化剪枝之后,所述方法还包括:
对所述第i次非结构化剪枝后的模型进行训练;
在所述m个卷积层的稀疏度均达到所述目标稀疏度的情况下,得到的所述第二卷积层包括所述训练后的模型中的所述m个卷积层;
在所述m个卷积层的稀疏度未全部达到所述目标稀疏度的情况下,所述将所述i加1后进行的第i次非结构化剪枝的所述m个卷积层为所述训练后的模型中的所述m个卷积层;
其中,所述对所述第i次非结构化剪枝后的模型进行训练的过程中,所述第i次非结构化剪枝后的模型中已置零的参数的值保持不变。
4.如权利要求3所述的方法,其特征在于,所述对所述第i次非结构化剪枝后的模型进行训练,具体包括:在训练轮次达到第一目标轮次,且损失值小于第一预设损失值的情况下,得到所述训练后的模型。
5.如权利要求2-4任一项所述的方法,其特征在于,所述基于所述单次稀疏度变化值,对所述m个卷积层进行第i次非结构化剪枝,具体包括:
分别将所述m个卷积层包括的参数总数乘以所述单次稀疏度变化值,得到第一待置零参数数量;所述第一待置零参数数量包括所述m个卷积层针对所述第i次非结构化剪枝所对应的待置零参数的数量;所述第一待置零参数数量包括Zr;所述Zr为所述m个卷积层中第r个卷积层针对所述第i次非结构化剪枝所对应的待置零参数的数量;所述r为不大于所述m的正整数;
对所述m个卷积层中第r个卷积层的所述Zr个参数进行置零处理,得到所述第i次非结构化剪枝后的模型;所述Zr个参数为所述第r个卷积层中排序前Zr个的参数;所述排序为所述第r个卷积层的参数按绝对值由小到大的顺序进行排序。
6.如权利要求1-5任一项所述的方法,其特征在于,所述第二卷积层包括进行所述若干次非结构化剪枝后的所述m个卷积层;所述第二卷积核数包括Ur;所述Ur为针对所述第n次结构化剪枝所述m个卷积层中第r个卷积层对应待修剪的卷积核数;所述r为不大于所述m的正整数;所述基于所述第二卷积核数,对所述第二卷积层中的卷积核进行修剪,具体包括:
去除所述第二卷积层包括的所述m个卷积层中第r个卷积层的所述Ur个卷积核;所述Ur个卷积核为所述第r个卷积层中排序前Ur个的卷积核;所述排序为所述第r个卷积层的卷积核按参数绝对值总和由小到大的顺序进行排序。
7.如权利要求1-6任一项所述的方法,其特征在于,所述电子设备确定所述第一卷积核数,具体包括:
在硬件平台的通道对齐方式为w通道对齐的情况下,所述电子设备确定所述原始模型中所述k个卷积层分别包括的卷积核数与所述第一卷积核数包括的所述k个卷积层分别对应待修剪的卷积核数的差值均为所述w的倍数;所述w为正整数。
8.如权利要求1-7任一项所述的方法,其特征在于,所述得到所述第n次结构化剪枝后的模型之后,所述方法还包括:
若所述第n次结构化剪枝之后,所述k个卷积层已修剪的卷积核数分别等于所述第一卷积核数中所述k个卷积层对应待修剪的卷积核数,得到所述若干次结构化剪枝后的模型;
若所述第n次结构化剪枝之后,所述k个卷积层已修剪的卷积核数未分别等于所述第一卷积核数中所述k个卷积层对应待修剪的卷积核数,则将所述n加1,执行所述第n次结构化剪枝的步骤。
9.如权利要求8所述的方法,其特征在于,所述得到所述第n次结构化剪枝后的模型之后,所述方法还包括:
对所述第n次结构化剪枝后的模型进行训练;
在所述k个卷积层已修剪的卷积核数分别等于所述第一卷积核数中所述k个卷积层对应待修剪的卷积核数的情况下,得到的所述第n次结构化剪枝后的最终模型包括所述对所述第n次结构化剪枝后的模型进行训练后所得的模型中的所述m个卷积层;
在所述k个卷积层已修剪的卷积核数未分别等于所述第一卷积核数中所述k个卷积层对应待修剪的卷积核数的情况下,所述将所述n加1后进行的第n次结构化剪枝的所述m个卷积层为所述对所述第n次结构化剪枝后的模型进行训练后所得的模型中的所述m个卷积层。
10.如权利要求1-9任一项所述的方法,其特征在于,所述对所述第一卷积层进行若干次结构化剪枝之后,所述方法还包括:
确定进行所述若干次结构化剪枝后的模型中的x个卷积层、所述x个卷积层分别对应的稀疏度阈值,以及所述x个卷积层分别对应的单次稀疏度变化值;所述x为正整数;
基于所述x个卷积层分别对应的单次稀疏度变化值,对所述x个卷积层进行非结构化剪枝;
若对所述x个卷积层进行非结构化剪枝之后,所述x个卷积层的稀疏度未达到所述x个卷积层分别对应的稀疏度阈值,对所述x个卷积层再次进行非结构化剪枝,直到所述x个卷积层的稀疏度达到所述x个卷积层分别对应的稀疏度阈值。
11.如权利要求10所述的方法,其特征在于,所述对所述x个卷积层进行非结构化剪枝之后,所述方法还包括:
训练所述对所述x个卷积层进行非结构化剪枝后的模型;
在训练轮次达到第二目标轮次,且损失值小于第二预设损失值的情况下,得到训练后的模型;
其中,在所述训练所述对所述x个卷积层进行非结构化剪枝后的模型的过程中,添加所述原始模型进行知识蒸馏。
12.一种神经网络模型推理方法,其特征在于,所述方法包括:
电子设备将待处理数据输入到神经网络模型;
所述电子设备输出经过所述神经网络模型处理后的数据;
其中,所述神经网络模型为经过如权利要求1-11任一项所述的神经网络模型处理方法处理得到的神经网络模型。
13.如权利要求12所述的方法,其特征在于,所述电子设备将待处理数据输入到神经网络模型之前,所述方法还包括:
所述电子设备显示拍摄界面;所述拍摄界面包括快门控件;
检测并响应于作用在所述快门控件上的操作,所述电子设备可以得到通过摄像头采集并处理的原始图像数据;
所述电子设备将待处理数据输入到神经网络模型;所述电子设备输出经过所述神经网络模型处理后的数据,具体包括:
所述电子设备将所述原始图像数据输入到所述神经网络模型中;
所述电子设备输出经过所述神经网络模型处理后的图像。
14.一种电子设备,包括存储器、一个或多个处理器,其特征在于,所述存储器用于存储计算机程序;所述处理器用于调用所述计算机程序,使得所述电子设备执行权利要求1-11中任一项所述的方法。
15.一种电子设备,包括摄像头、存储器、一个或多个处理器,其特征在于,所述存储器用于存储计算机程序;所述处理器用于调用所述计算机程序,使得所述电子设备执行权利要求12-13中任一项所述的方法。
16.一种计算机存储介质,其特征在于,包括:计算机指令;当所述计算机指令在电子设备上运行时,使得所述电子设备执行权利要求1-11中任一项所述的方法。
17.一种计算机存储介质,其特征在于,包括:计算机指令;当所述计算机指令在电子设备上运行时,使得所述电子设备执行权利要求12-13中任一项所述的方法。
CN202211064818.0A 2022-08-31 2022-08-31 一种神经网络模型处理、推理方法及相关设备 Pending CN117709399A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211064818.0A CN117709399A (zh) 2022-08-31 2022-08-31 一种神经网络模型处理、推理方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211064818.0A CN117709399A (zh) 2022-08-31 2022-08-31 一种神经网络模型处理、推理方法及相关设备

Publications (1)

Publication Number Publication Date
CN117709399A true CN117709399A (zh) 2024-03-15

Family

ID=90161186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211064818.0A Pending CN117709399A (zh) 2022-08-31 2022-08-31 一种神经网络模型处理、推理方法及相关设备

Country Status (1)

Country Link
CN (1) CN117709399A (zh)

Similar Documents

Publication Publication Date Title
CN113453040B (zh) 短视频的生成方法、装置、相关设备及介质
CN111738122B (zh) 图像处理的方法及相关装置
CN113010740B (zh) 词权重的生成方法、装置、设备及介质
CN113822322B (zh) 图像处理模型训练方法及文本处理模型训练方法
CN116048244B (zh) 一种注视点估计方法及相关设备
CN112115900B (zh) 图像处理方法、装置、设备及存储介质
CN111539353A (zh) 一种图像场景识别方法及装置、计算机设备以及存储介质
CN117274109B (zh) 图像处理方法、降噪模型训练方法及电子设备
CN111507094B (zh) 基于深度学习的文本处理模型训练方法、装置及设备
CN116775915A (zh) 资源推荐方法、推荐预测模型训练方法、装置及设备
CN111612723A (zh) 图像修复方法及装置
CN113763931B (zh) 波形特征提取方法、装置、计算机设备及存储介质
CN116863042A (zh) 虚拟对象的动作生成方法及动作生成模型的训练方法
CN116205806B (zh) 一种图像增强方法及电子设备
CN110232417B (zh) 图像识别方法、装置、计算机设备及计算机可读存储介质
CN115661941B (zh) 手势识别方法和电子设备
CN114419517B (zh) 视频帧处理方法、装置、计算机设备及存储介质
CN113032560B (zh) 语句分类模型训练方法、语句处理方法及设备
CN117709399A (zh) 一种神经网络模型处理、推理方法及相关设备
CN114970576A (zh) 识别码的识别方法、相关电子设备及计算机可读存储介质
CN117635466B (zh) 图像增强方法、装置、电子设备及可读存储介质
CN117727073B (zh) 模型训练方法及相关设备
CN116680431B (zh) 一种视觉定位方法、电子设备、介质及产品
CN118446272A (zh) 图像处理方法、模型压缩方法及相关设备
CN115908149A (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