CN111382854B - 一种卷积神经网络处理方法、装置、设备及存储介质 - Google Patents
一种卷积神经网络处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111382854B CN111382854B CN201811627040.3A CN201811627040A CN111382854B CN 111382854 B CN111382854 B CN 111382854B CN 201811627040 A CN201811627040 A CN 201811627040A CN 111382854 B CN111382854 B CN 111382854B
- Authority
- CN
- China
- Prior art keywords
- matrix
- input neuron
- original
- transformation
- neural network
- 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.)
- Active
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 117
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 239000011159 matrix material Substances 0.000 claims abstract description 515
- 210000002364 input neuron Anatomy 0.000 claims abstract description 249
- 230000009466 transformation Effects 0.000 claims abstract description 211
- 238000012545 processing Methods 0.000 claims abstract description 86
- 238000013139 quantization Methods 0.000 claims abstract description 84
- 238000000034 method Methods 0.000 claims abstract description 58
- 210000004205 output neuron Anatomy 0.000 claims abstract description 38
- 238000006243 chemical reaction Methods 0.000 claims abstract description 22
- 238000004364 calculation method Methods 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 5
- 238000007667 floating Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 210000002569 neuron Anatomy 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000035945 sensitivity Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013144 data compression Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
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)
- Image Analysis (AREA)
Abstract
本发明公开了一种卷积神经网络处理方法、装置、设备及存储介质。该方法包括:获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵,对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,根据目标权值矩阵和所述目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵。本发明实施例实现了通过Winograd变换降低卷积神经网络的时间复杂度,以及通过量化处理降低卷积神经网络的数据位宽,进而提高了卷积神经网络的计算速度。
Description
技术领域
本发明实施例涉及深度学习技术,尤其涉及一种卷积神经网络处理方法、装置、设备及存储介质。
背景技术
自2012年AlexNet被提出以来,卷积神经网络在图像处理领域取得了巨大成功,在各大图像竞赛中,卷积神经网络效果远超传统算法,频繁刷新业内各种评测指标。
由于信息安全和低时延的需求,神经网络的计算需要从云端迁移到移动终端,但随着卷积神经网络效果的提升,卷积神经网络的模型越来越复杂,计算量急剧增加。在云端,可以依靠GPU(Graphics Processing Unit,图形处理器)并行计算,对卷积神经网络进行加速,而在移动终端,由于计算资源相对匮乏,使得卷积神经网络的计算速度无法得到提高,进而无法在移动终端实现实时运行。
发明内容
本发明实施例提供一种卷积神经网络处理方法、装置、设备及存储介质,以提高卷积神经网络的计算速度。
第一方面,本发明实施例提供了一种卷积神经网络处理方法,该方法包括:
获取卷积神经网络的原始权值矩阵和输入神经元矩阵;
对所述原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对所述原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵;
根据所述目标权值矩阵和所述目标输入元矩阵,得到所述卷积神经网络的输出神经元矩阵。
进一步的,所述对所述原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,包括:
获取目标权值变换矩阵;
根据所述原始权值矩阵和所述目标权值变换矩阵,得到Winograd变换权值矩阵;
对所述Winograd权值变换矩阵进行量化处理,得到所述目标权值矩阵。
进一步的,所述对所述输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,包括:
获取目标输入神经元变换矩阵;
对所述原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵;
根据所述量化输入神经元矩阵和所述目标输入神经元变换矩阵,得到所述目标输入神经元矩阵。
进一步的,所述目标权值变换矩阵和所述目标输入神经元变换矩阵通过如下方式确定:
根据预设Winograd变换参数确定原始权值变换矩阵和原始输入神经元变换矩阵,所述原始权值变换矩阵和所述原始输入神经元变换矩阵的行数相等;
所述原始输入神经元变换矩阵中第i行的元素值之和大于变换阈值,则将所述原始输入神经元变换矩阵中第i行的各元素值乘以预设比例值,得到所述目标输入神经元变换矩阵,并将所述原始权值变换矩阵中第i行的各元素值除以所述预设比例值,得到所述目标权值变换矩阵,所述预设比例值小于1。
进一步的,所述对所述原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵,包括:
对所述原始输入神经元矩阵中各元素值加上预设调整值,得到调整后的原始输入神经元矩阵;
对所述调整后的原始输入神经元矩阵向零取整,得到所述量化输入神经元矩阵。
进一步的,所述目标权值矩阵中各元素的取值范围为[-127,127]。
进一步的,所述目标输入神经元矩阵中各元素的取值范围为[0,127]。
第二方面,本发明实施例还提供了一种卷积神经网络处理装置,该装置包括:
原始矩阵获取模块,用于获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵;
目标矩阵生成模块,用于对所述原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对所述原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵;
输出神经元矩阵生成模块,用于根据所述目标权值矩阵和所述目标输入神经元矩阵,得到所述卷积神经网络的输出神经元矩阵。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例第一方面所述的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例第一方面所述的方法。
本发明实施例,通过获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵,对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵,实现了通过Winograd变换降低卷积神经网络的时间复杂度,以及通过量化处理降低卷积神经网络的数据位宽,进而提高了卷积神经网络的计算速度。
附图说明
图1是本发明实施例中的一种卷积神经网络处理方法;
图2是本发明实施例中的另一种卷积神经网络处理方法;
图3是本发明实施例中的一种卷积神经网络处理装置的结构示意图;
图4是本发明实施例中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例
卷积神经网络一般由以下三部分组成,第一部分是输入层,第二部分由卷积层、激活层和池化层(或下采样层)组合而成,第三部分由一个全连接的多层感知机分类器(即全连接层)构成。其中,卷积层负责特征提取,使用了两个关键的概念:接收域和权值共享;池化层执行局部平均和子采样,减少特征对偏移和畸变的敏感性,这是由于特征的精确位置是次要的,而相对于其它特性的相对位置更重要;全连接层执行分类。
卷积层是卷积神经网络的核心,卷积层由一些称为特征图的二维神经元面组成,一个特征图上的每个神经元与前一层神经元的一个小子集(称为接收域)连接,二维空间上的局部接收域使得卷积神经网络可以从输入中提取初级特征。一个特征图中的神经元共享一个或多个权值矩阵(或称卷积核)。权值共享不仅大幅减少了需要训练的权值数目,也大大减少了需要的训练数据量,且降低了神经网络的复杂性,减轻了过拟合的问题。可以理解到,上述特征提取过程即为卷积运算过程。同时,可将特征图理解为神经元矩阵,相应的,可将当前层未进行特征提取(即卷积运算)的特征图作为输入神经元矩阵,将当前层经过特征提取(即卷积运算)的特征图作为输入神经元矩阵。当然可以理解到,当前层的输出神经元矩阵即为下一层的输入神经元矩阵。
卷积层的卷积运算占据了卷积神经网络的大部分计算量,计算量即指网络的运算次数,而网络的运算次数可用时间复杂度来表示。下面给出卷积运算的计算过程:假设原始输入神经元矩阵Min为Win*Hin的矩阵,原始权值矩阵N为F*F的矩阵,卷积步长为S,零填充个数为P,则每个输出神经元矩阵为Mout为Wout*Hout的矩阵,输出神经元矩阵的个数等于K,即输出神经元矩阵的个数等于权值矩阵个数,其中,Wout=(Win-F+2P)/S+1,Hout=(Wout-F+2P)/S+1。由此可知,根据原始输入神经元矩阵和原始权值矩阵,得到每个输出神经元矩阵需要经过的乘法运算次数为Wout*Hout*F*F,可以理解到,卷积运算中的乘法运算是卷积神经网络的时间复杂度的一部分。
为了提高卷积神经网络的计算速度,可考虑从以下两方面进行改进,具体的:其一、降低卷积神经网络的时间复杂度。由于卷积运算中的乘法运算是卷积神经网络的时间复杂度的一部分,因此,可考虑减少乘法运算的次数,具体可以采用非耗时运算(如加法运算)替代耗时运算(如乘法运算),如将数据从时域转换到频域进行处理;其二、降低卷积神经网络的数据位宽。具体可以采用量化方法进行。需要说明的是,采用非耗时运算操作替代耗时运算操作以降低卷积神经网络的复杂度的前提是:耗时运算的时钟周期要大于非耗时运算的时钟周期。
还需要说明的是,由于采样量化方法来降低卷积神经网络的数据位宽时,将损失部分数据精度,此外,采用非耗时运算替代耗时运算来降低卷积神经网络的时间复杂度时,也将损失数据精度。可以理解到,上述实现方式是通过降低卷积神经网络的结果精度来提高卷积神经网络的计算速度的,如果通过上述处理方式所得结果的误差在预设误差范围内,那么可认为上述处理方式是可行的。可以理解到,如果通过上述处理方式所得结果的误差不在预设范围内,那么即使采用上述处理方式提高了卷积神经网络的计算速度,上述处理方式也将认为是不可行的。换句话说,上述处理方式是否可行的前提是,通过上述处理方式所得结果的误差在预设误差范围内。相应的,可以理解到,为了确保上述处理方式可行,需要考虑如何降低结果的误差,即提高结果精度。下面将结合具体实施例对上述内容进行说明。
图1为本发明实施例提供的一种卷积神经网络处理方法的流程图,本实施例可适用于提高卷积神经网络的计算速度的情况,该方法可以由卷积神经网络确定装置来执行,该装置可以采用软件和/或硬件的方式实现,该装置可以配置于设备中,例如典型的是计算机或移动终端等。如图1所示,该方法具体包括如下步骤:
步骤110、获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵。
步骤120、对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵。
步骤130、对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵。
在本发明的实施例中,根据前文所述可知,为了提高卷积神经网络的计算速度,可考虑从降低卷积神经网络的时间复杂度以及降低卷积神经网络的数据位宽两个方面进行改进。其中,针对降低卷积神经网络的时间复杂度,具体可以采用非耗时运算(如加法运算)替代耗时运算(如乘法运算)的方式,即增加非耗时运算操作,减少耗时运算操作,更为具体的可以采用Winograd变换来实现降低卷积神经网络的复杂度。下面对Winograd变换进行详细说明。
Winograd变换是一种广泛使用的矩阵串行乘法,其具体思想是增加少量加法运算而减少乘法运算。Winograd变换公式为:Y=AT[Nwe Winw]A,其中,Nw表示对原始权值矩阵N进行Winograd变换得到的矩阵,且Nw=GNGT,G表示原始权值变换矩阵;Winw表示对原始输入神经元矩阵Winw进行Winograd变换得到的矩阵,且Winw=BTWinB,BT表示原始输入神经元变换矩阵。需要说明的是,原始权值变换矩阵G与原始输入神经元变换矩阵BT可以根据预设Winograd变换参数确定,这里所述的预设Winograd变换参数指的是输出神经元矩阵Mout的维数与原始权值矩阵N的维数,其中,输出神经元矩阵Mout为Wout*Hout的矩阵,原始权值矩阵N为F*F的矩阵,即原始权值变换矩阵G与原始输入神经元变换矩阵BT可以根据F(Wout*Hout,F*F)确定。
当输出神经元矩阵Mout为Wout*Hout的矩阵,原始权值矩阵N为F*F的矩阵时,基于Winograd变换完成卷积运算所需要的乘法次数μ(F(Wout*Hout,F*F))=(Wout+F-1)(Hout+F-1),即对原始输入神经元矩阵Win以及原始权值矩阵N进行Winograd变换后,根据变换后的原始输入神经元矩阵和原始权值矩阵得到输出神经元矩阵所需要经过的乘法运算次数为μ(F(Wout*Hout,F*F))=(Wout+F-1)(Hout+F-1)。根据前文所述可知,未采用Winograd变换完成卷积操作所需要的乘法次数为μ(F(Wout*Hout,F*F))=Wout*Hout*F*F,即未对原始输入神经元矩阵Win以及原始权值矩阵N进行Winograd变换,得到输出神经元矩阵所需要经过的乘法运算次数为μ(F(Wout*Hout,F*F))=Wout*Hout*F*F。基于上述,采用Winograd变换可减少卷积神经网络的乘法运算次数,即采用Winograd变换可降低卷积神经网络的时间复杂度。
需要说明的是,上述给出了当权值矩阵的个数为一个的Winograd变换情况,当权值矩阵的个数为至少两个以上时,每个权值矩阵均可采用上述方式进行Winograd变换,并将Winograd变换后的结果相加即可。
示例性的,如当输出神经元Mout为2*2,权值矩阵N为3*3,则采用Winograd变换得到输出神经元所需要的乘法运算次数μ(F(2*2,3*3))=4,而未采用Winograd变换得打输出神经元所需要的乘法运算次数为μ(F(2*2,3*3))=36,由此可见,采用Winograd变换可将低卷积神经网络的时间复杂度。
由于卷积神经网络的训练过程是一个不断对权值进行调整的过程,这个对权值所进行的调整一般需要浮点精度才能完成,因此,权值矩阵和输入神经元矩阵的元素通常是以浮点数类型存储的。但浮点运算会消耗比较大的计算资源,如果在不影响卷积神经网络的结果的精确度的情况下,这里所述的不影响卷积神经网络的结果的精确度指的是对卷积神经网络进行处理后所得结果的误差在预设误差范围内,则可以采用其它简单数值类型进行计算的话,卷积神经网络的计算速度将得到极大提高,同时也可降低功耗,这对于移动终端来说,如不能高效执行浮点运算的嵌入式系统来说,尤为重要。基于上述,可以考虑采用量化方法来降低卷积神经网络的数据位宽,从而提高卷积神经网络的计算速度。
量化指的是利用浮点运算精度的冗余进行权值矩阵和输入神经元矩阵的数据压缩,由于数据压缩不会更改网络结构,因此,通常不需要重新训练。可以对卷积神经网络的权值矩阵和输入神经元矩阵进行量化的原因在于:卷积运算的权值矩阵和输入神经元矩阵的元素值一般是以32位浮点数形式存在,而由于通用的中央处理器或数字信号处理器最小可以支持8位定点数,且大量实验表明,卷积神经网络对于数据位宽的敏感性不高,也即降低卷积神经网络的数据位宽对结果所造成的影响较小,因此,可以对权值矩阵和输入神经元矩阵进行量化处理,即将权值矩阵和输入神经元矩阵的元素值从32位量化至8位。需要说明的是,这里所述的8位定点数指的是8位定点整数,即8位二进制数。需要说明的是,由于8位数值的存取相对浮点数而言,使得内存带宽降到25%,上述可以更好地利用缓存并且避免RAM(RandomAccess Memory,随机存取存储器)出现存取瓶颈。此外,还可以提高SIMD(Single Instruction Multiple Data,单指令多数据流)的吞吐量,即实现SIMD在每个时钟周期内执行更多的操作。
量化方法可以包括最大最小值量化方法和信息熵量化方法等。其中,在信息论中,熵是信息不确定性的一个测度,熵越大,则表示信息的不去定程度越高。最大最小值量化方法为:在选择将32位浮点数量化至8位定点数的情况下,确定参数的最大浮点值a和最小浮点值b,根据最大浮点值a和最小浮点值b确定参数的分布区间[a,b],将所有参数均线性映射到分布区间[a,b]之间的255个8位定点数中最接近的一个数值,这里所述的参数为权值矩阵的元素以及输入神经元中的元素,此外,也可以采用非线性映射将所有参数映射到分布区间[a,b]之间的255个8位定点数中最接近的一个数值。示例性的,如权值矩阵的元素的分布区间为[-3,5],采用线性映射方法将权值矩阵中的所有元素映射到分布区间[-3,5]之间255个8位定点数中最接近的一个数值,则可将-3映射为-127,将5映射为127。
根据前文所述可知,由于降低卷积神经网络的时间复杂度以及降低卷积神经网络的数据位宽都将降低卷积神经网络的结果精确度,因此,如果将两者进行结合而不考虑实际情况,则将导致卷积神经网络的结果所产生的误差大于预设误差范围内,进而认为该结果并可信,上述处理方式也并不可行。基于上述,需要考虑实际情况来确定可行的处理方式,这里所述的实际情况主要指:由于权值矩阵中元素的分布范围与输入神经元矩阵中元素的分布范围并不相同,其中,权值矩阵中元素的分布范围比较集中,而输入神经元矩阵中元素的分布范围比较广,因此,权值矩阵与输入神经元矩阵对量化位宽的敏感程度并不相同,进而需要针对权值矩阵和输入神经元矩阵,考虑执行降低卷积神经网络的时间复杂度以及降低卷积神经网络的数据位宽的先后顺序,即考虑执行Winograd变换以及量化处理的先后顺序。具体的:
针对权值矩阵而言,由于权值矩阵中元素的分布范围比较集中,因此,对权值矩阵进行量化处理时,可以比较容易确定阈值,这里所述的阈值可以指元素的最大浮点值与最小浮点值。根据阈值对权值矩阵中元素进行筛选时,可将权值矩阵中大部分元素包含在内,使得权值矩阵中元素丢失较少,即大部分元素均可以被利用,并可将其映射到一个较小范围的分布区间。大量实验表明,针对权值矩阵而言,将权值矩阵中各元素由32位量化到8位,无论采用哪种量化方法,量化后的结果的精确度损失并不大,甚至还可以量化到更小的数据位宽,其量化所产生的误差主要来源于取整丢失的精确度。基于上述,针对权值矩阵,可以先对其执行Winograd变换,再对其执行量化处理。相反的,如果先对其执行量化处理,再对其执行Winograd变换,则由于量化处理会累加放大权值矩阵中元素在量化取整时所产生的误差,因此,将影响卷积神经网络的结果。
针对输入神经元矩阵而言,由于输入神经元矩阵中元素的分布范围比较广,因此,对权值矩阵进行量化处理时,可以比较难确定阈值,这里所述的阈值可以指元素的最大浮点值与最小浮点值。根据阈值对输入神经元矩阵中元素进行筛选时,可能无法将输入神经元矩阵中大部分元素包含在内,使得输入神经元矩阵中元素丢失较多,即大部分元素可能无法被利用。大量实验表明,针对输入神经元矩阵而言,将输入神经元矩阵中各元素由32位量化到8位,采用信息熵量化方法的效果较好,且在时域处理的效果优于频域处理的效果。基于上述,针对输入神经元权值矩阵,由于在时域中量化处理的效果优于频域中量化处理的效果,而Winograd变换是将数据从时域转换到频域,因此,需要先对其执行量化处理,再对其执行Winograd变换。
基于上述,本发明实施例中卷积神经网络的原始权值矩阵表示的是未经过Winograd变换和量化处理的权值矩阵,卷积神经网络的原始输入神经元矩阵表示的是未经过量化处理和Winograd变换的输入神经元矩阵。
对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,可作如下理解:先对原始权值矩阵进行Winograd变换,得到Winograd变换权值矩阵,再对Winograd变换权值矩阵进行量化处理,得到目标权值矩阵,其中,可采用最大最小值量化方法或信息熵量化方法对Winograd变换权值矩阵进行量化处理,具体采用哪种量化方法,可根据实际情况进行设定,在此不作具体限定。
对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,可作如下理解:先对原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵,再对量化输入神经元矩形进行Winograd变换,得到目标输入神经元矩阵,其中,可以采用信息熵方法对原始输入神经元矩阵进行量化处理。
步骤140、根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵。
在本发明的实施例中,由于Winograd变换将矩阵由时域转换到了频域,因此,时域中原始权值矩阵和原始目标输入神经元矩阵执行的卷积操作,转换为,频域中目标权值矩阵和目标输入神经元矩阵执行的点乘操作。需要说明的是,根据目标权值矩阵和目标输入神经元矩阵得到的卷积神经网络的输出神经元矩阵为频域卷积神经网络的结果,之后可以对该输出神经元矩阵进行Winograd变换将其转换为时域卷积神经网络的结果,即作为下一层的原始输入神经元矩阵。
需要说明的是,步骤120和步骤130可以同步执行,也可以先执行步骤120,再执行步骤130,还可以先执行步骤130,再执行步骤120,具体执行先后顺序,可根据实际情况进行确定,在此不作具体限定。
本实施例的技术方案,通过获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵,对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵,实现了通过Winograd变换降低卷积神经网络的时间复杂度,以及通过量化处理降低卷积神经网络的数据位宽,进而提高了卷积神经网络的计算速度。
可选的,在上述技术方案的基础上,对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,具体可以包括:获取目标权值变换矩阵。根据原始权值矩阵和目标权值变换矩阵,得到Winograd变换权值矩阵。对Winograd权值变换矩阵进行量化处理,得到目标权值矩阵。
在本发明的实施例中,对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,具体可以包括:获取目标权值变换矩阵,根据原始权值矩阵和目标权值变换矩阵,得到Winograd变换权值矩阵,再对Winograd权值变换矩阵进行量化处理,得到目标权值矩阵,这里所述的目标权值变换矩阵可以根据预设Winograd变换参数确定,这里所述预设Winograd变换参数指的是输出神经元矩阵Mout的维数与原始权值矩阵N的维数,其中,输出神经元矩阵Mout为Wout*Hout的矩阵,原始权值矩阵N为F*F的矩阵,即目标权值变换矩阵根据F(Wout*Hout,F*F)确定。
可选的,在上述技术方案的基础上,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,具体可以包括:获取目标输入神经元变换矩阵。对原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵。根据量化输入神经元矩阵和目标输入神经元变换矩阵,得到目标输入神经元矩阵。
在本发明的实例中,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,具体可以包括:获取目标输入神经元变换矩阵,对原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵,再根据量化输入神经元矩阵和目标输入神经元变换矩阵,得到目标输入神经元矩阵,这里所述的目标输入神经元变换矩阵可以根据预设Winograd变换参数确定,这里所述的预设Winograd变换参数指的是输出神经元矩阵Mout的维数与原始权值矩阵N的维数,其中,输出神经元矩阵Mout为Wout*Hout的矩阵,原始权值矩阵N为F*F的矩阵,即目标输入神经元变换矩阵根据F(Wout*Hout,F*F)确定。
可选的,在上述技术方案的基础上,目标权值变换矩阵和目标输入神经元变换矩阵可以通过如下方式确定:根据预设Winograd变换参数确定原始权值变换矩阵和原始输入神经元变换矩阵,原始权值变换矩阵和原始输入神经元变换矩阵的行数相等。原始输入神经元变换矩阵中第i行的元素值之和大于变换阈值,则将原始输入神经元变换矩阵中第i行的各元素值乘以预设比例值,得到目标输入神经元变换矩阵,并将原始权值变换矩阵中第i行的各元素值除以预设比例值,得到目标权值变换矩阵,预设比例值小于1。
在本发明的实施例中,由于原始输入神经元矩阵通常是经过激活层处理后的矩阵,激活层通常采用的激活函数为ReLU函数,ReLU函数为f(x)=max(0,x),其中,f(x)可以表示原始输入神经元矩阵的元素值,对原始输入神经元矩阵经过量化处理后,即将原始输入神经元矩阵的各元素由32位量化至8位,则得到量化输入神经元矩阵的元素的取值范围为[0,127],再对量化输入神经元矩阵进行Winograd变换,所得到的目标输入神经元矩阵的元素值将可能超过取值范围[0,127],即超出8位存储范围,上述可以理解为在对原始输入神经元矩阵进行量化处理过程中,出现了溢出问题。为了解决上述问题,可考虑对Winograd变换中涉及的变换矩阵进行调整。具体的:
根据前文所述可知,Winograd变换公式为:Y=AT[Nwe Winw]A,其中,Nw表示对原始权值矩阵N进行Winograd变换得到的矩阵,且Nw=GNGT,G表示原始权值变换矩阵;Winw表示对原始输入神经元矩阵Winw进行Winograd变换得到的矩阵,且Winw=BTWinB,BT表示原始输入神经元变换矩阵。需要说明的是,原始权值变换矩阵G与原始输入神经元变换矩阵BT可以根据预设Winograd变换参数确定,这里所述的预设Winograd变换参数指的是输出神经元矩阵Mout的维数与原始权值矩阵N的维数,其中,输出神经元矩阵Mout为Wout*Hout的矩阵,原始权值矩阵N为F*F的矩阵,即原始权值变换矩阵G与原始输入神经元变换矩阵BT可以根据F(Wout*Hout,F*F)确定,并且原始权值变换矩阵G与原始输入神经元变换矩阵BT的行数相等。
确定原始输入神经元变换矩阵中第i行的元素值之和是否大于变换阈值,如果确定原始输入神经元变换矩阵中第i行的元素值之和大于变换阈值,则可以将原始输入神经元变换矩阵中第i行的各元素值乘以预设比例值,该预设比例值小于1,得到目标输入神经元变换矩阵。同时,由于卷积神经网络的输出神经元矩阵是目标权值矩阵和目标输入神经元矩阵进行点乘后得到的结果,因此,为了使输出神经元矩阵的各元素值不变,可将原始权值变换矩阵中对应的第i行的各元素值除以预设比例值,得到目标权值变换矩阵。经过上述处理后,可以确定目标输入神经元变换矩中各元素小于等于变换阈值,在此基础上,由于目标输入神经元变换矩阵中各元素小于等于变换阈值,则根据目标输入神经元变换矩阵和量化输入神经元矩阵进行Winograd变换,所得到的目标输入神经元矩阵的元素值将位于取值范围[0,127]之内,即不会超出取值范围[0,127]。
需要说明的是,分别计算原始输入神经元变换矩阵中的每行元素值之和,并确定每行元素值之和是否大于变换阈值,如果确定原始输入神经元变换矩阵中某行元素之和大于变换阈值,则将原始输入神经元变换矩阵中该行的各元素值乘以预设比例值,得到目标输入神经元变换矩阵,并将原始权值变换矩阵中对应行的各元素值除以预设比例值,得到目标权值变换矩阵,预设比例值小于1。如果确定原始输入神经元变换矩阵中某行元素之和小于等于变换阈值,则不对原始输入神经元变换矩阵中各元素值进行调整,相应的,也不对原始权值变换矩阵中对应行的各元素值进行调整。
还需要说明的是,变换阈值可以作为确定原始输入神经元变换矩阵中各行元素值是否需要调整的依据,变换阈值可以设置为0。当然可以理解到,变换阈值可根据实际情况进行设定,在此不作具体限定。
另需要说的是,上述对原始输入神经元变换矩阵中各元素以及原始权值变换矩阵中各元素进行调整时,可以直接采用SIMD中的单指令vrhadd实现移位操作,上述也不会造成额外的指令开销。
上述当原始输入神经元变换矩阵中第i行的元素值之和大于变换阈值时,通过将原始输入神经元变换矩阵中第i行的各元素值乘以预设比例值,以及,将原始权值变换矩阵中第i行的各元素值除以预设比例值,预设比例值小于1,使得在保证卷积神经网络的输出神经元矩阵的各元素值不变的基础上,实现目标输入神经元矩阵的元素值位于取值范围[0,127]内,从而解决了在对原始输入神经元矩阵进行量化处理过程中所出现的溢出问题。
为了更好地理解本发明实施例所提供的技术方案,现以F(2*2,3*3)为例进行说明。设定变换阈值为0,根据F(2*2,3*3)可以确定原始输入神经元变换矩阵为原始权值变换矩阵为原始神经元变换矩阵BT中第1行至第4行中各元素之和依次为0、2、0和0,确定原始神经元变换矩阵BT中第2行元素之和大于0,则可将原始输入神经元变换矩阵BT中第2行的各元素值乘以预设比例值,其中,预设比例值为原始神经元变换矩阵BT中其它各行中各元素值保持不变,得到目标输入神经元变换矩阵并将原始权值变换矩阵G中第2行的各元素除以预设比例值原始权值变换矩阵G中其它各行中各元素值保持不变,得到目标权值变换矩阵
可选的,在上述技术方案的基础上,对原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵,具体可以包括:对原始输入神经元矩阵中各元素值加上预设调整值,得到调整后的原始输入神经元矩阵。对调整后的原始输入神经元矩阵向零取整,得到量化输入神经元矩阵。
在本发明的实施例中,为了尽可能降低量化所产生的误差,可对原始输入神经元矩阵中各元素值加上预设调整值,得到调整后的原始输入神经元矩阵,这里预设调整值可以为0.5f,并采用向零取整的方法,对调整后的原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵。
可选的,在上述技术方案的基础上,目标权值矩阵中各元素的取值范围为可以[-127,127]。
在本发明的实例中,由于量化处理后,将目标权值矩阵中各元素由32位量化到8位,因此,目标权值矩阵中各元素的取值范围可以为[0,127]。
可选的,在上述技术方案的基础上,目标输入神经元矩阵中各元素的取值范围可以为[0,127]。
在本发明的实例中,由于原始输入神经元矩阵通常是经过激活层处理后的矩阵,激活层通常采用的激活函数为ReLU函数,ReLU函数为f(x)=max(0,x),其中,f(x)可以表示原始输入神经元矩阵的元素值,对原始输入神经元矩阵经过量化处理后,即将原始输入神经元矩阵的各元素由32位量化至8位,则得到量化输入神经元矩阵的元素的取值范围为[0,127],在此基础上,对量化输入神经元矩阵进行Winograd变换得到的目标输入神经元矩阵中各元素的取值范围可以为[0,127]。
需要说明的是,本发明实施例所提供的技术方案,通过采用Winograd变换降低了卷积神经网络的时间复杂度,以及,通过采用量化方法降低了卷积神经网络的数据位宽,并根据原始权值矩阵和原始输入神经元矩阵中元素的分布情况,针对原始权值矩阵,确定采用先执行Winograd变换,再执行量化处理的方式,针对原始输入神经元矩阵,确定采用先执行量化处理,再执行Winograd变换的方式,实现了最大程度利用Winograd变换和量化方法的优点,在确保上述处理操作所产生的误差在预设误差范围内的基础上,大幅度提高了卷积神经网络的计算速度,上述使得卷积神经网络在移动设备上基本可以达到实时运行的要求。
图2为本发明实施例提供的另一种卷积神经网络处理方法的流程图,本实施例可适用于提高卷积神经网络的计算速度的情况,该方法可以由卷积神经网络确定装置来执行,该装置可以采用软件和/或硬件的方式实现,该装置可以配置于设备中,例如典型的是计算机或移动终端等。如图2所示,该方法具体包括如下步骤:
步骤201、获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵。
步骤202、根据预设Winograd变换参数确定原始权值变换矩阵和原始输入神经元变换矩阵,原始权值变换矩阵和原始输入神经元变换矩阵的行数相等。
步骤203、确定原始输入神经元变换矩阵中第i行的元素值之和是否大于变换阈值,若是,则执行步骤204;若否,则执行步骤205。
步骤204、将原始输入神经元变换矩阵中第i行的各元素值乘以预设比例值,得到原始输入神经元变换矩阵中第i行新的各元素值,并将原始权值变换矩阵中第i行的各元素除以预设比例值,得到原始权值变换矩阵中第i行新的各元素值,预设比例值小于1。
步骤205、保持原始输入神经元变换矩阵中第i行的各元素值不变,以及,保持原始权值变换矩阵中第i行的各元素值不变。
步骤206、生成目标输入神经元变换矩阵和目标权值变换矩阵。
步骤207、根据原始权值矩阵和目标权值变换矩阵,得到Winograd变换权值矩阵。
步骤208、对Winograd变换权值矩阵进行量化处理,得到目标权值矩阵。
步骤209、对原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵。
步骤210、根据量化输入神经元矩阵和目标输入神经元变换矩阵,得到目标输入神经元矩阵。
步骤211、根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵。
在本发明的实施例中,需要说明的是,步骤207-步骤208与步骤209-步骤210可以同步执行,也可以先依次执行步骤207-步骤208,再依次执行步骤209-步骤210,还可以先依次执行步骤209-步骤210,再依次执行步骤207-步骤208。具体执行顺序,可根据实际情况进行确定,在此不作具体限定。
本实施例的技术方案,通过获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵,对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵,实现了通过Winograd变换降低卷积神经网络的时间复杂度,以及通过量化处理降低卷积神经网络的数据位宽,进而提高了卷积神经网络的计算速度。
图3为本发明实施例提供的一种卷积神经网络处理装置的结构示意图,本实施例可适用于提高卷积神经网络的计算速度的情况,该装置可以采用软件和/或硬件的方式实现,该装置可以配置于设备中,例如典型的是计算机或移动终端等。如图3所示,该装置具体包括:
原始矩阵获取模块310,用于获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵。
目标矩阵生成模块320,用于对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵。
输出神经元矩阵生成模块330,用于根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵。
本实施例的技术方案,通过获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵,对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵,实现了通过Winograd变换降低卷积神经网络的时间复杂度,以及通过量化处理降低卷积神经网络的数据位宽,进而提高了卷积神经网络的计算速度。
可选的,在上述技术方案的基础上,目标矩阵生成模块320,具体可以包括:
目标权值变换矩阵获取单元,用于获取目标权值变换矩阵。
Winograd变换权值矩阵生成单元,用于根据原始权值矩阵和目标权值变换矩阵,得到Winograd变换权值矩阵。
目标权值矩阵生成单元,用于对Winograd权值变换矩阵进行量化处理,得到目标权值矩阵。
可选的,在上述技术方案的基础上,目标矩阵生成模块320,具体可以包括:
目标输入神经元变换矩阵获取单元,用于获取目标输入神经元变换矩阵。
量化输入神经元矩阵生成单元,用于对原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵。
目标输入神经元矩阵生成单元,用于根据量化输入神经元矩阵和目标输入神经元变换矩阵,得到目标输入神经元矩阵。
可选的,在上述技术方案的基础上,目标权值变换矩阵和目标输入神经元变换矩阵可以通过如下方式确定:
根据预设Winograd变换参数确定原始权值变换矩阵和原始输入神经元变换矩阵,原始权值变换矩阵和原始输入神经元变换矩阵的行数相等。
原始输入神经元变换矩阵中第i行的元素值之和大于变换阈值,则将原始输入神经元变换矩阵中第i行的各元素值乘以预设比例值,得到目标输入神经元变换矩阵,并将原始权值变换矩阵中第i行的各元素值除以预设比例值,得到目标权值变换矩阵,预设比例值小于1。
可选的,在上述技术方案的基础上,量化输入神经元矩阵生成单元,具体可以用于:
对原始输入神经元矩阵中各元素值加上预设调整值,得到调整后的原始输入神经元矩阵。
对调整后的原始输入神经元矩阵向零取整,得到量化输入神经元矩阵。
可选的,在上述技术方案的基础上,目标权值矩阵中各元素的取值范围为[-127,127]。
可选的,在上述技术方案的基础上,目标输入神经元矩阵中各元素的取值范围为[0,127]。
本发明实施例所提供的卷积神经网络处理装置可执行本发明任意实施例所提供的卷积神经网络处理方法,具备执行方法相应的功能模块和有益效果。
图4为本发明实施例提供的一种设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备412的框图。图4显示的设备412仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,设备412以通用计算设备的形式表现。设备412的组件可以包括但不限于:一个或者多个处理器416,系统存储器428,连接于不同系统组件(包括系统存储器428和处理器416)的总线418。
总线418表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Instruction Set Architecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型(Instruction Set Architecture,ISA)总线、视频电子标准协会(Video ElectronicsStandards Association,VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnect,PCI)总线。
设备412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被移动终端412访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory,RAM)730和/或高速缓存存储器432。设备412可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统434可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如(Computer Disc Read-Only Memory,CD-ROM),数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线418相连。存储器428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块442的程序/实用工具440,可以存储在例如存储器428中,这样的程序模块442包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本发明所描述的实施例中的功能和/或方法。
设备412也可以与一个或多个外部设备414(例如键盘、指向设备、显示器424等)通信,还可与一个或者多个使得用户能与该设备412交互的设备通信,和/或与使得该设备412能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口422进行。并且,设备412还可以通过网络适配器420与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网(Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器420通过总线418与设备412的其它模块通信。应当明白,尽管图4中未示出,可以结合设备412使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理器416通过运行存储在系统存储器428中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种卷积神经网络处理方法,包括:
获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵。
对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵。
根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供应用于设备的卷积神经网络处理方法的技术方案。该设备的硬件结构以及功能可参见实施例的内容解释。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的一种卷积神经网络处理方法,该方法包括:
获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵。
对原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵。
根据目标权值矩阵和目标输入神经元矩阵,得到卷积神经网络的输出神经元矩阵。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Computer Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、射频等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——局域网(Local AreaNetwork,LAN)或广域网(Wide Area Network,WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
当然,本发明实施例所提供的一种计算机可读存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的设备的卷积神经网络处理方法中的相关操作。对存储介质的介绍可参见实施例中的内容解释。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (11)
1.一种卷积神经网络处理方法,其特征在于,所述方法应用于移动终端,实现了通过Winograd变换降低卷积神经网络的时间复杂度,以及通过量化处理降低卷积神经网络的数据位宽,进而提高了卷积神经网络的计算速度;所述方法包括:
获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵;
对所述原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对所述原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵;
根据所述目标权值矩阵和所述目标输入神经元矩阵,得到所述卷积神经网络的输出神经元矩阵。
2.根据权利要求1所述的方法,其特征在于,所述对所述原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,包括:
获取目标权值变换矩阵;
根据所述原始权值矩阵和所述目标权值变换矩阵,得到Winograd变换权值矩阵;
对所述Winograd权值变换矩阵进行量化处理,得到所述目标权值矩阵。
3.根据权利要求2所述的方法,其特征在于,所述对所述原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵,包括:
获取目标输入神经元变换矩阵;
对所述原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵;
根据所述量化输入神经元矩阵和所述目标输入神经元变换矩阵,得到所述目标输入神经元矩阵。
4.根据权利要求3所述的方法,其特征在于,所述目标权值变换矩阵和所述目标输入神经元变换矩阵通过如下方式确定:
根据预设Winograd变换参数确定原始权值变换矩阵和原始输入神经元变换矩阵,所述原始权值变换矩阵和所述原始输入神经元变换矩阵的行数相等;
所述原始输入神经元变换矩阵中第i行的元素值之和大于变换阈值,则将所述原始输入神经元变换矩阵中第i行的各元素值乘以预设比例值,得到所述目标输入神经元变换矩阵,并将所述原始权值变换矩阵中第i行的各元素值除以所述预设比例值,得到所述目标权值变换矩阵,所述预设比例值小于1。
5.根据权利要求4所述的方法,其特征在于,对所述原始输入神经元变换矩阵中各元素以及所述原始权值变换矩阵中各元素进行调整时,采用单指令多数据流SIMD中的单指令vrhadd实现移位操作。
6.根据权利要求3所述的方法,其特征在于,所述对所述原始输入神经元矩阵进行量化处理,得到量化输入神经元矩阵,包括:
对所述原始输入神经元矩阵中各元素值加上预设调整值,得到调整后的原始输入神经元矩阵;
对所述调整后的原始输入神经元矩阵向零取整,得到所述量化输入神经元矩阵。
7.根据权利要求1-6任一所述的方法,其特征在于,所述目标权值矩阵中各元素的取值范围为[-127,127]。
8.根据权利要求1-6任一所述的方法,其特征在于,所述目标输入神经元矩阵中各元素的取值范围为[0,127]。
9.一种卷积神经网络处理装置,其特征在于,所述装置集成于移动终端,实现了通过Winograd变换降低卷积神经网络的时间复杂度,以及通过量化处理降低卷积神经网络的数据位宽,进而提高了卷积神经网络的计算速度;所述装置包括:
原始矩阵获取模块,用于获取卷积神经网络的原始权值矩阵和原始输入神经元矩阵;
目标矩阵生成模块,用于对所述原始权值矩阵依次进行Winograd变换和量化处理,得到目标权值矩阵,以及,对所述原始输入神经元矩阵依次进行量化处理和Winograd变换,得到目标输入神经元矩阵;
输出神经元矩阵生成模块,用于根据所述目标权值矩阵和所述目标输入神经元矩阵,得到所述卷积神经网络的输出神经元矩阵。
10.一种设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8任一所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811627040.3A CN111382854B (zh) | 2018-12-28 | 2018-12-28 | 一种卷积神经网络处理方法、装置、设备及存储介质 |
PCT/CN2019/125047 WO2020135093A1 (zh) | 2018-12-28 | 2019-12-13 | 卷积神经网络处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811627040.3A CN111382854B (zh) | 2018-12-28 | 2018-12-28 | 一种卷积神经网络处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111382854A CN111382854A (zh) | 2020-07-07 |
CN111382854B true CN111382854B (zh) | 2021-03-23 |
Family
ID=71127510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811627040.3A Active CN111382854B (zh) | 2018-12-28 | 2018-12-28 | 一种卷积神经网络处理方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111382854B (zh) |
WO (1) | WO2020135093A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116888605A (zh) * | 2021-04-30 | 2023-10-13 | 华为技术有限公司 | 神经网络模型的运算方法、训练方法及装置 |
CN118171697A (zh) * | 2024-05-13 | 2024-06-11 | 国网山东省电力公司济南供电公司 | 深度神经网络压缩的方法、装置、计算机设备和存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229656A (zh) * | 2016-12-14 | 2018-06-29 | 上海寒武纪信息科技有限公司 | 神经网络运算装置及方法 |
EP3557484B1 (en) * | 2016-12-14 | 2021-11-17 | Shanghai Cambricon Information Technology Co., Ltd | Neural network convolution operation device and method |
US10482155B2 (en) * | 2016-12-30 | 2019-11-19 | Intel Corporation | Winograd algorithm on a matrix processing architecture |
CN107992940A (zh) * | 2017-12-12 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种卷积神经网络在fpga上的实现方法及装置 |
CN108765247B (zh) * | 2018-05-15 | 2023-01-10 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、存储介质及设备 |
-
2018
- 2018-12-28 CN CN201811627040.3A patent/CN111382854B/zh active Active
-
2019
- 2019-12-13 WO PCT/CN2019/125047 patent/WO2020135093A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2020135093A1 (zh) | 2020-07-02 |
CN111382854A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106951962B (zh) | 用于神经网络的复合运算单元、方法和电子设备 | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
US20180018558A1 (en) | Method for neural network and apparatus performing same method | |
CN110175641B (zh) | 图像识别方法、装置、设备和存储介质 | |
CN112508125A (zh) | 一种图像检测模型的高效全整数量化方法 | |
US20200117981A1 (en) | Data representation for dynamic precision in neural network cores | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
CN113610232B (zh) | 网络模型量化方法、装置、计算机设备以及存储介质 | |
CN111382854B (zh) | 一种卷积神经网络处理方法、装置、设备及存储介质 | |
WO2022111002A1 (zh) | 用于训练神经网络的方法、设备和计算机可读存储介质 | |
CN110874627B (zh) | 数据处理方法、数据处理装置及计算机可读介质 | |
WO2020249085A1 (zh) | 基于神经网络计算的数据处理方法和装置 | |
CN113238989A (zh) | 将数据进行量化的设备、方法及计算机可读存储介质 | |
CN111587441B (zh) | 使用以比特值为条件的回归神经网络生成输出示例 | |
CN117010518A (zh) | 一种气象预测方法、装置、介质及电子装置 | |
CN112183744A (zh) | 一种神经网络剪枝方法及装置 | |
CN113238976B (zh) | 缓存控制器、集成电路装置及板卡 | |
KR102637568B1 (ko) | 스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치 | |
WO2019076095A1 (zh) | 处理方法及装置 | |
KR102478256B1 (ko) | 랭크 오더 코딩 기반 스파이킹 cnn 연산 방법 및 그 처리기 | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN113238988A (zh) | 优化深度神经网络的参数的处理系统、集成电路及板卡 | |
CN113935456A (zh) | 脉冲神经网络层内数据处理方法及设备、处理芯片 | |
CN113902114A (zh) | 神经网络模型的量化方法、装置和系统、电子设备和存储介质 | |
CN113238975A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220608 Address after: 31a, 15 / F, building 30, maple mall, bangrang Road, Brazil, Singapore Patentee after: Baiguoyuan Technology (Singapore) Co.,Ltd. Address before: 511400 floor 23-39, building B-1, Wanda Plaza North, Wanbo business district, 79 Wanbo 2nd Road, Nancun Town, Panyu District, Guangzhou City, Guangdong Province Patentee before: GUANGZHOU BAIGUOYUAN INFORMATION TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |