CN116090511A - 卷积神经网络的预处理方法和加速方法、加速系统和介质 - Google Patents
卷积神经网络的预处理方法和加速方法、加速系统和介质 Download PDFInfo
- Publication number
- CN116090511A CN116090511A CN202111271361.6A CN202111271361A CN116090511A CN 116090511 A CN116090511 A CN 116090511A CN 202111271361 A CN202111271361 A CN 202111271361A CN 116090511 A CN116090511 A CN 116090511A
- Authority
- CN
- China
- Prior art keywords
- weight
- values
- sum
- potential contribution
- groups
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了一种用于卷积神经网络的预处理方法。该卷积神经网络包括卷积层,该卷积层包括卷积核,该卷积核包括形成为多个权重矩阵的权重值。该预处理方法包括:将卷积核分成多个权重组;对多个权重组进行排序;确定各权重组的潜在贡献值因子。本公开还提供了一种用于经预处理的卷积神经网络的加速方法,包括:获取各权重组的排序和潜在贡献因子;生成各权重组的潜在贡献值;基于该排序将各权重组逐一与输入数据进行卷积计算,其中,每完成一个权重组与输入数据的卷积计算时,判断是否可以提前终止卷积运算。此外,本公开还涉及一种用于卷积神经网络的加速系统,以及一种计算机可读存储介质。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及一种用于卷积神经网络的预处理方法和加速方法,一种用于卷积神经网络的加速系统,以及还涉及一种计算机可读存储介质。
背景技术
目前,卷积神经网络因其私密性、可靠性、低延迟、高效率以及可定制,被广泛地应用于诸如计算机视觉、目标和语音识别、医学诊断、游戏、机器人等领域。卷积神经网络的核心是卷积运算,其需要处理大量的参数以及应用大量的并行乘法器单元。在卷积计算之后,卷积神经网络会对卷积运算结果应用激活函数,例如,ReLU函数(即,Rectified LinearUnit函数)是其中最常用的一种。由于卷积神经网络的中间层的卷积结果可能存在大量的负值,这些负值在经过ReLU函数的处理后,结果都变为0,使得这部分的计算没有意义并且浪费功耗。因此,期望提供一种能够加速卷积神经网络的计算、降低系统功耗、同时保持卷积神经网络的准确度的方式。
发明内容
根据本公开的一个方面,提供了一种用于卷积神经网络的预处理方法,其中,该卷积神经网络包括卷积层,该卷积层包括卷积核,该卷积核包括形成为至少一个权重矩阵的权重值,该预处理方法包括以下步骤:将该卷积核分成多个权重组,每个权重组包括至少一个权重矩阵;基于各权重组的权重值,对该多个权重组进行排序;基于各权重组的权重值估算的极值,确定各权重组的潜在贡献因子。
在一些示例性实施例中,基于硬件资源的处理能力将该卷积核分成多个权重组,每个权重组包括的权重矩阵的数量与该硬件资源的处理能力相对应。
在一些示例性实施例中,还包括:基于硬件资源的处理能力将该卷积神经网络用于输入数据的并行的输入通道分成多个通道组,该多个通道组与该卷积核的多个权重组一一对应,其中,每个通道组的输入通道的数量与对应的权重组的权重矩阵的数量相等。
在一些示例性实施例中,硬件资源的处理能力包括该硬件资源具有的并行处理通道的数量。
在一些示例性实施例中,基于各权重组的权重值,对该多个权重组进行排序的步骤包括:计算每个权重组中所有正权重值的和;计算每个权重组中所有负权重值的和;基于每个权重组中所有正权重值的和以及所有负权重值的和,确定每个权重组的优先级;基于各权重组的优先级,对该多个权重组进行排序。
在一些示例性实施例中,基于每个权重组中所有正权重值的和以及所有负权重值的和,确定每个权重组的优先级的步骤包括:将每个权重组中所有负权重值的和的绝对值与所有正权重值的和进行加权求和,以确定每个权重组的优先级。
在一些示例性实施例中,基于各权重组的权重值估算的极值,确定各权重组的潜在贡献因子的步骤包括将该潜在贡献因子确定为下述各项中的一项:每个权重组中所有正权重值的和与所有负权重值的和的加权求和;每个权重组中绝对值最大的正权重值乘以该权重组中正权重值的数量;每个权重组中绝对值最大的负权重值乘以该权重组中负权重值的数量。
根据本公开的另一个方面,提供了一种用于卷积神经网络的加速方法,其应用于由上文所述的预处理方法进行预处理的卷积神经网络,该加速方法包括以下步骤:获取各权重组的排序和潜在贡献因子;基于输入数据和该潜在贡献因子,或者基于系统规格预设的输入数据的最大值和该潜在贡献因子,生成各权重组的潜在贡献值;基于该排序将各权重组逐一与该输入数据的对应部分进行卷积计算,其中,每完成一个权重组与该输入数据的对应部分的卷积计算时,将对应于所有已计算权重组的当前部分和与所有剩余权重组的潜在贡献值之和进行比较,当满足预定的提前终止条件时,终止该卷积运算并且将该当前部分和作为该卷积运算的结果。
在一些示例性实施例中,该所有剩余权重组的潜在贡献值之和的符号为正,因此该预定的提前终止条件包括:该当前部分和与该所有剩余权重组的潜在贡献值之和相加,所得结果小于或等于第一阈值,则终止该卷积运算。
在一些示例性实施例中,该第一阈值为零。
在一些示例性实施例中,该所有剩余权重组的潜在贡献值之和的符号为负,因此该预定的提前终止条件包括:该当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果大于或等于第二阈值,则终止该卷积运算。
在一些示例性实施例中,该第二阈值为255。
根据本公开的又一个方面,提供了一种用于卷积神经网络的加速系统,其中,该卷积神经网络包括卷积层,该卷积层包括卷积核,该卷积核包括形成为多个权重矩阵的权重值,该加速系统包括:预处理器,其配置成获取输入数据,以及针对该卷积神经网络:将该卷积核分成多个权重组,每个权重组包括多个权重矩阵;基于各权重组的权重值,对该多个权重组进行排序;基于各权重组的权重值估算的极值,确定各权重组的潜在贡献因子;存储单元,其配置成存储该输入数据以及该卷积神经网络的卷积层的各权重组的排序和潜在贡献值;计算单元,其配置成:获取各权重组的排序和潜在贡献因子;基于输入数据和该潜在贡献因子,或者基于系统规格预设的输入数据的最大值和所述潜在贡献因子,生成各权重组的潜在贡献值;基于该排序将各权重组逐一与该输入数据进行卷积计算,其中,每完成一个权重组与该输入数据的卷积计算时,将对应于所有已计算权重组的当前部分和与所有剩余权重组的潜在贡献值之和进行比较,当满足预定的提前终止条件时,终止该卷积运算并将该当前部分和作为卷积运算结果。
在一些示例性实施例中,每个权重组包括的权重矩阵的数量等于输入数据所用的并行的输入通道的数量。
在一些示例性实施例中,该处理器被进一步配置成:计算每个权重组中所有正权重值的和;计算每个权重组中所有负权重值的和;将每个权重组的所有负权重值的和的绝对值与所有正权重值的和进行加权求和,以确定每个权重组的优先级;基于各权重组的优先级,对该多个权重组进行排序。
在一些示例性实施例中,各权重组的潜在贡献因子被确定为下述各项中的一项:每个权重组中所有正权重值的和与所有负权重值的和的加权求和;每个权重组中绝对值最大的正权重值乘以该权重组中正权重值的数量;每个权重组中绝对值最大的负权重值乘以该权重组中负权重值的数量。
在一些示例性实施例中,该计算单元还配置成:该所有剩余权重组的潜在贡献值之和的符号为正;该预定的提前终止条件包括:该当前部分和与该所有剩余权重组的潜在贡献值之和相加,所得结果小于或等于第一阈值,则终止该卷积运算。
在一些示例性实施例中,该第一阈值为零。
在一些示例性实施例中,该计算单元还配置成:该所有剩余权重组的潜在贡献值之和的符号为负;该预定的提前终止条件包括:该当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果大于或等于第二阈值,则终止该卷积运算。
在一些示例性实施例中,该第二阈值为255。
在一些示例性实施例中,该加速系统还包括直接存储器存取单元,其配置成从该存储单元获取该输入数据以及该卷积神经网络的卷积层的各权重组的排序和潜在贡献值。
在一些示例性实施例中,该加速系统还包括微控制单元,其配置成控制该直接存储器存取单元和该计算单元的操作。
根据本公开的再一个方面,提供了一种计算机可读存储介质,其被配置成存储计算机可执行指令,该计算机可执行指令被配置成:当在处理器上执行时,使该处理器执行根据上文所述的预处理方法。
根据本公开的再一个方面,提供了一种计算机可读存储介质,其被配置成存储计算机可执行指令,该计算机可执行指令被配置成:当在处理器上执行时,使该处理器执行根据上文所述的加速方法。
附图说明
下面将结合附图对本公开的具体实施例进行详细的描述,以便能够对本公开的更多细节、特征和优点具有更加充分的认识和理解;在附图中:
图1A和图1B示意性地示出了卷积神经网络中的卷积层进行三维卷积的过程;
图2以流程图的形式示意性地示出了根据本公开的一个示例性实施例的用于卷积神经网络的预处理方法;
图3示意性地显示了对一个卷积核进行分组的情形;
图4示意性地示出了权重组的正权重评分和负权重评分对该权重组的优先级的影响;
图5示意性地显示了对卷积神经网络的用于输入数据的并行的输入通道进行分组,以及基于通道组对每个卷积核进行分组和排序的情形;
图6以流程图的形式示意性地示出了根据本公开的一个示例性实施例的用于对权重组进行排序的一种排序方法,其可被应用于图2所示的预处理方法中的排序步骤;
图7以流程图的形式示意性地示出了根据本公开的另一个示例性实施例的用于卷积神经网络的预处理方法;
图8以流程图的形式示意性地示出了根据本公开的一个示例性实施例的用于卷积神经网络的加速方法;
图9以流程图的形式示意性地示出了图8所示的用于卷积神经网络的加速方法所包括的步骤;
图10示意性地显示了一种常用的激活函数;
图11以框图的形式示意性地示出了根据本公开的一个示例性实施例的用于卷积神经网络的加速系统;
图12示意性地显示了一种预测处理元件的结构,其可以被应用于图11所示的加速系统。
应理解的是,附图中显示的内容都仅仅是示意性的,因此其不必按照比例进行绘制。此外,在全部附图中,相同或相似的特征由相同或相似的附图标记指示。
具体实施方式
下面的描述提供了对本公开的各种示例性实施例的具体细节的详细说明,以便使本领域的技术人员能够充分理解和实施本公开的各种示例性实施例。应该理解的是,这些详细说明都仅仅是示例性的,其不构成对本公开的任何限制。
参见图1A和图1B,其示意性地示出了卷积神经网络中的卷积层进行三维卷积的过程。
图1A示意性地显示了对输入特征图进行三维卷积操作以生成输出特征图的总体过程。输入特征图一般具有三维的形式,其可以具有宽度W_in、高度H_in以及深度Cin。换言之,输入特征图可以被看作由Cin个输入特征矩阵构成,每个输入特征矩阵具有H_in行和W_in列,即,具有H_in×W_in个输入特征数据。卷积层可以包括Cout个卷积核,每个卷积核也可以具有三维的形式,其可以具有宽度R、高度S,以及具有相同的深度Cin。也就是说,每个卷积核同样可以被看作是由Cin个权重矩阵构成,每个权重矩阵具有S行和R列,即,可以具有S×R个权重值。类似地,输出特征图也可以具有三维的形式,其可以具有宽度W_out、高度H_out以及深度Cout。也就是说,输出特征图可以被看作是由Cout个输出特征矩阵构成,每个输出特征矩阵具有H_out行和W_out列,即,具有H_out×W_out个输出特征数据。
图1B示意性地显示了利用一个卷积核对输入特征图进行卷积以生成输出特征图中的一个输出特征矩阵的过程。图1B中的输入特征图和卷积核的三维形式分别与图1A中的输入特征图和卷积核的三维形式相同。如图所示,可以利用卷积核从输入特征图的左上角开始进行卷积运算,以生成输出特征矩阵中的对应的输出特征数据y。例如,在图1B所示的情况中,输出特征数据y可以按照下面的式1进行计算:
式1
其中,y表示输出特征矩阵中的一个输出特征数据,Cin表示输入特征图和卷积核的深度,R表示卷积核的宽度,S表示卷积核的高度,w表示卷积核的权重值,Fmap表示输入特征图的输入特征值。在计算得到一个输出特征值后,卷积核可以按照预先设定的步长,沿图1B中折线箭头所示的方向移动,并且计算下一个输出特征值。当卷积核沿图1B中折线箭头所示的方向,移动经过整个输入特征图后,所有计算得到的输出特征值就构成图中所示的输出特征矩阵。该输出特征矩阵具有H_out行和W_out列。作为非限制性示例,在步长为1的情况下,H_out = H_in - R + 1,并且W_out = W_in - S + 1。此后,对于下一个卷积核,重复上述步骤,并由此生成一个新的输出特征矩阵。因此,当具有Cout个卷积核时,通过卷积过程可以生成Cout个输出特征矩阵,并且这Cout个输出特征矩阵共同构成了图1A中示出的输出特征图。
容易认识到的是,上述卷积运算需要处理大量的参数以及使用大量的并行乘法器单元,对算力的要求很高,因此容易成为卷积神经网络的整体性能的一个瓶颈。
参见图2,其以流程图的形式示意性地示出了根据本公开的一个示例性实施例的用于卷积神经网络的预处理方法。如图2所示,预处理方法100可以包括步骤110、120和130:
步骤110,将卷积核分成多个权重组,每个权重组包括多个权重矩阵;
步骤120,基于各权重组的权重值,对所述多个权重组进行排序;
步骤130,基于所述各权重组的权重值估算的极值,确定所述各权重组的潜在贡献因子。
在步骤110中,可以结合硬件特性对卷积核进行划分,每个分块构成一个权重组,其可以包括多个权重矩阵。结合参见图3,作为非限制性示例,其显示了将一个卷积核划分为四个权重组的情形。在图3所示的情形中,可以基于硬件资源(例如预处理器)的处理能力来对卷积核进行划分,例如,可以基于硬件资源中用于对数据进行并行处理的并行处理通道的数量Cgi对卷积核进行划分。也就是说,每个权重组的深度与硬件资源的并行处理通道的数量Cgi相等,并且所有权重组的深度相加之和等于卷积核的深度Cin。因此,每个权重组可以被看作是由Cgi个权重矩阵构成,其中,每个权重矩阵具有S行和R列,即,可以具有S×R个权重值。
此外,容易理解的是,在将卷积核划分为多个权重组的情况下,输出特征矩阵中的输出特征数据y可以按照下面的式2进行计算:
式2
其中,y表示输出特征矩阵中的一个输出特征数据,Cin表示输入特征图和卷积核的深度,R表示卷积核的宽度,S表示卷积核的高度,Cgi表示并行处理通道的数量(即一个权重组的深度),w表示卷积核的权重值,Fmap表示输入特征图的输入特征值。
因此,式2表示了在卷积神经网络中将卷积核划分为多个权重组的情况下,针对输入特征图,如何利用三维卷积来计算输出特征矩阵中的输出特征数据。对于式2,其可以被进一步改写为如下形式:
式3
其中,y表示输出特征矩阵中的一个输出特征数据,Cin表示输入特征图和卷积核的深度,R表示卷积核的宽度,S表示卷积核的高度,Cgi表示并行处理通道的数量(即一个权重组的深度),w表示卷积核的权重值,Fmap表示输入特征图的输入特征值,bias表示偏置量。
由此可见,在式3中,表示第1至第K个权重组的卷积运算部分和,表示第K+1至第Cin/Cgi个权重组的卷积运算部分和。因此,从式3可以认识到,在对第1至第Cin/Cgi个权重组进行三维卷积计算的过程中,每次完成对一个权重组(例如第K个权重组)的计算时,可以对剩余的权重组(例如,第K+1至第Cin/Cgi个权重组)对于整个卷积运算的结果的影响进行预估,以便决定是否需要继续进行剩下各权重组的卷积运算,由此,可以改进卷积运算的效率。
继续参见图2,步骤120中基于各权重组的权重值,对所述多个权重组进行排序。作为非限制性示例,对于各权重组,可以基于其各自包括的权重值来进行排序。例如,可以基于权重组中所有的正权重值计算该权重组的正权重评分Score_pos,并且可以基于其中所有的负权重值计算该权重组的负权重评分Score_neg。对于一些情形而言,正权重评分Score_pos可以与该权重组的潜在贡献值相关,或者可以与该权重组的卷积计算的部分和相关,因此正权重评分Score_pos越高,表明该权重组的优先级越高。类似地,对于另一些情形而言,负权重评分Score_neg可以与该权重组的潜在贡献值相关,或者可以与该权重组的卷积计算的部分和相关,因此负权重评分Score_neg的绝对值越高,也表明该权重组的优先级也越高。具体地,作为非限制性示例,当卷积神经网络中采用的激活函数为ReLU函数时(即,Rectified Linear Unit函数),因为ReLU函数在输入值小于或等于0时输出为0,因此在这种情况下,可以将提前终止剩下各权重组的卷积运算的阈值设为0。在上述阈值为0的情形中,正权重评分Score_pos可以与该权重组的潜在贡献值相关,因此,正权重评分Score_pos越高,优先级越高,并且负权重评分Score_neg可以与该权重组的卷积计算的部分和相关,因此,负权重评分Score_neg的绝对值越高,优先级也越高。此外,作为另一非限制性示例,由于特征数据通常都存在数位的限制,例如对于8位的特征数据而言,特征数据的极大值为255,因此如果卷积运算结果超过了该值也会被截断为255,所以在这种情况下,可以将提前终止剩下各权重组的卷积运算的阈值设为255。在上述阈值为255的情形中,负权重评分Score_neg可以与该权重组的潜在贡献值相关,因此,负权重评分Score_neg的绝对值越高,优先级越高;正权重评分Score_pos可以与该权重组的卷积计算的部分和相关,因此,正权重评分Score_pos越高,优先级也越高。
根据上述分析,可以基于各权重组的正权重评分Score_pos和负权重评分Score_neg,确定各权重组的权重总评分Score,继而可以根据该权重总评分Score确定各权重组的优先级。
图4示意性地显示了一个权重组的正权重评分Score_pos和负权重评分Score_neg对该权重组的优先级的影响。如图4所示,当一个权重组的正权重评分Score_pos和负权重评分Score_neg的绝对值都很高时,该权重组具有高优先级;当一个权重组的正权重评分Score_pos和负权重评分Score_neg的绝对值中的一个较高,而另一个较低时,该权重组具有中优先级;当一个权重组的正权重评分Score_pos和负权重评分Score_neg的绝对值都很低时,该权重组具有低优先级。
在一些示例性实施例中,可以基于正权重评分Score_pos和负权重评分Score_neg的加权求和来计算该权重组的权重总评分Score。作为非限制性示例,可以按照下面的式3以加权求和的方式来计算权重组的权重总评分:
式4
其中,Score_pos表示权重组的正权重评分,Score_neg表示权重组的负权重评分,Score表示权重组的权重总评分,γ表示大于等于0且小于等于1的系数。
参见图5,其示意性地显示了对卷积神经网络的用于输入数据的并行的输入通道进行分组,以及基于通道组对每个卷积核进行分组和排序的情形。在一些示例性实施例中,可以基于硬件资源(例如,预处理器)的处理能力将各卷积核分成多个权重组,每个权重组包括的权重矩阵的数量可以与该硬件资源的处理能力相对应。作为非限制性示例,硬件资源的处理能力可以包括该硬件资源具有的用于进行并行处理的并行处理通道的数量。对于图1A所示的输入特征图,卷积神经网络一般包括与其深度Cin的数值相等的数量的并行的输入通道,即Cin个并行的输入通道。应理解的是,硬件资源,例如预处理器,用于对数据进行并行处理的并行处理通道的数量Cgi是有限的,一般情况下,其小于输入通道的数量Cin。因此,可以基于硬件资源的用于对数据进行并行处理的并行处理通道的数量Cgi,对卷积神经网络的并行的Cin个输入通道进行分组。如图5所示,卷积神经网络的Cin个输入通道被分为四个通道组,也就是说,Cin/Cgi=4,并且每个通道组中包括的输入通道的数量为Cgi个。然后,基于对输入通道进行分组得到的通道组,可以对卷积神经网络的每一个卷积核进行分组。对于每一个卷积核而言,其权重组与通道组一一对应,并且每一个权重组包括的权重矩阵的数量也是Cgi个。如图5所示,每一个卷积核的四个权重组还可以被排序。作为非限制性示例,可以利用上述的权重组的权重总评分来对每一个卷积核的四个权重组进行排序。由于各卷积核包括的权重矩阵互不相同,因此,各卷积核的权重组的排序情况也可能不同。
应理解的是,在另一些示例性实施例中,卷积神经网络的并行的Cin个输入通道可能无法被并行处理通道的数量Cgi整除。在这种情况下,分组结果中的一个通道组包括的输入通道的数量可以小于并行处理通道的数量Cgi,但其中输入通道的数量与对应的权重组中权重矩阵的数量依然是相等的。替代地,在上述情况下,也可以通过补零的方式将卷积神经网络的并行的输入通道的数量Cin扩展到能够被并行处理通道的数量Cgi整除的数量,继而可以实现对输入通道的分组。应理解的是,通过补零对卷积神经网络的并行的输入通道的数量Cin进行扩展的方式,可以根据实际需要灵活地加以应用,例如,可以在Cin个输入通道之后集中进行补零,或者可以在Cin个输入通道中以间置的方式进行补零。本公开关于如何对输入通道进行补零的方式不作限制,只要补零后的输入通道的数量能够被并行处理通道的数量整除便可。
参见图6,其以流程图的形式示意性地示出了根据本公开的一个示例性实施例的用于对权重组进行排序的一种排序方法,该排序方法可被应用于图2所示的预处理方法中的排序步骤120。如图6所示,排序方法120'可以包括步骤121、122、123和124:
步骤121,计算每个权重组中所有正权重值的和;
步骤122,计算每个权重组中所有负权重值的和;
步骤123,基于每个权重组中所有正权重值的和以及所有负权重值的和,确定每个权重组的优先级;
步骤124,基于各权重组的优先级,对所述多个权重组进行排序。
应理解的是,在步骤121中,计算每个权重组中所有正权重值的和,从而可以获得该权重组的正权重评分Score_pos,在步骤122中,计算每个权重组中所有负权重值的和,从而可以获得该权重组的负权重评分Score_neg,并且在步骤123中,可以基于上述式4,利用已经获得的正权重评分Score_pos和负权重评分Score_neg以加权求和的方式计算权重组的权重总评分Score,从而可以确定该权重组的优先级。然而,应该认识到的是,上述内容仅仅是计算权重组的正权重评分Score_pos、负权重评分Score_neg和权重总评分Score的一个非限制性示例。事实上,用于计算权重组的正权重评分Score_pos和负权重评分Score_neg、以及基于它们计算总体评分Score的任何合适方法都可以用于根据本公开的对神经网络进行预处理的预处理方法,本公开对此并不加以限制。
继续参见图2,步骤130中基于各权重组的权重值估算的极值,确定各权重组的潜在贡献因子。如前面已经描述的,从式3可以认识到,在对第1至第Cin/Cgi个权重组进行三维卷积计算的过程中,每次完成对一个权重组(例如第K个权重组)的计算时,可以对剩余的权重组(例如,第K+1至第Cin/Cgi个权重组)对于整个卷积运算的结果的影响进行预估,以便决定是否需要继续进行剩下各权重组的卷积运算。基于上述认识,本公开针对每个权重组引入了潜在贡献因子的概念,使得在对卷积神经网络的三维卷积计算中,可以针对每个权重组继而引入潜在贡献值的概念,潜在贡献值可以等于潜在贡献因子乘以输入特征图中的最大特征值,以便对整个三维卷积运算的计算结果进行评估。在另一个示例性实施例中,潜在贡献值也可以等于潜在贡献因子乘以根据系统规格预设的输入数据的最大值,以便对整个三维卷积运算的计算结果进行评估。因此,在卷积运算的过程中,所有剩余权重组的总体潜在贡献值可以等于剩余各权重组的潜在贡献值之和。作为非限制性示例,系统规格可以是针对所处理的数据规定的数位限制,例如,可以规定用于输入数据的全部数位为8位。在用于输入数据的全部数位为8位无符号数的情况下,根据系统规格预设的输入数据的最大值可以为255。应理解的是,根据实际需要,潜在贡献值也可以等于潜在贡献因子乘以其他合适的数值,本公开对此不作限制。
因为每个权重组的权重组潜在贡献值可以被计算为输入特征图的最大特征值或者根据系统规格预设的输入数据的最大值与该权重组的权重值估算的潜在贡献因子的乘积,因此,在预处理方法100中,可以将基于权重组的权重值估算的极值确定为该权重组的潜在贡献因子PC_factor。
作为非限制性示例,权重组的潜在贡献因子PC_factor可以是权重组的正权重评分Score_pos和负权重评分Score_neg的加权求和,例如,可以按照下面的式5来计算权重组的潜在贡献因子PC_factor:
PC_factor = α×(Score_pos + β×Score_neg) 式5
其中,α和β分别为大于等于0且小于等于1的系数。此外,作为非限制性示例,如前面已经详述的,式5中的正权重评分Score_pos可以被计算为权重组中所有正权重值的和,负权重评分Score_neg可以被计算为权重组中所有负权重值的和。此外,在另一些示例性实施例中,权重组的潜在贡献因子PC_factor可以被计算为权重组中绝对值最大的正权重值乘以该权重组中正权重值的数量,或者权重组的潜在贡献因子PC_factor可以被计算为权重组中绝对值最大的负权重值乘以该权重组中负权重值的数量。
应该认识到的是,根据不同的计算方式,基于权重组的权重值估算的极值可以有不同的形式,因此,权重组的潜在贡献因子PC_factor也可以具有不同的形式。所以,基于权重组的权重值估算极值的任何合适的计算方式,以及所得的极值,都可以用于确定权重组的潜在贡献因子PC_factor,本公开对此不作限制。
参见图7,其以流程图的形式示意性地示出了根据本公开的另一个示例性实施例的用于卷积神经网络的预处理方法,其中,卷积神经网络可以包括多个卷积层,每个卷积层可以包括多个卷积核。如图7所示,预处理方法200可以包括步骤210、220、230、240、250、260、270和280:
步骤210,输入卷积神经网络的初始模型信息;
步骤220,确定进行处理的卷积层,并使卷积层序数递增;
步骤230,确定进行处理的卷积核,并使卷积核序数递增;
步骤240,利用预处理方法100对卷积核进行处理;
步骤250,确定是否已经对所有卷积核进行了处理,如果是,则执行步骤260,如果否,则返回执行步骤230;
步骤260,更新卷积层的各卷积核的权重组的顺序和潜在贡献因子;
步骤270,确定是否已经对所有卷积层进行了处理,如果是,则执行步骤280,如果否,则返回执行步骤220;
步骤280,输出预处理后的卷积神经网络的模型信息。
在步骤210中,卷积神经网络的初始模型信息,例如但不限于,可以包括该卷积神经网络的多个卷积层的信息以及各卷积层包括的多个卷积核的信息等。在步骤220中,确定从第一个卷积层开始进行处理,每次完成对一个卷积层的确定时,将卷积层的序号递增,例如加一,以便确定下一次可以对接下来的一个卷积层进行处理。类似地,在步骤230中,确定从卷积层的第一个卷积核开始进行处理,每次完成对一个卷积核的确定时,将卷积核的序号递增,例如加一,以便确定下一次对接下来的一个卷积核进行处理。在步骤240中,利用前面描述的预处理方法100对卷积核进行处理。应理解的是,上文中关于预处理方法100描述的各种示例性实施例都可以被应用到步骤240中,用于实现对卷积核的预处理。关于这些示例性实施例,这里不再赘述。在步骤250中,判断是否已经对所有卷积核进行了处理;如果否,则继续对剩余的卷积核进行处理,如果是,则执行后续步骤。在步骤260中,根据步骤240中的排序结果以及计算得到的潜在贡献因子,对卷积层的各卷积核的权重组的顺序和潜在贡献因子进行更新,从而获得更新的模型信息。在步骤270中,判断是否已经对所有卷积层进行了处理;如果否,则继续对剩余的卷积层进行处理,如果是,则执行后续步骤。在步骤280中,可以将经过预处理的卷积神经网络的模型信息输出到合适的存储器(例如但不限于,外部存储器等)中进行存储。
通过对卷积神经网络模型的离线预处理,可以提高卷积神经网络系统提前终止当前卷积运算的几率,由此能够加速计算,降低功耗,并且不会影响模型推理的准确性。
参见图8,其以流程图的形式示意性地示出了根据本公开的一个示例性实施例的用于卷积神经网络的加速方法。图8所示的加速方法300可以应用于经由上述预处理方法100、200进行预处理的卷积神经网络。如图所示,加速方法300可以包括步骤310、320、330:
步骤310,获取各权重组的排序和潜在贡献因子;
步骤320,基于输入数据和潜在贡献因子,生成各权重组的潜在贡献值;以及
步骤330,基于所述排序将各权重组逐一与输入数据进行卷积计算,其中,每完成一个权重组与输入数据的卷积计算时,将对应于所有已计算权重组的当前部分和与所有剩余权重组的潜在贡献值之和进行比较,当满足预定的提前终止条件时,终止所述卷积运算并且将所述当前部分和作为所述卷积运算的结果。
在步骤310中,可以从例如外部存储器中获取先前经过预处理的卷积神经网络的各权重组的排序以及其潜在贡献因子。如前面提到的,根据本公开的预处理方法可以离线执行,即,在没有对输入特征图之类的输入数据进行处理时,预先对卷积神经网络进行预处理,由此获得的模型参数,例如卷积神经网络的各权重组的排序以及其潜在贡献因子,可以被存储在外部存储器中。在对输入特征图之类的输入数据进行处理的过程中,可以从外部存储器读取卷积神经网络的模型参数,以便将其应用于根据本公开的加速方法300。
在步骤320中,基于输入数据和潜在贡献因子,生成各权重组的潜在贡献值。在根据本公开的预处理方法中,已经基于各权重组的权重值获得了各权重组的潜在贡献因子。然而,各权重组的潜在贡献值除了取决于潜在贡献因子,还可以取决于输入数据。作为非限制性示例,可以将输入数据中的最大值乘以各权重组的潜在贡献因子,从而计算得到各权重组的潜在贡献值,即:PC_value (k) = Max (Fmap)×PC_factor (k),其中,PC_value(k)表示第k个权重组的潜在贡献值,Max (Fmap)表示作为输入数据的输入特征图Fmap中的最大值,PC_factor (k)表示第k个权重组的潜在贡献因子。
在步骤330中,基于所述排序将各权重组逐一与输入数据进行卷积计算,其中,如前面已经详细分析的,该排序表示了各权重组对卷积运算结果的影响程度,排序越高,则表明该权重组对卷积运算结果的影响越大,排序越低,则表明该权重组对卷积运算结果的影响越小。在该步骤中,每完成一个权重组与输入数据的卷积计算时,可以将对应于所有已计算权重组的当前部分和与所有剩余权重组的潜在贡献值之和进行比较,当满足预定的提前终止条件时,终止所述卷积运算并且将所述当前部分和作为所述卷积运算的结果。应理解的是,步骤330中关于提前终止的构思,实质上是基于这样的认识,即:当发现所有剩余权重组的基于极值估算的潜在贡献值之和,已经无法使各权重组的卷积运算结果在经受激活函数作用后的输出结果发生改变时,那么对这些剩余权重组进行的计算是无意义的,因此可以省去这些无意义的计算。
参见图9,其以流程图的形式示意性地示出了图8所示的加速方法中的步骤330包括的步骤。如图9所示,图8所示的加速方法中的步骤330可进一步包括步骤331、332、333、334、335和336:
步骤331,确定用于进行计算的权重组,并使权重组的排序递增;
步骤332,将权重组与输入数据进行卷积计算;
步骤333,计算对应于所有已计算权重组的当前部分和,以及计算所有剩余权重组的潜在贡献值之和;
步骤334,判断是否满足预定的提前终止条件,如果否,则执行步骤335,如果是,则继续执行步骤336;
步骤335,判断是否已经对所有权重组都进行了计算,如果否,则返回执行步骤331,如果是,则继续执行步骤336;
步骤336,将当前部分和作为卷积运算结果输出。
在步骤331中,确定从权重组的最高排序的权重组开始进行计算,每次完成对一个权重组的确定时,将权重组的排序递增,例如加一,以便确定下一次可以对接下来的一个权重组进行计算。在步骤332中,利用在步骤331中确定的权重组与输入数据进行卷积计算。应理解的是,该卷积运算可以应用任何合适的卷积运算方法。在步骤333中,计算对应于所有已计算权重组的当前部分和,以及计算所有剩余权重组的潜在贡献值之和,以便用于后续判断是否需要提前终止卷积运算。在一个非限制性示例中,从排序第一的权重组开始,每完成对一个权重组的计算,可以将当前计算结果与先前的计算结果累加,以生成所有已计算权重组的当前部分和,同时可以从先前的所有剩余权重组的潜在贡献值之和中减去当前完成计算的权重组对应的潜在贡献值,以生成所有剩余权重组的潜在贡献值之和。在步骤334中,预定的提前终止条件可以根据实际需要而加以设定,只要其是基于所有已计算权重组的当前部分和以及所有剩余权重组的潜在贡献值之和便可。这一点将在下面进一步详细描述。在步骤335中,判断是否已经对所有权重组都进行了计算。在步骤336中,将当前部分和作为卷积运算结果输出。
如前面已经描述的,提前终止的构思,实质上是基于这样的认识,即:当发现所有剩余权重组的基于极值估算的潜在贡献值之和,已经无法使各权重组的卷积运算结果在经受激活函数作用后的输出结果发生改变时,那么对这些剩余权重组进行的计算是无意义的,因此可以省去这些无意义的计算。作为一个非限制性示例,当所有剩余权重组的潜在贡献值之和的符号为正时,例如,基于权重组的正权重评分Score_pos和输入特征图中的最大特征值Max(Fmap)来确定潜在贡献值时,预定的提前终止条件可以设定成:当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果小于或等于第一阈值,则终止所述卷积运算。此外,作为另一个非限制性示例,当所有剩余权重组的潜在贡献值之和的符号为负时,例如,基于权重组的负权重评分Score_neg和输入特征图中的最大特征值Max(Fmap)来确定潜在贡献值时,预定的提前终止条件可以设定成:当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果大于或等于第二阈值,则终止所述卷积运算。应理解的是,上述两种预定的提前终止条件可以结合起来使用,例如,对于所有剩余权重组,可以确定符号为正的第一潜在贡献值之和,以及符号为负的第二潜在贡献值之和,将当前部分和与所有剩余权重组的第一潜在贡献值之和相加,如果所得结果小于或等于第一阈值,则终止所述卷积运算,以及将当前部分和与所有剩余权重组的第二潜在贡献值之和相加,如果所得结果大于或等于第二阈值,则也终止所述卷积运算。
在卷积神经网络中,卷积层的输出结果在由批量归一化层(即BatchNormalization层,也称为BN层)进行归一化处理后,将被施加激活函数以进行激活。因此,第一阈值和第二阈值可以基于卷积神经网络中采用的激活函数来对应地设定。
如图10所示,其示意性地显示了一种常用的激活函数ReLU函数。ReLU函数在输入值小于或等于0时,输出为0。因此,对于采用ReLU函数作为激活函数的情况下,可以将预定的提前终止条件设定为:当所有剩余权重组的潜在贡献值之和的符号为正时,如果当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果小于或等于零,则终止卷积运算。也就是说,可以将第一阈值设定为零。此外,同样对于ReLU函数,由于特征数据存在数位的限制,例如对于8位的特征数据而言,特征数据的极大值为255,因此如果卷积运算结果超过了该值也会被截断为255。所以,在这种情况下,可以将预定的提前终止条件设定为:当所有剩余权重组的潜在贡献值之和的符号为负时,如果当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果大于或等于特征数据的全部数位对应的最大数值,则终止卷积运算。也就是说,可以将第二阈值设定为特征数据的数位对应的最大数值。作为非限制性示例,特征数据的全部数位可以为8位,并且在这种情况下,其对应的最大数值为255,所以在这种情况下,第二阈值可以被设定为255。
此外,在根据本公开的另一些示例性实施例中,可以将预定的提前终止条件设定为:当前部分和与所有剩余权重组的潜在贡献值之和的符号相反时,将所述当前部分和与所有剩余权重组的潜在贡献值之和相加,如果所得结果与所述当前部分和具有相同的符号,则终止卷积运算。应理解的是,关于卷积运算的预定的提前终止条件可以根据实际需要而加以设定,只要其是基于所有已计算权重组的当前部分和以及所有剩余权重组的潜在贡献值之和便可,本公开对此不作限制。
此外,还应理解的是,根据本公开的用于卷积神经网络的加速方法可用于对输入特征图的数据进行实时处理,而根据本公开的用于卷积神经网络的预处理方法则可以用于对卷积神经网络进行离线的预处理。对卷积神经网络进行离线预处理的结果可以存储在外部储存器中,以便可以由加速方法在对输入特征图的数据进行实时处理时读取和调用。
根据本公开的用于卷积神经网络的加速方法能够预测以及提前终止无意义的卷积运算,从而可以减小乘法的操作次数、减少数据的读取次数、由此能够加速神经网络的计算、降低系统功耗、同时保持网络的准确度。
例如,在将所有剩余权重组的潜在贡献值按照下式计算的情况下:
式6
其中,PC_value(k)表示对应于已计算的第k个权重组的所有剩余权重组的潜在贡献价值,α和β分别表示大于等于0且小于等于1的系数,Score_pos表示权重组的正权重评分,其可以被计算为权重组中所有正权重值的和, Score_neg表示权重组的负权重评分,其可以被计算为权重组中所有负权重值的和。同时,根据前述式4对权重组进行排序。在不损失精度的实施方式中,针对现有的各神经网络,各自的操作节省情况如下:
而在另一些示例性实施例中,可以对系数α、β和γ进行调整,以便进一步减小计算量。例如但不限于,α=0.75,β=0.5,γ=0.125。此外,在又一些示例性实施例中,系数γ在不同的排序策略中是可变的,例如,对于第一排序策略,系数γ=1,而对于其他排序策略,γ=0。
参见图11,其以框图的形式示意性地示出了根据本公开的一个示例性实施例的用于卷积神经网络的加速系统。如图11所示,加速系统400可以包括:预处理器410、存储单元420、直接存储器存取单元(即DMA)430、微控制单元(即MCU)440、输入缓冲器450、输出缓冲器460、以及计算单元470。处理器410、存储单元420和DMA单元430之间通过数据总线彼此连接,并且MCU 440、DMA单元430、输入缓冲器450、输出缓冲器460之间也都通信连接,以便传输指令和数据。此外,计算单元470可以配置成接收来自MCU 440的指令和来自输入缓冲器450、输出缓冲器460的数据,并且将计算结果输出到输出缓冲器460。
预处理器410可以用于获取输入数据并根据卷积神经网络的模型生成指令。作为非限制性示例,预处理器410还可以配置成执行前面详细描述的根据本公开的预处理方法,并将预处理后的卷积神经网络的模型信息输出到存储单元420。MCU 440用于每一层参数和阈值的配置,以及中断处理等,例如但不限于,其可以配置成控制DMA单元430和计算单元470的操作。预处理器410和MCU 440可以被实施成一个或多个微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来进行操作的任何设备。
存储单元420可以是能够把计算机可读、处理器可执行程序指令以及数据存储为计算机可执行代码的非暂态介质,其一般可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等)。此外,还应认识到的是,在一些示例中,存储单元420一般还可以包括硬盘驱动器、固态驱动器、可移除介质、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。
计算单元470可以用于对权重数据和输入数据进行卷积、归一化、激活函数和池化等运算,并用于判断是否提前终止当前卷积运算。如图10所示,计算单元470可以包括预测模块471、标量模块472和池化模块473。具体而言,预测模块471可以配置成执行前面描述的根据本公开的加速方法,用于对权重数据和输入数据进行卷积运算,并且判断是否提前终止当前卷积运算。标量模块472可以配置成对预测模块471的卷积运算结果进行归一化处理,并应用激活函数进行激活。池化模块473可以配置成对标量模块472的输出结果进行池化处理。
应理解的是,在一些非限制性示例性实施例中,预处理器410和计算单元470可以由同一个图形处理单元(即,GPU)取代,以执行两者的相应功能。GPU可以对卷积神经网络进行离线预处理,也可以对输入数据进行在线处理。在另一些非限制性示例性实施例中,用于卷积神经网络的加速系统可以省略DMA单元430,并且可以将其结构和功能结合在存储单元420中。此外,在又一些非限制性示例性实施例中,用于卷积神经网络可以省略MCU 440。
参见图12,其以框图的形式示意性地示出了一种预测处理元件500的结构,该预测处理元件500可以被应用于图10所示的加速系统中的预测模块471。如图11所示,该预测处理元件500可以包括乘法器510、加法器520、比较器530以及多路复用器540(即MUX)。乘法器510、加法器520、比较器530以及多路复用器540可以是任何适合适的硬件装置或软件模块,本公开对此不作限制。在图12所示的预测处理元件500中,乘法器510将输入的权重值和诸如输入特征图之类的输入数据相乘;随后,将乘积发送给加法器520进行相加求和,以生成当前部分和;由加法器520生成的当前部分和被分别发送给比较器530和多路复用器540;比较器530接收当前部分和,并且还接收权重组索引和潜在贡献配置(例如,可以从输入缓冲器450中获取权重组索引和潜在贡献配置),并且基于当前部分和与潜在贡献值来确定是否满足预定的提前终止条件;如果满足预定的提前终止条件,则终止卷积运算,并将提前终止的消息发送给多路复用器540;多路复用器540接收来自加法器520的当前部分和,同时还接收根据需要设置的阈值,以便根据比较器530的输出,确定是输出当前部分和还是将输入阈值作为结果输出。具体地,当多路复用器540接收到无需提前终止的消息时,多路复用器540输出当前部分和以作为输出特征图;当多路复用器540接收到提前终止的消息时,则不输出当前部分和,而是将输入阈值作为结果输出。应理解的是,多路复用器540接收的输入阈值根据需要可以是不同的数值,例如,对于图9所示的ReLU函数,根据实际需要,输入阈值可以为0,也可以为255。关于卷积运算、针对提前终止条件的判断,该预测处理元件500可以应用前述的任何示例性实施例,本公开在此不再赘述。
应理解的是,上面关于图11、图12描述的各个模块、器件、单元、元件等均可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些模块、器件、单元、元件等可以被实现为计算机可执行代码/指令,该计算机可执行代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些模块可以被实现为硬件逻辑/电路。例如,在一些示例性实施例中,这些模块、器件、单元、元件中的一个或多个可以一起在片上系统(SoC)中实现。SoC可以包括集成电路芯片(其包括处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
虽然根据本公开的预处理方法和加速方法在图11、图12中被例示成通过加速系统400来实施,但是预处理方法和加速方法或者其部分可以使用可由计算设备访问的任何形式的计算机可读存储介质来实施,例如但不限于,以存储有计算机可执行指令的计算机可读存储介质的形式,其中,计算机可执行指令当在处理器上执行时,使该处理器执行根据本公开的预处理方法和加速方法。
应理解的是,计算机可读存储介质可以包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除存储介质,信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机可读存储介质可以包括而不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算设备访问的任何其他存储介质。
因此,根据本公开的加速系统对额外的实时处理的需求更小,对额外硬件资源的需求更小,减少了操作次数,并且能够采用高速并行的硬件。而且,根据本公开的技术方案通过在优化中利用离线的卷积核分组排序和估算的潜在贡献,以及在卷积神经网络加速系统中的提前停止,能够主动且有规律地减少计算,同时保持精度。
本文中使用的术语仅用于描述本公开中的实施例,并不意图限制本公开。如本文中使用的,单数形式“一个”、“一”和“该”旨在也包括复数形式,除非上下文清楚地另有指示。还要理解的是,术语“包括”和“包含”当在本公开中使用时,是指所述及的特征的存在,但不排除一个或多个其他特征的存在或者添加一个或多个其他特征。如本文中使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任意和全部组合。将理解的是,尽管术语“第一”、“第二”、“第三”等在本文中可以用来描述各种特征,但是这些特征不应当由这些术语限制。这些术语仅用来将一个特征与另一个特征相区分。
除非另有定义,本文中使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员所通常理解的相同含义。还要理解的是,诸如那些在通常使用的字典中定义的之类的术语应当被解释为具有与其在相关领域和/或本说明书上下文中的含义相一致的含义,并且将不在理想化或过于正式的意义上进行解释,除非本文中明确地如此定义。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点被包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
本文在软件硬件元件或程序模块的一般上下文中描述了各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”,“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。此外,还应理解的是,在流程图中表示或在此以其他方式描述的方法的各个步骤仅仅示例性的,并不意味着所图示或描述的方法的步骤必须按照所示或所述的步骤执行。相反,在流程图中表示或在此以其他方式描述的方法的各个步骤可以按照与本公开中不同的顺序被执行,或者可以同时被执行。此外,根据需要,在流程图中表示或在此以其他方式描述的方法还可以包括其他附加的步骤。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,则可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路、具有合适的组合逻辑门电路的专用集成电路、可编程门阵列、现场可编程门阵列等。
本技术领域的普通技术人员应该理解上述实施例方法的全部或部分步骤可以通过程序指令相关的硬件完成,所述程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括执行方法实施例的步骤之一或其组合。
尽管已经结合一些实施例详细地描述了本公开,但是其并不旨在被限制于在本文中所阐述的特定形式。而是,本公开的范围仅由所附权利要求来限定。
Claims (10)
1.一种用于卷积神经网络的预处理方法,其中,所述卷积神经网络包括卷积层,所述卷积层包括卷积核,所述卷积核包括形成为至少一个权重矩阵的权重值,所述预处理方法包括以下步骤:
将所述卷积核分成多个权重组,每个权重组包括至少一个权重矩阵;
基于各权重组的权重值,对所述多个权重组进行排序;
基于所述各权重组的权重值估算的极值,确定所述各权重组的潜在贡献因子。
2.根据权利要求1所述的预处理方法,其中,基于各权重组的权重值,对所述多个权重组进行排序的步骤包括:
计算每个权重组中所有正权重值的和;
计算每个权重组中所有负权重值的和;
基于每个权重组中所有正权重值的和以及所有负权重值的和,确定每个权重组的优先级;
基于各权重组的优先级,对所述多个权重组进行排序。
3.根据权利要求1所述的预处理方法,其中,基于所述各权重组的权重值估算的极值,确定所述各权重组的潜在贡献因子的步骤包括将所述潜在贡献因子确定为下述各项中的一项:
每个权重组中所有正权重值的和与所有负权重值的和的加权求和;
每个权重组中绝对值最大的正权重值乘以所述权重组中正权重值的数量;
每个权重组中绝对值最大的负权重值乘以所述权重组中负权重值的数量。
4.一种用于卷积神经网络的加速方法,其应用于由根据权利要求1至3中任一项所述的预处理方法进行预处理的卷积神经网络,所述加速方法包括以下步骤:
获取所述各权重组的排序和潜在贡献因子;
基于输入数据和所述潜在贡献因子,或者基于系统规格预设的输入数据的最大值和所述潜在贡献因子,生成所述各权重组的潜在贡献值;
基于所述排序将所述各权重组逐一与所述输入数据的对应部分进行卷积计算,其中,每完成一个权重组与所述输入数据的对应部分的卷积计算时,将对应于所有已计算权重组的当前部分和与所有剩余权重组的潜在贡献值之和进行比较,当满足预定的提前终止条件时,终止所述卷积运算并且将所述当前部分和作为所述卷积运算的结果。
5.根据权利要求4所述的加速方法,其中:
所述所有剩余权重组的潜在贡献值之和的符号为正;
所述预定的提前终止条件包括:所述当前部分和与所述所有剩余权重组的潜在贡献值之和相加,所得结果小于或等于第一阈值,则终止所述卷积运算。
6.根据权利要求4所述的加速方法,其中:
所述所有剩余权重组的潜在贡献值之和的符号为负;
所述预定的提前终止条件包括:所述当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果大于或等于第二阈值,则终止所述卷积运算。
7.一种用于卷积神经网络的加速系统,其中,所述卷积神经网络包括卷积层,所述卷积层包括卷积核,所述卷积核包括形成为多个权重矩阵的权重值,所述加速系统包括:
预处理器,其配置成获取输入数据,以及针对所述卷积神经网络:
将所述卷积核分成多个权重组,每个权重组包括多个权重矩阵;
基于各权重组的权重值,对所述多个权重组进行排序;
基于所述各权重组的权重值估算的极值,确定所述各权重组的潜在贡献因子;
存储单元,其配置成存储所述输入数据以及所述卷积神经网络的卷积层的各权重组的排序和潜在贡献值;
计算单元,其配置成:
自所述存储单元获取所述各权重组的排序和潜在贡献因子;
基于输入数据和所述潜在贡献因子,或者基于系统规格预设的输入数据的最大值和所述潜在贡献因子,生成所述各权重组的潜在贡献值;
基于所述排序将所述各权重组逐一与所述输入数据进行卷积计算,其中,每完成一个权重组与所述输入数据的卷积计算时,将对应于所有已计算权重组的当前部分和与所有剩余权重组的潜在贡献值之和进行比较,当满足预定的提前终止条件时,终止所述卷积运算并将所述当前部分和作为卷积运算结果。
8.根据权利要求7所述的加速系统,其中,所述处理器被进一步配置成:
计算每个权重组中所有正权重值的和;
计算每个权重组中所有负权重值的和;
将每个权重组的所有负权重值的和的绝对值与所有正权重值的和进行加权求和,以确定每个权重组的优先级;
基于各权重组的优先级,对所述多个权重组进行排序。
9.根据权利要求7所述的加速系统,其中,所述计算单元被进一步配置成:
所述所有剩余权重组的潜在贡献值之和的符号为正;
所述预定的提前终止条件包括:所述当前部分和与所述所有剩余权重组的潜在贡献值之和相加,所得结果小于或等于第一阈值,则终止所述卷积运算。
10.根据权利要求7所述的加速系统,其中,所述计算单元被进一步配置成:
所述所有剩余权重组的潜在贡献值之和的符号为负;
所述预定的提前终止条件包括:所述当前部分和与所有剩余权重组的潜在贡献值之和相加,所得结果大于或等于第二阈值,则终止所述卷积运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111271361.6A CN116090511A (zh) | 2021-10-29 | 2021-10-29 | 卷积神经网络的预处理方法和加速方法、加速系统和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111271361.6A CN116090511A (zh) | 2021-10-29 | 2021-10-29 | 卷积神经网络的预处理方法和加速方法、加速系统和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116090511A true CN116090511A (zh) | 2023-05-09 |
Family
ID=86197763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111271361.6A Pending CN116090511A (zh) | 2021-10-29 | 2021-10-29 | 卷积神经网络的预处理方法和加速方法、加速系统和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116090511A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116402116A (zh) * | 2023-06-05 | 2023-07-07 | 山东云海国创云计算装备产业创新中心有限公司 | 神经网络的剪枝方法、系统、设备、介质及图像处理方法 |
-
2021
- 2021-10-29 CN CN202111271361.6A patent/CN116090511A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116402116A (zh) * | 2023-06-05 | 2023-07-07 | 山东云海国创云计算装备产业创新中心有限公司 | 神经网络的剪枝方法、系统、设备、介质及图像处理方法 |
CN116402116B (zh) * | 2023-06-05 | 2023-09-05 | 山东云海国创云计算装备产业创新中心有限公司 | 神经网络的剪枝方法、系统、设备、介质及图像处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11137981B2 (en) | Operation processing device, information processing device, and information processing method | |
US20190265949A1 (en) | Information processing apparatus, information processing method, and recording medium | |
US11880768B2 (en) | Method and apparatus with bit-serial data processing of a neural network | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
KR20190053262A (ko) | 신경망 계산 유닛에서 입력 데이터의 희소성 이용 | |
US20170061279A1 (en) | Updating an artificial neural network using flexible fixed point representation | |
CN110689109A (zh) | 神经网络方法和装置 | |
KR20190044878A (ko) | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 | |
US20190244097A1 (en) | Information processing apparatus and information processing method | |
CN113222102B (zh) | 用于神经网络模型量化的优化方法 | |
US20210271973A1 (en) | Operation method and apparatus for network layer in deep neural network | |
KR20190089685A (ko) | 데이터를 처리하는 방법 및 장치 | |
CN116090511A (zh) | 卷积神经网络的预处理方法和加速方法、加速系统和介质 | |
US11573765B2 (en) | Fused convolution and batch normalization for neural networks | |
US20230068941A1 (en) | Quantized neural network training and inference | |
CN116306879A (zh) | 数据处理方法、装置、电子设备以及存储介质 | |
CN110969259B (zh) | 具有数据关联自适应舍入的处理核心 | |
US11100321B2 (en) | Information processing method and information processing system | |
CN109800873B (zh) | 图像处理方法及装置 | |
CN111767204B (zh) | 溢出风险检测方法、装置及设备 | |
CN220773595U (zh) | 可重配置处理电路以及处理核心 | |
CN113033798B (zh) | 一种降低精度损失的装置及方法 | |
US20210319285A1 (en) | Information processing apparatus, information processing method and computer readable medium | |
CN111767980B (zh) | 模型优化方法、装置及设备 | |
US20240086677A1 (en) | Learned column-weights for rapid-estimation of properties of an entire excitation vector |
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 |