一种信号处理方法及装置转让专利

申请号 : CN201711489008.9

文献号 : CN109993275B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许若圣

申请人 : 华为技术有限公司

摘要 :

本申请公开了一种信号处理方法及装置。该方法包括:分块信号矩阵得到X×H个分形信号矩阵,分块权重矩阵得到H×Y个分形权重矩阵;获取X×H×Y个矩阵乘的运算序列,并对X×H×Y个矩阵乘进行处理,得到X×Y个结果矩阵;X×H×Y个矩阵乘的运算序列是根据性能参数得到的,性能参数包括从第一缓存器读取X×H个分形信号矩阵中的任一分形信号矩阵的功耗、从第二缓存器中读取H×Y个分形权重矩阵中的任一分形权重矩阵的功耗和从第三缓存器读取X×H×Y个矩阵乘中的任一矩阵乘的运算结果的功耗。本申请实施例根据上述三种功耗来确定运算序列,能够更加有效地降低处理器的功耗。

权利要求 :

1.一种信号处理方法,其特征在于,所述方法包括:

接收信号矩阵以及权重矩阵;

分块所述信号矩阵,得到X×H个分形信号矩阵,以及分块所述权重矩阵,得到H×Y个分形权重矩阵;所述X×H个分形权重矩阵与所述H×Y个分形信号矩阵构成X×H×Y个矩阵乘;

获取所述X×H×Y个矩阵乘的运算序列,并根据所述X×H×Y个矩阵乘的运算序列,对所述X×H×Y个矩阵乘进行处理,得到X×Y个结果矩阵;其中,所述X×Y个结果矩阵中的任一结果矩阵是根据所述X×H×Y个矩阵乘中的至少两个矩阵乘的运算结果累加得到的;所述X×H×Y个矩阵乘的运算序列是根据性能参数得到的,所述性能参数包括从第一缓存器读取所述X×H个分形信号矩阵中的任一分形信号矩阵的功耗、从第二缓存器中读取所述H×Y个分形权重矩阵中的任一分形权重矩阵的功耗和从第三缓存器读取所述X×H×Y个矩阵乘中的任一矩阵乘的运算结果的功耗;

输出信号处理结果,所述信号处理结果中包括所述X×Y个结果矩阵。

2.根据权利要求1所述的方法,其特征在于,通过如下方式确定所述X×H×Y个矩阵乘的运算序列:从所述X×H×Y个矩阵乘中选取第一矩阵乘,以所述第一矩阵乘为起点,依次搜索第二至第X×H×Y矩阵乘,得到所述运算序列;

其中,第k矩阵乘是通过如下方式搜索到的:

根据从第k-1矩阵乘跃迁到所述X×H×Y个矩阵乘中的任一个矩阵乘的代价值,选取代价值最小的矩阵乘作为所述第k矩阵乘,k为大于等于2且小于等于X×H×Y的整数;所述第k矩阵乘为所述X×H×Y个矩阵乘中除所述第一矩阵乘至所述第k-1矩阵乘以外的矩阵乘。

3.根据权利要求2所述的方法,其特征在于,通过如下方式确定从第k-1矩阵乘跃迁到第i矩阵乘的代价值,所述第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘:Zi=Eai+Ebi+2Eci

其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示读取所述第i矩阵乘的运算结果的功耗。

4.根据权利要求3所述的方法,其特征在于:

若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1;

若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2;

若第i个矩阵乘复用第k-1个矩阵乘的分形结果矩阵,则Eci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3;

x1、x2、x3均大于0。

5.根据权利要求2所述的方法,其特征在于,所述性能参数还包括带宽参数,所述带宽参数包括从所述第一缓存器中读取所述任一分形信号矩阵的带宽惩罚值、从第二缓存器中读取所述任一分形权重矩阵的带宽惩罚值和从第三缓存器读取所述任一矩阵乘的运算结果的带宽惩罚值;

所述带宽参数是根据所述第一缓存器的读写带宽、所述第二缓存器的读写带宽和所述第三缓存器的读写带宽得到的。

6.根据权利要求5所述的方法,其特征在于,通过如下方式确定从k-1矩阵乘跃迁到第i矩阵乘的代价值,所述第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘:Zi=(Eai+Pai)+(Ebi+Pbi)+(2Eci+2Pci)

其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示从所述第三缓存器读取所述第i矩阵乘的运算结果的功耗;Pai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的带宽惩罚值;Pbi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的带宽惩罚值,Pci用于指示从所述第一缓存器读取所述第i矩阵乘的运算结果的带宽惩罚值。

7.根据权利要求6所述的方法,其特征在于:

若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,Pai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1,Pai=y1;

若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,Pbi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2,Pbi=y2;

若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,Pci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3,Pci=y3;

x1、x2、x3、y1、y2、y3均大于0。

8.一种信号处理装置,其特征在于,所述信号处理装置包括:

收发模块,用于接收信号矩阵以及权重矩阵;

处理模块,用于分块所述信号矩阵,得到X×H个分形信号矩阵,以及分块所述权重矩阵,得到H×Y个分形权重矩阵;所述X×H个分形权重矩阵与所述H×Y个分形信号矩阵构成X×H×Y个矩阵乘;以及,获取所述X×H×Y个矩阵乘的运算序列,并根据所述X×H×Y个矩阵乘的运算序列,对所述X×H×Y个矩阵乘进行处理,得到X×Y个结果矩阵;其中,所述X×Y个结果矩阵中的任一结果矩阵是根据所述X×H×Y个矩阵乘中的至少两个矩阵乘的运算结果累加得到的;所述X×H×Y个矩阵乘的运算序列是根据性能参数得到的,所述性能参数包括从第一缓存器读取所述X×H个分形信号矩阵中的任一分形信号矩阵的功耗、从第二缓存器中读取所述H×Y个分形权重矩阵中的任一分形权重矩阵的功耗和从第三缓存器读取所述X×H×Y个矩阵乘中的任一矩阵乘的运算结果的功耗;

输出模块,用于输出信号处理结果,所述信号处理结果中包括所述X×Y个结果矩阵。

9.根据权利要求8所述的信号处理装置,其特征在于,所述处理模块通过如下方式确定所述X×H×Y个矩阵乘的运算序列:从所述X×H×Y个矩阵乘中选取第一矩阵乘,以所述第一矩阵乘为起点,依次搜索第二至第X×H×Y矩阵乘,得到所述运算序列;

其中,第k矩阵乘是通过如下方式搜索到的:

根据从第k-1矩阵乘跃迁到所述X×H×Y个矩阵乘中的任一个矩阵乘的代价值,选取代价值最小的矩阵乘作为所述第k矩阵乘,k为大于等于2且小于等于X×H×Y的整数;所述第k矩阵乘为所述X×H×Y个矩阵乘中除所述第一矩阵乘至所述第k-1矩阵乘以外的矩阵乘。

10.根据权利要求9所述的信号处理装置,其特征在于,所述处理模块通过如下方式确定从第k-1矩阵乘跃迁到第i矩阵乘的代价值,所述第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘:Zi=Eai+Ebi+2Eci

其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示读取所述第i矩阵乘的运算结果的功耗。

11.根据权利要求10所述的信号处理装置,其特征在于:

若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1;

若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2;

若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,若第i个矩阵乘未复用第k-1个矩阵乘的结果矩阵,则Eci=x3;

x1、x2、x3均大于0。

12.根据权利要求9所述的信号处理装置,其特征在于,所述性能参数还包括带宽参数,所述带宽参数包括从所述第一缓存器中读取所述任一分形信号矩阵的带宽惩罚值、从第二缓存器中读取所述任一分形权重矩阵的带宽惩罚值和从第三缓存器读取所述任一矩阵乘的运算结果的带宽惩罚值;

所述带宽参数是根据所述第一缓存器的读写带宽、所述第二缓存器的读写带宽和所述第三缓存器的读写带宽得到的。

13.根据权利要求12所述的信号处理装置,其特征在于,所述处理模块通过如下方式确定从k-1矩阵乘跃迁到第i矩阵乘的代价值,所述第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘:Zi=(Eai+Pai)+(Ebi+Pbi)+(2Eci+2Pci)

其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示从所述第三缓存器读取所述第i矩阵乘的运算结果的功耗;Pai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的带宽惩罚值;Pbi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的带宽惩罚值,Pci用于指示从所述第一缓存器读取所述第i矩阵乘的运算结果的带宽惩罚值。

14.根据权利要求13所述的信号处理装置,其特征在于:

若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,Pai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1,Pai=y1;

若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,Pbi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2,Pbi=y2;

若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,Pci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3,Pci=y3;

x1、x2、x3、y1、y2、y3均大于0。

15.一种信号处理装置,其特征在于,所述信号处理装置包括:

存储器,用于存储软件程序;

处理器,用于读取所述存储器中的软件程序并执行权利要求1至权利要求7中任一项所述的信号处理方法。

16.一种计算机存储介质,其特征在于,所述存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时实现权利要求1至权利要求7中任一项所述的信号处理方法。

说明书 :

一种信号处理方法及装置

技术领域

[0001] 本申请实施例涉及计算机技术领域,特别涉及一种信号方法及装置。

背景技术

[0002] 神经网络(Neural Network,NN),是一种模仿动物神经网络行为特征进行信息处理的网络结构。该结构由大量的节点(或称神经元)相互联接构成,基于特定运算模型通过对输入信息进行学习和训练达到处理信息的目的。一个神经网络包括输入层、隐藏层及输出层,输入层负责接收输入信号,输出层负责输出神经网络的计算结果,隐藏层负责学习、训练等计算过程,是网络的记忆单元,隐藏层的记忆功能由权重矩阵来表征,通常每个神经元对应一个权重系数。
[0003] 其中,卷积神经网络(Convolutional Neural Network,CNN)是一种多层的神经网络,每层有多个二维平面组成,而每个平面由多个独立神经元组成,每个平面的多个神经元共享权重,通过权重共享可以降低神经网络中的参数数目。目前,在卷积神经网络中,处理器进行卷积操作通常是将输入信号特征与权重的卷积,转换为信号矩阵与权重矩阵之间的矩阵乘运算。在具体矩阵乘运算时,对信号矩阵和权重矩阵进行分块处理,得到多个分形(Fractional)信号矩阵和分形权重矩阵,然后对多个分形信号矩阵和分形权重矩阵进行矩阵乘和累加运算。比如,如图1所示,假设C=AB,A为信号矩阵,B为权重矩阵,则进行矩阵乘运算时,由于处理器可能缺少对A和B这种大矩阵进行计算的能力或进行此类计算代价较大,可以将矩阵A根据条件划分为4个分形信号矩阵,即A00、A01、A10和A11,将矩阵B根据条件划分为4个分形权重矩阵,即B00、B01、B10和B11,相应的矩阵C可以由C00、C01、C10和C11等4个矩阵块组成,矩阵C中每一矩阵块与分形信号矩阵和分形权重矩阵的关系可以如下公式所示。
[0004] C00=A00B00+A01B10
[0005] C01=A00B01+A01B11
[0006] C10=A10B00+A11B10
[0007] C11=A10B01+A11B11
[0008] 根据上述公式可知,一个分形信号矩阵和一个分形权重矩阵构成一个矩阵乘,矩阵C中的每一矩阵块是由两个矩阵乘的运算结果累加得到的。具体实施中,可以通过调整8个矩阵乘的运算顺序来实现数据复用,进而减少功耗。比如,先计算A00B00,然后计算A00B01,则可以复用A00;又比如,先计算A00B00,然后计算A10B00,则可以复用B00。由此可知,多个矩阵乘的运算顺序决定了如何在运算过程复用数据,从而会影响处理器的计算能力和功耗等性能。
[0009] 现有技术中通常基于高速缓冲存储器(cache)的命中率来确定多个矩阵乘的运算顺序,以便于尽可能地进行数据复用。然而,由于矩阵乘的输入矩阵和结果矩阵对处理器性能的影响可能是不相同,仅根据cache的命中率得到的运算顺序可能无法使处理器的性能达到充分发挥。

发明内容

[0010] 本申请实施例提供一种信号处理方法,用于解决现有技术中仅根据cache的命中率得到的运算顺序可能无法使处理器的性能达到充分发挥的技术问题。
[0011] 第一方面,本申请实施例提供一种信号处理方法,所述方法包括:
[0012] 接收信号矩阵以及权重矩阵;
[0013] 分块所述信号矩阵,得到X×H个分形信号矩阵,以及分块所述权重矩阵,得到H×Y个分形权重矩阵;所述X×H个分形权重矩阵与所述H×Y个分形信号矩阵构成X×H×Y个矩阵乘;
[0014] 获取所述X×H×Y个矩阵乘的运算序列,并根据所述X×H×Y个矩阵乘的运算序列,对所述X×H×Y个矩阵乘进行处理,得到X×Y个结果矩阵;其中,所述X×Y个结果矩阵中的任一结果矩阵是根据所述X×H×Y个矩阵乘中的至少两个矩阵乘的运算结果累加得到的;所述X×H×Y个矩阵乘的运算序列是根据性能参数得到的,所述性能参数包括从第一缓存器读取所述X×H个分形信号矩阵中的任一分形信号矩阵的功耗、从第二缓存器中读取所述H×Y个分形权重矩阵中的任一分形权重矩阵的功耗和从第三缓存器读取所述X×H×Y个矩阵乘中的任一矩阵乘的运算结果的功耗;
[0015] 输出信号处理结果,所述信号处理结果中包括所述X×Y个结果矩阵。
[0016] 根据上述内容可知,由于从所述第一缓存器读取所述任一分形信号矩阵的功耗、从所述第二缓存器中读取所述任一分形权重矩阵的功耗、从所述第三缓存器读取所述任一矩阵乘的运算结果的功耗可能不同,因此,本申请实施例根据上述三种功耗来确定运算序列,相比于现有技术中将上述三种功耗视为相同而仅考虑cache的命中率来说,能够更加有效地降低处理器的功耗。
[0017] 在一种可能的设计中,通过如下方式确定所述X×H×Y个矩阵乘的运算序列:
[0018] 从所述X×H×Y个矩阵乘中选取第一矩阵乘,以所述第一矩阵乘为起点,依次搜索第二至第X×H×Y矩阵乘,得到所述运算序列;
[0019] 其中,所述第k矩阵乘是通过如下方式搜索到的:
[0020] 根据从第k-1矩阵乘跃迁到所述X×H×Y个矩阵乘中的任一个矩阵乘的代价值,选取代价值最小的矩阵乘作为所述第k矩阵乘,k为大于等于2且小于等于X×H×Y的整数;所述第k矩阵乘为所述X×H×Y个矩阵乘中除所述第一矩阵乘至所述第k-1矩阵乘以外的矩阵乘。
[0021] 通过上述方式,本申请实施例中能够快速搜索到运算序列,且由于是基于从一个矩阵乘跃迁到另一个矩阵乘的代价值来搜索的,因此使得搜索到的运算序列能够更加有效地降低处理器的能耗。
[0022] 在一种可能的设计中,通过如下方式确定从第k-1矩阵乘跃迁到第i矩阵乘的代价值,所述第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘:
[0023] Zi=Eai+Ebi+2Eci
[0024] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示读取所述第i矩阵乘的运算结果的功耗。
[0025] 在一种可能的设计中,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1;
[0026] 若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2;
[0027] 若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3;
[0028] x1、x2、x3均大于0。
[0029] 在一种可能的设计中,所述性能参数还包括带宽参数,所述带宽参数包括从所述第一缓存器中读取所述任一分形信号矩阵的带宽惩罚值、从第二缓存器中读取所述任一分形权重矩阵的带宽惩罚值和从第三缓存器读取所述任一矩阵乘的运算结果的带宽惩罚值;
[0030] 所述带宽参数是根据所述第一缓存器的读写带宽、所述第二缓存器的读写带宽和所述第三缓存器的读写带宽得到的。
[0031] 根据上述内容可知,本申请实施例在确定从第k-1矩阵乘跃迁到第i矩阵乘的代价值时,从功耗和带宽两个方面来确定多个矩阵乘的运算序列,从而使得运算序列可以更好地利用处理器的计算能力,并降低处理器的功耗。
[0032] 在一种可能的设计中,通过如下方式确定从k-1矩阵乘跃迁到第i矩阵乘的代价值:
[0033] Zi=(Eai+Pai)+(Ebi+Pbi)+(2Eci+2Pci)
[0034] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示从所述第三缓存器读取所述第i矩阵乘的运算结果的功耗;Pai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的带宽惩罚值;Pbi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的带宽惩罚值,Pci用于指示从所述第一缓存器读取所述第i矩阵乘的运算结果的带宽惩罚值。
[0035] 在一种可能的设计中,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,Pai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1,Pai=y1;
[0036] 若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,Pbi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2,Pbi=y2;
[0037] 若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,Pci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3,Pci=y3;
[0038] x1、x2、x3、y1、y2、y3均大于0。
[0039] 第二方面,本申请实施例提供一种信号处理装置,所述信号处理装置包括:
[0040] 收发模块,用于接收信号矩阵以及权重矩阵;
[0041] 处理模块,用于分块所述信号矩阵,得到X×H个分形信号矩阵,以及分块所述权重矩阵,得到H×Y个分形权重矩阵;所述X×H个分形权重矩阵与所述H×Y个分形信号矩阵构成X×H×Y个矩阵乘;以及,获取所述X×H×Y个矩阵乘的运算序列,并根据所述X×H×Y个矩阵乘的运算序列,对所述X×H×Y个矩阵乘进行处理,得到X×Y个结果矩阵;其中,所述X×Y个结果矩阵中的任一结果矩阵是根据所述X×H×Y个矩阵乘中的至少两个矩阵乘的运算结果累加得到的;所述X×H×Y个矩阵乘的运算序列是根据性能参数得到的,所述性能参数包括从第一缓存器读取所述X×H个分形信号矩阵中的任一分形信号矩阵的功耗、从第二缓存器中读取所述H×Y个分形权重矩阵中的任一分形权重矩阵的功耗和从第三缓存器读取所述X×H×Y个矩阵乘中的任一矩阵乘的运算结果的功耗;
[0042] 输出模块,用于输出信号处理结果,所述信号处理结果中包括所述X×Y个结果矩阵。
[0043] 在一种可能的设计中,所述处理模块通过如下方式确定所述X×H×Y个矩阵乘的运算序列:
[0044] 从所述X×H×Y个矩阵乘中选取第一矩阵乘,以所述第一矩阵乘为起点,依次搜索第二至第X×H×Y矩阵乘,得到所述运算序列;
[0045] 其中,所述第k矩阵乘是通过如下方式搜索到的:
[0046] 根据从第k-1矩阵乘跃迁到所述X×H×Y个矩阵乘中的任一个矩阵乘的代价值,选取代价值最小的矩阵乘作为所述第k矩阵乘,k为大于等于2且小于等于X×H×Y的整数;所述第k矩阵乘为所述X×H×Y个矩阵乘中除所述第一矩阵乘至所述第k-1矩阵乘以外的矩阵乘。
[0047] 在一种可能的设计中,所述处理模块通过如下方式确定从第k-1矩阵乘跃迁到第i矩阵乘的代价值,所述第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘:
[0048] Zi=Eai+Ebi+2Eci
[0049] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示读取所述第i矩阵乘的运算结果的功耗。
[0050] 在一种可能的设计中,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1;
[0051] 若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2;
[0052] 若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3;
[0053] x1、x2、x3均大于0。
[0054] 在一种可能的设计中,所述性能参数还包括带宽参数,所述带宽参数包括从所述第一缓存器中读取所述任一分形信号矩阵的带宽惩罚值、从第二缓存器中读取所述任一分形权重矩阵的带宽惩罚值和从第三缓存器读取所述任一矩阵乘的运算结果的带宽惩罚值;
[0055] 所述带宽参数是根据所述第一缓存器的读写带宽、所述第二缓存器的读写带宽和所述第三缓存器的读写带宽得到的。
[0056] 在一种可能的设计中,所述处理模块通过如下方式确定从k-1矩阵乘跃迁到第i矩阵乘的代价值:
[0057] Zi=(Eai+Pai)+(Ebi+Pbi)+(2Eci+2Pci)
[0058] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示从所述第三缓存器读取所述第i矩阵乘的运算结果的功耗;Pai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的带宽惩罚值;Pbi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的带宽惩罚值,Pci用于指示从所述第一缓存器读取所述第i矩阵乘的运算结果的带宽惩罚值。
[0059] 在一种可能的设计中,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,Pai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1,Pai=y1;
[0060] 若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,Pbi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2,Pbi=y2;
[0061] 若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,Pci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3,Pci=y3;
[0062] x1、x2、x3、y1、y2、y3均大于0。
[0063] 本申请实施例还提供一种信号处理装置,所述信号处理装置包括:存储器,用于存储软件程序;处理器,用于读取所述存储器中的软件程序并执行上述各方面或各种可能的设计所述的信号处理方法。
[0064] 本申请实施例还提供一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述各方面或各种可能的设计所述的信号处理方法。
[0065] 本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面或各种可能的设计所述的信号处理方法。
[0066] 本申请实施例还提供一种计算机程序,当其在计算机上运行时,使得计算机执行上述各方面或各种可能的设计所述的信号处理方法。

附图说明

[0067] 图1为一种矩阵分块的示意图;
[0068] 图2为一种神经网络的结构示意图;
[0069] 图3为一种全连接神经网络的结构示意图;
[0070] 图4为一种卷积神经网络的结构示意图;
[0071] 图5为卷积神经网络中的卷积操作示意图;
[0072] 图6为本申请实施例提供的一种矩阵乘示意图;
[0073] 图7a为本申请实施例适用的一种信号处理装置的结构示意图;
[0074] 图7b为本申请实施例适用的一种处理器的结构示意图;
[0075] 图8为本申请实施例提供的一种信号处理方法对应的流程示意图;
[0076] 图9a为一种分形信号矩阵和分形权重矩阵的个数示意图;
[0077] 图9b为另一种分形信号矩阵和分形权重矩阵的个数示意图;
[0078] 图10a为本申请实施例提供的一种搜索序列示意图;
[0079] 图10b为本申请实施例提供的又一种搜索序列示意图;
[0080] 图10c为本申请实施例提供的另一种搜索序列示意图;
[0081] 图11为本申请实施例提供的一种信号处理装置的结构示意图。

具体实施方式

[0082] 下面结合说明书附图对本申请进行具体说明,方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。
[0083] 如图2所示,是一种神经网络的结构示意图,该神经网络200具有N个处理层,N≥3且N取自然数,该神经网络的第一层为输入层201,负责接收输入信号,该神经网络的最后一层为输出层203,输出神经网络的处理结果,除去第一层和最后一层的其他层为中间层204,这些中间层共同组成隐藏层202,隐藏层中的每一层中间层既可以接收输入信号,也可以输出信号,隐藏层负责输入信号的处理过程。每一层代表了信号处理的一个逻辑级别,通过多个层,数据信号可经过多级逻辑的处理。
[0084] 为便于理解,下面对本申请实施例中神经网络的处理原理进行描述,神经网络的处理通常是非线性函数f(xi),如f(xi)=max(0,xi),在一些可行的实施例中,该处理函数可以是修正线性单元(Rectified Linear Units,ReLU)、双曲正切函数(tanh)或S型函数(sigmoid)等。假设(x1,x2,x3)是一个一维信号矩阵,(h1,h2,h3)是输出信号矩阵,Wij表示输入xj与输出hi之间的权重系数,权重系数构成的矩阵为权重矩阵,则该一维信号矩阵与输出信号矩阵对应的权重矩阵W如式(1)所示:
[0085]
[0086] 输入信号与输出信号的关系如式(2)所示,其中bi为神经网络处理函数的偏置值,该偏置值对神经网络的输入进行调整从而得到理想的输出结果。
[0087]
[0088] 在一些可行的实施例中该神经网络的输入信号可以是语音信号、文本信号、图像信号、温度信号等各种形式的信号,该语音信号可以是录音设备录制的语音信号、移动手机或固定电话在通话过程中接收的语音信号、以及收音机接收的电台发送的语音信号等,文本信号可以是TXT文本信号、Word文本信号、以及PDF文本信号等,图像信号可以是相机拍摄的风景信号、显监控设备捕捉的社区环境的图像信号以及门禁系统获取的人脸的面部信号等,该神经网络的输入信号包括其他各种计算机可处理的工程信号,在此不再一一列举。该神经网络的隐藏层202进行的处理可以是去除语音信号中混杂的噪音信号从而增强语音信号、对文本信号中的特定内容进行理解、以及对人脸的面部图像信号进行识别等处理。
[0089] 神经网络的每个层可以包括多个节点,也可以称为神经元。全连接神经网络是一种相邻层之间各神经元全连接的神经网络,即前一层中的全部神经元与后一层中的每个神经元都连接。示例性的,图3是一种包含三层的全连接神经网络的结构示意图。图3中“+1”表示偏置神经元,用于对神经网络中每一层的输入进行调整。由于全连接网络的相邻层中神经元是全连接的,当全连接神经网络的中间层较多时,则越靠后的处理层中的信号矩阵和权重矩阵的维度会很庞大,从而导致神经网络的网络尺寸过于庞大。
[0090] 卷积神经网络可以采用较小的参数模板在输入信号空间域上滑动滤波,从而解决全连接神经网络中网络尺寸过于庞大的问题。卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在卷积神经网络的一个卷积层中,通常包含若干个特征平面,每个特征平面由一些矩形排列的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。卷积核带来的直接好处是减少网络各层之间的连接。子采样也叫做池化,子采样可以看作一种特殊的卷积过程,卷积和子采样大大简化了模型复杂度,减少了模型的参数。如图4所示,卷积神经网络由三部分构成,第一部分是输入层,第二部分由n个卷积层和池化层的组合组成,第三部分是输出层,输出层可以由一个全连接的多层感知机分类器构成。
[0091] 卷积神经网络中的卷积层可用于对输入信号阵列和权重阵列进行卷积操作。具体的,这里以一维输入信号为例,假设输入信号为f(u),u=0~N-1,卷积核为h(v),v=0~n-1,n≤N,则卷积运算可以通过以下公式(3)来描述。
[0092]
[0093] 卷积神经网络可以广泛应用于语音识别、人脸识别、通用物体识别、运动分析、图像处理等。示例性的,以输入信号为二维矩阵为例,如图5所示,假设该图像在某一卷积层中对应的输入特征包括3个三行三列的信号矩阵,卷积核包括6个二行二列的权重矩阵。图5中示出了卷积神经网络中进行卷积操作的两种具体操作方式,一种是传统卷积操作,另一种是矩阵变换后的卷积操作。其中,传统卷积操作是将每个信号矩阵与其对应的权重矩阵进行矩阵乘运算,并将对应的矩阵乘运算的结果进行累加,得到两个输出信号矩阵,即输出特征。另一种矩阵变换后的卷积操作,对不同的信号矩阵进行了转换,得到一个同时包括3个信号矩阵且矩阵维度较大的输入特征矩阵;同理,对6个权重矩阵也进行相应的转换操作,得到一个同时包括6个权重矩阵且矩阵维度较大的核矩阵;之后,通过变换得到的输入特征矩阵和核矩阵进行矩阵乘运算,得到输出特征矩阵。
[0094] 通过对信号矩阵和权重矩阵进行矩阵变换,可以减小矩阵乘的操作次数,进而减小读取信号矩阵和权重矩阵的开销。但是,变换后的矩阵乘运算需要的计算开销较大,因此需要对信号矩阵和权重矩阵分别进行分块。其中,分块一个矩阵是指将矩阵分成多个子块,每个子块可以称为一个分形矩阵。分块得到的多个分形信号矩阵与多个分形权重矩阵之间存在对应关系,一个分形信号矩阵与其对应的分形权重矩阵满足矩阵乘规则,该矩阵乘规则是指参加矩阵乘的第一个矩阵的列数等于参加矩阵乘的第二个矩阵的行数。
[0095] 当通过分块得到的分形信号矩阵和分形权重矩阵的个数较多时,分形信号矩阵和分形权重矩阵构成的矩阵乘的个数也会较多。参见图6,假设矩阵乘的左矩阵(信号矩阵)A和右矩阵(权重矩阵)B一样大,信号矩阵中的每个小方框表示一个分形信号矩阵,共有64(8×8)个分形信号矩阵;权重矩阵中的每个小方框表示一个分形权重矩阵,共有64(8×8)个分形权重矩阵。分形信号矩阵和分形权重矩阵共构成8×8×8=512个矩阵乘,比如A00×B00、A00×B01、A10×B00、A01×B01。由于分形信号矩阵和分形权重矩阵的矩阵乘可以表示为Ax,h×Ah,y,因此分形信号矩阵和分形权重矩阵构成的每个矩阵乘可描述为3维空间中的点(x,h,y),如此,确定多个矩阵乘的运算顺序相当于在3维空间的8×8×8个顶点的图中,寻找一个运算序列,使得处理器的表现在某个衡量维度上最优。
[0096] 现有技术中通常基于高速缓冲存储器(cache)的命中率来确定多个矩阵乘的运算顺序,即是认为矩阵乘的输入矩阵和结果矩阵对处理器性能的影响是相同的,从而选择使cache的命中率最高的运算顺序来对多个矩阵乘进行运算。
[0097] 然而,在某些处理器中,输入矩阵和结果矩阵可能分别存储在不同的缓存器中,其带宽能力和功耗可能均不相同,因此,仅根据cache的命中率得到的运算顺序可能无法使处理器的性能达到充分发挥。
[0098] 基于此,本申请实施例提供一种信号处理方法,用于解决现有技术中仅根据cache的命中率得到的运算顺序可能无法使处理器的性能达到充分发挥的技术问题。
[0099] 图7a为本申请实施例适用的一种装置的结构示意图,参见图7a,该信号处理装置可以包括输入接口701:该输入接口用于接收信号矩阵和/或权重矩阵,该输入接口可以通过选择器实现接收信号矩阵和接收权重矩阵的切换;在一些可行的实施例中,该输入接口可用以分时复用的方式接收上述的信号矩阵或权重矩阵;在一些可行的实施例中,该输入接口可以有两个,分别实现信号矩阵和权重矩阵的接收,例如可实现同时接收信号矩阵和权重矩阵。
[0100] 处理器702:被配置为具有可处理本申请实施例中的信号处理方法的功能。在一些可行的实施例中,该处理器可以是单处理器结构、多处理器结构、单线程处理器以及多线程处理器等,在一些可行的实施例中,该处理器可以集成在专用集成电路中,也可以是独立于集成电路之外的处理器芯片。
[0101] 输出接口703:该输出接口用于输出上述信号处理方法中的信号处理结果,在一些可行的实施例中,该信号处理结果可以由处理器直接输出,也可以先被存储于存储器然后经所述存储器输出;在一些可行的实施例中,可以只有一个输出接口,也可以有多个输出接口。在一些可行的实施例中,该输出接口输出的信号处理结果可以送到存储器中存储,也可以送到下一个信号处理装置继续进行处理,或者送到显示设备进行显示、送到播放器终端进行播放等。
[0102] 该信号处理装置700还可以包括:
[0103] 存储器704:该存储器中可存储上述的信号矩阵、信号处理结果、权重矩阵、以及配置处理器的相关指令等。在一些可行的实施例中,可以有一个存储器,也可以有多个存储器;该存储器可以是软盘,硬盘如内置硬盘和移动硬盘,磁盘,光盘,磁光盘、闪存、或者技术领域内所公知的任意其他形式的存储介质。
[0104] 进一步地,参见图7b,处理器702中可以包括乘累加(multiply-accumulator,MAC)单元7021、外部缓存器7022、第一缓存器7023、第二缓存器7024、第三缓存器7025、第一寄存器7026、第二寄存器7027和第三寄存器7028。MAC单元7021用于执行具体的乘加运算,外部缓存器7022可用于存储信号矩阵和权重矩阵,第一缓存器7023和第一寄存器7026可用于存储信号矩阵的分形信号矩阵,第二缓存器7024和第二寄存器7027可用于存储权重矩阵的分形权重矩阵,第三缓存器7025和第三寄存器7028可用于存储矩阵乘的运算结果。MAC单元7021可以直接与第一缓存器7023、第二缓存器7024、第三缓存器7025、第一寄存器7026、第二寄存器7027和第三寄存器7028进行交互。
[0105] 具体来说,以图1所示的矩阵乘运算为例,矩阵C的每个矩阵块(结果矩阵)的计算可以分两步执行,比如C00可以按照如下步骤(I)-(II)来执行:
[0106] C00_temp=A00B00               (I)
[0107] C00=C00_temp+A01B10           (II)
[0108] 步骤(I)中,MAC单元7021对分形权重矩阵A00和分形权重矩阵B00进行矩阵乘运算时,可首先尝试从第一寄存器7026中读取A00,若第一寄存器7026中不存在A00,则从第一缓存器7023中读取A00,同样地,可首先尝试从第二寄存器7027中读取B00,若第二寄存器7027中不存在B00,则从第二缓存器7024中读取B00,进而将A00和B00进行矩阵乘运算,得到矩阵乘的运算结果C00_temp(第一运算结果),并将矩阵乘的运算结果C00_temp写入第三寄存器7028中。本申请实施例中矩阵乘的运算结果由于是由分形信号矩阵和分形权重矩阵相乘得到的,因此也可以称为分形结果矩阵。
[0109] 步骤(II)中,MAC单元7021对分形权重矩阵A01和分形权重矩阵B10进行矩阵乘运算时,采用同样的方式读取A01和B10,进行矩阵乘运算得到矩阵乘的运算结果(第二运算结果),并可直接从第三寄存器7028中读取到第一运算结果C00_temp,通过将第一运算结果和第二运算结果相加,得到结果矩阵C00,并将C00写入第三寄存器7028中。
[0110] 由此可知,计算C00的过程中复用了C00_temp,有效降低了C00_temp的读写量,进而降低处理器对带宽的需求,同时节省内存的读写功耗。
[0111] 基于上述描述,图8为本申请实施例提供的一种信号处理方法所对应的流程示意图,如图8所示,包括:
[0112] 步骤801,接收信号矩阵以及权重矩阵。
[0113] 此处,信号矩阵可以来自神经网络的输入层或者信号处理所在中间层中的上一层中间层,该输入信号可以是语音信号、文本信号、图像信号以及温度信号等各种可以被采集并且被处理的信号。该信号矩阵可以是未进行矩阵转换的矩阵,也可以是经过矩阵转换后的矩阵。该信号矩阵可以是M行K列的二维矩阵,且矩阵中包括多个计算机可处理的待处理信号,即每个元素对应一个信号。当该信号矩阵是经过转换后的矩阵时,该信号矩阵转换前的矩阵可以是一维列向量、一维行向量、二维矩阵(比如灰度图像)、以及三维矩阵(比如RGB彩色图像)等,本申请实施例对此不作具体限定。
[0114] 权重矩阵可由多个权重系数构成,该权重矩阵可以是由神经网络定义的,权重系数作用于输入信号,权重系数大对应的输入信号在神经网络学习训练的过程中会被加强,权重系数小对应的输入信号在学习训练的过程中会被减弱。该权重矩阵可以是未进行矩阵转换的权重矩阵,也可以是经过矩阵转换后的权重矩阵,且为K行N列的二维权重矩阵。
[0115] 步骤802,分块所述信号矩阵,得到X×H个分形信号矩阵,以及分块所述权重矩阵,得到H×Y个分形权重矩阵;所述X×H个分形权重矩阵与所述H×Y个分形信号矩阵构成X×H×Y个矩阵乘。
[0116] 此处,分块所述信号矩阵得到X×H个分形信号矩阵,具体是指:将所述信号矩阵分块为X行H列,任一行具有H个分形信号矩阵,任一列具有X个分形信号矩阵。分块所述权重矩阵得到H×Y个分形权重矩阵,具体是指:将所述权重矩阵分块为H行Y列,任一行具有Y个分形信号矩阵,任一列具有H个分形信号矩阵。
[0117] 示例1,参见图9a,分块信号矩阵A,得到2×2(X=2,H=2)个分形信号矩阵,分块权重矩阵B,得到2×2(H=2,Y=2)个分形权重矩阵。此种情形下,计算矩阵C需要进行8(2×2×2)次矩阵乘运算,也就是说,4个分形信号矩阵和4个分形权重矩阵构成8个矩阵乘。
[0118] 示例2,参见图9b,分块信号矩阵A,得到3×2(X=3,H=2)个分形信号矩阵,分块权重矩阵B,得到2×3(H=2,Y=3)个分形权重矩阵。此种情形下,计算矩阵C需要进行18(3×2×3)次矩阵乘运算,也就是说,6个分形信号矩阵和6个分形权重矩阵构成18个矩阵乘。
[0119] 步骤803,获取所述X×H×Y个矩阵乘的运算序列,并根据所述X×H×Y个矩阵乘的运算序列,对所述X×H×Y个矩阵乘进行处理,得到X×Y个结果矩阵,其中,所述X×Y个结果矩阵中的任一结果矩阵是根据所述X×H×Y个矩阵乘中的至少两个矩阵乘的运算结果累加得到的。
[0120] 此处,所述X×H×Y个矩阵乘的运算序列用于指示MAC单元计算所述X×H×Y个矩阵乘的先后顺序,其可以为多种表示形式,比如数据表,参见表1所示。
[0121] 表1:X×H×Y个矩阵乘的运算序列示例
[0122]序列号 分形信号矩阵的地址信息 分形权重矩阵的地址信息
1 A00的地址信息 B00的地址信息
2 A10的地址信息 B00的地址信息
3 A01的地址信息 B10的地址信息
…… …… ……
X×H×Y ******** ********
[0123] 表1中,序列号用于指示先后顺序,具体实施中,MAC单元可根据系列号的顺序对各个矩阵乘进行运算。分形信号矩阵的地址信息可以为分形信号矩阵在信号矩阵中的位置信息,比如,分形信号矩阵的地址信息可以采用其在信号矩阵中的坐标来表示,参见图6所示,矩阵A中的每个小方格对应的坐标即为分形信号矩阵的地址信息,比如(0,0)为分形信号矩阵1的地址信息、(0,1)为分形信号矩阵2的地址信息。分形权重矩阵的地址信息可以为分形权重矩阵在权重矩阵中的位置信息,具体可参见分形信号矩阵的地址信息,不再赘述。
[0124] 需要说明的是,表1仅为一种示例,在其它的实施例中,也可以没有序列号,而仅按照先后顺序列出分形信号矩阵的地址信息和分形权重矩阵的地址信息,或者,也可以为其它可能的形式,只要能够有效标识出各个矩阵乘的运算顺序即可,本申请对此不做具体限定。
[0125] 本申请实施例中,所述X×H×Y个矩阵乘的运算序列是根据性能参数得到的,所述性能参数包括从第一缓存器读取所述X×H个分形信号矩阵中的任一分形信号矩阵的功耗、从第二缓存器中读取所述H×Y个分形权重矩阵中的任一分形权重矩阵的功耗和从第三缓存器读取所述X×H×Y个矩阵乘中的任一矩阵乘的运算结果的功耗,进一步地,所述性能参数还可以包括带宽参数,所述带宽参数包括从所述第一缓存器中读取所述任一分形信号矩阵的带宽惩罚值、从第二缓存器中读取所述任一分形权重矩阵的带宽惩罚值和从第三缓存器读取所述任一矩阵乘的运算结果的带宽惩罚值。如此,从功耗和带宽两个方面来确定多个矩阵乘的运算序列,从而使得运算序列可以更好地利用处理器的计算能力,并降低处理器的功耗。
[0126] 下面具体描述根据性能参数确定运算序列的方式。
[0127] 在一个示例中,可以通过如下方式确定所述X×H×Y个矩阵乘的运算序列:从所述X×H×Y个矩阵乘中选取第一矩阵乘,以所述第一矩阵乘为起点,依次搜索第二至第X×H×Y矩阵乘,得到所述运算序列;其中,所述第k矩阵乘是通过如下方式搜索到的:根据从第k-1矩阵乘跃迁到所述X×H×Y个矩阵乘中的任一个矩阵乘的代价值,选取代价值小于第一阈值的矩阵乘,得到所述第k矩阵乘,k为大于等于2且小于等于X×H×Y的整数;所述第k矩阵乘为所述X×H×Y个矩阵乘中除所述第一矩阵乘至所述第k-1矩阵乘以外的矩阵乘。
[0128] 下面对从第k-1矩阵乘跃迁到第i矩阵乘(第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘)的代价值的计算方式进行描述。
[0129] 以(x,h,y)代表X×H×Y个矩阵乘中的一个矩阵乘,从第k-1矩阵乘跃迁到第i矩阵乘可以表示为从(xk-1,hk-1,yk-1)跃迁到(xi,hi,yi),即MAC单元先计算(xk-1,hk-1,yk-1)然后计算(xi,hi,yi)。
[0130] 一种可能的实现方式中,根据不同缓存器的功耗来确定代价值。此种方式中,从第k-1矩阵乘跃迁到第i矩阵乘的代价函数如下:
[0131] Zi=Eai+Ebi+Eci
[0132] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示读取所述第i矩阵乘的运算结果的功耗。
[0133] 进一步地,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵(此时xi-1=xi且hi-1=hi),则Eai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1;若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵(此时hi-1=hi且yi-1=yi),则Ebi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2;若第i个矩阵乘复用第k-1个矩阵乘的运算结果(此时xi-1=xi且yi-1=yi),则Eci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3。
[0134] 其中,x1、x2、x3均大于0。在一个示例中,x1:x2:x3=v1:v2:v3;v1为从所述第一缓存器读取所述任一分形信号矩阵的功耗,v2为从所述第二缓存器中读取所述任一分形权重矩阵的功耗,v3为从所述第三缓存器读取所述任一矩阵乘的运算结果的功耗。
[0135] 也就是说,x1、x2、x3可以分别为从所述第一缓存器读取所述任一分形信号矩阵的功耗、从所述第二缓存器中读取所述任一分形权重矩阵的功耗、从所述第三缓存器读取所述任一矩阵乘的运算结果的功耗;或者,也可以为根据从所述第一缓存器读取所述任一分形信号矩阵的功耗、从所述第二缓存器中读取所述任一分形权重矩阵的功耗、从所述第三缓存器读取所述任一矩阵乘的运算结果的功耗,得到的一组具有比例关系的值。
[0136] 根据上述内容可知,由于从所述第一缓存器读取所述任一分形信号矩阵的功耗、从所述第二缓存器中读取所述任一分形权重矩阵的功耗、从所述第三缓存器读取所述任一矩阵乘的运算结果的功耗可能不同,因此,本申请实施例在确定从(xi-1,hi-1,yi-1)跃迁到(xi,hi,yi)的代价值时,根据上述三种功耗来确定代价值进而确定运算序列,相比于现有技术中将上述三种功耗视为相同而仅考虑cache的命中率来说,能够更加有效地降低处理器的功耗。
[0137] 另一种可能的实现方式中,第一缓存器的读写带宽、第二缓存器的读写带宽、第三缓存器的读写带宽也可能不同,比如,第一缓存器的读写带宽为50mb/s,而第二缓存器的读写带宽为100mb/s,第三缓存器的读写带宽为100mb/s,由于第一缓存器的读写带宽小于第二缓存器的读写带宽和第三缓存器的读写带宽,因此尽量复用分形信号矩阵,能够有效发挥处理器的计算能力。基于此,本申请实施例中引入了带宽参数,所述带宽参数包括从所述第一缓存器中读取所述任一分形信号矩阵的带宽惩罚值、从第二缓存器中读取所述任一分形权重矩阵的带宽惩罚值和从第三缓存器读取所述任一矩阵乘的运算结果的带宽惩罚值;所述带宽参数是根据所述第一缓存器的读写带宽、所述第二缓存器的读写带宽和所述第三缓存器的读写带宽得到的,带宽越大,对应的带宽惩罚值越小。
[0138] 此种方式中,从第k-1矩阵乘跃迁到第i矩阵乘的代价函数如下:
[0139] Zi=(Eai+Pai)+(Ebi+Pbi)+(2Eci+2Pci)
[0140] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示从所述第三缓存器读取所述第i矩阵乘的运算结果的功耗;Pai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的带宽惩罚值;Pbi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的带宽惩罚值,Pci用于指示从所述第一缓存器读取所述第i矩阵乘的运算结果的带宽惩罚值。
[0141] 进一步地,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,Pai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1,Pai=y1;若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,Pbi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2,Pbi=y2;若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,Pci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3,Pci=y3;
[0142] 其中,x1、x2、x3、y1、y2、y3均大于0。在一个示例中,x1:x2:x3=v1:v2:v3;v1为从所述第一缓存器读取所述任一分形信号矩阵的功耗,v2为从所述第二缓存器中读取所述任一分形权重矩阵的功耗,v3为从所述第三缓存器读取所述任一矩阵乘的运算结果的功耗;y1:y2:y3=1/w1:1/w2:1/w3;w1为所述第一缓存器的读写带宽、w2为所述第二缓存器的读写带宽、w2为所述第三缓存器的读写带宽。比如,第一缓存器的读写带宽为50mb/s,第二缓存器的读写带宽为100mb/s,第三缓存器的读写带宽为100mb/s,则可设置y1=2,y2=1,y3=1。
[0143] 根据上述内容可知,本申请实施例在确定从第k-1矩阵乘跃迁到第i矩阵乘的代价值时,从功耗和带宽两个方面来确定多个矩阵乘的运算序列,从而使得运算序列可以更好地利用处理器的计算能力,并降低处理器的功耗。
[0144] 具体来说,可以随机从所述X×H×Y个矩阵乘中选取一个矩阵乘作为第一矩阵乘。假设X=8,H=8,Y=8,第一矩阵乘可以表示为(x1,h1,y1),以(x1,h1,y1)为搜索起点,在搜索第二个节点时,由于第二个点可能为511个节点中的一个,此时,可计算从(x1,h1,y1)跃迁到
511个节点中的任一个节点的代价值,并选取代价值最小的节点(本申请实施例中为避免序列中的节点重复,选取的节点为序列中已有的节点之外的节点,后续相同),作为第二节点;
进而继续搜索第三节点,第三节点可能为511个节点中的任一个,此时,可计算从(x1,h1,y1)跃迁到511个节点中的任一个节点的代价值,并选取代价值最小的节点作为第三节点;进而继续搜索第四个节点,以此类推,搜索到第512个节点时,选取代价值最小的序列作为最后一个节点,进而得到运算序列。
[0145] 举个例子,假设共有四个节点,分别节点1、节点2、节点3、节点4。图10a为一种搜索序列示意图,如图10a所示,以节点1为起点,搜索第二节点时,分别计算节点1和四个节点的代价值,保留代价值最小的一个节点,比如节点3;搜索第三节点时,分别计算节点3和四个节点的代价值,保留代价值最小的一个节点,比如节点2;搜索第四节点时,分别计算节点3和四个节点的代价值,保留代价值最小的一个节点,比如节点4,进而得到运算序列为节点1-节点3-节点2-节点4。
[0146] 需要说明的是,在其它可能的实施例中,搜索第i节点时,可以排除序列中已经存在的前i-1个节点,从而减少计算量。比如,如图10b所示,以搜索第三节点为例,可以仅计算节点3和节点2、节点4的代价值,而无需再计算节点3和节点1的代价值。具体不再赘述。
[0147] 在另一个示例中,为了进一步提高得到的运算序列的准确性,在每一步搜索时,可以保留多个节点(比如共有512个节点,则可以保留8个节点)。具体来说,以(x1,h1,y1)为起点搜索第二个节点时,可计算从(x1,h1,y1)跃迁到511个节点中的任一个节点的代价值,并保留已有序列中代价值之和最小的8个序列,得到备选第二节点;进而继续搜索第三个节点,可分别计算从各个备选第二节点跃迁到511个节点中的任一个节点的代价值,并保留已有序列中代价值之和最小的8个序列,得到备选第三节点;进而继续搜索第四个节点,以此类推,搜索到第512个节点时,选取代价值之和最小的序列作为运算序列。
[0148] 举个例子,假设共有四个节点,分别节点1、节点2、节点3、节点4。图10c为另一种搜索序列示意图,如图10c所示,以节点1为起点,搜索第二节点时,分别计算节点1和四个节点的代价值,保留已有序列中代价值之和最小的2个序列,其中,已有序列为节点1-节点2、节点1-节点3、节点1-节点4,以节点1-节点2为例,由于仅进行一次跃迁,因此已有序列的代价值之和即为从节点1跃迁到节点2的代价值;比如,代价值之和最小的2个序列为节点1-节点2、节点1-节点3,节点2和节点3即为备选第二节点。搜索第三节点时,分别计算节点2和四个节点的代价值、节点3和四个节点的代价值,保留已有序列中代价值之和最小的2个序列,其中,已有序列为节点1-节点2-节点3、节点1-节点2-节点4、节点1-节点3-节点2、节点1-节点
3-节点4,以节点1-节点2-节点3为例,由于进行了两次跃迁,因此已有序列的代价值之和即为从节点1跃迁到节点2的代价值与从节点2跃迁到节点3的代价值之和;比如,代价值之和最小的2个序列为节点1-节点2-节点3、节点1-节点3-节点4,节点3和节点4即为备选第三节点;搜索第四节点时,分别计算节点3和四个节点的代价值、节点4和四个节点的代价值,保留已有序列中代价值之和最小的1个序列,进而得到最终的运算序列为节点1-节点3-节点
4-节点2。
[0149] 本申请实施例还提供另外两种确定运算序列的方式。
[0150] 方式一
[0151] 以(x1,h1,y1)为搜索起点,列举出所述X×H×Y个矩阵乘可能构成的多个序列,并分别计算多个序列中的代价值之和,进而选择出代价值之和最小的序列作为最终的X×H×Y个矩阵乘的运算序列。具体代价值的计算方式可参见上述描述,此处不再赘述。
[0152] 本申请实施例中,在计算第一序列中的代价值之和时,可以忽略起点(第一节点),而直接从第一节点跃迁到第二节点的代价值开始计算。
[0153] 举个例子,X=8,H=8,Y=8,则以(x1,h1,y1)为搜索起点,8×8×8个矩阵乘可能构成的序列有511!个,进而根据上述公式计算各个序列中的代价值之和,通过比较得到最终的运算序列。
[0154] 由于此种方式列举出了所有可能的序列,并依据所有可能的序列对应的代价值来选择最终的运算序列,从而能够有效确定出最优的运算序列。
[0155] 方式二
[0156] 以(x1,h1,y1)为搜索起点,在搜索运算序列时,可以每一步只搜索与前一步最靠近的f个点,从而减小计算量,减轻处理负担。f的取值可根据实际需要进行设置,比如f=8,则在X=8,H=8,Y=8的示例中,以(x1,h1,y1)为搜索起点,共可搜索到8503*7!个序列,进而可根据上述公式计算各个序列对应的代价值,通过比较得到最终的运算序列。
[0157] 需要说明的是,本申请实施例中所述X×H×Y个矩阵乘的运算序列可以是预先确定好并存储的,如此,在执行上述步骤803时,可直接获取存储的所述X×H×Y个矩阵乘的运算序列,从而能够提高信号处理的效率;或者,也可以是在执行步骤803时,根据性能参数确定出所述X×H×Y个矩阵乘的运算序列。具体不做限定。
[0158] 步骤804,输出信号处理结果,所述信号处理结果中包括所述多个矩阵乘运算结果。该信号处理结果去往信号处理所在中间层的下一层中间层或者神经网络的输出层。
[0159] 基于同一发明构思,本申请实施例还提供一种信号处理装置,该信号处理装置用于实现图8所示意的方法流程,如图11所示,信号处理装置1100包括:
[0160] 收发模块1101,用于接收信号矩阵以及权重矩阵;
[0161] 处理模块1102,用于分块所述信号矩阵,得到X×H个分形信号矩阵,以及分块所述权重矩阵,得到H×Y个分形权重矩阵;所述X×H个分形权重矩阵与所述H×Y个分形信号矩阵构成X×H×Y个矩阵乘;以及,获取所述X×H×Y个矩阵乘的运算序列,并根据所述X×H×Y个矩阵乘的运算序列,对所述X×H×Y个矩阵乘进行处理,得到X×Y个结果矩阵;其中,所述X×Y个结果矩阵中的任一结果矩阵是根据所述X×H×Y个矩阵乘中的至少两个矩阵乘的运算结果累加得到的;所述X×H×Y个矩阵乘的运算序列是根据性能参数得到的,所述性能参数包括从第一缓存器读取所述X×H个分形信号矩阵中的任一分形信号矩阵的功耗、从第二缓存器中读取所述H×Y个分形权重矩阵中的任一分形权重矩阵的功耗和从第三缓存器读取所述X×H×Y个矩阵乘中的任一矩阵乘的运算结果的功耗;
[0162] 输出模块1103,用于输出信号处理结果,所述信号处理结果中包括所述X×Y个结果矩阵。
[0163] 在一种可能的设计中,所述处理模块1102通过如下方式确定所述X×H×Y个矩阵乘的运算序列:
[0164] 从所述X×H×Y个矩阵乘中选取第一矩阵乘,以所述第一矩阵乘为起点,依次搜索第二至第X×H×Y矩阵乘,得到所述运算序列;
[0165] 其中,所述第k矩阵乘是通过如下方式搜索到的:
[0166] 根据从第k-1矩阵乘跃迁到所述X×H×Y个矩阵乘中的任一个矩阵乘的代价值,选取代价值最小的矩阵乘作为所述第k矩阵乘,k为大于等于2且小于等于X×H×Y的整数;所述第k矩阵乘为所述X×H×Y个矩阵乘中除所述第一矩阵乘至所述第k-1矩阵乘以外的矩阵乘。
[0167] 在一种可能的设计中,所述处理模块1102通过如下方式确定从第k-1矩阵乘跃迁到第i矩阵乘的代价值,所述第i矩阵乘为所述X×H×Y个矩阵乘中的任一个矩阵乘:
[0168] Zi=Eai+Ebi+2Eci
[0169] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示读取所述第i矩阵乘的运算结果的功耗。
[0170] 在一种可能的设计中,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1;
[0171] 若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2;
[0172] 若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3;
[0173] x1、x2、x3均大于0。
[0174] 在一种可能的设计中,所述性能参数还包括带宽参数,所述带宽参数包括从所述第一缓存器中读取所述任一分形信号矩阵的带宽惩罚值、从第二缓存器中读取所述任一分形权重矩阵的带宽惩罚值和从第三缓存器读取所述任一矩阵乘的运算结果的带宽惩罚值;
[0175] 所述带宽参数是根据所述第一缓存器的读写带宽、所述第二缓存器的读写带宽和所述第三缓存器的读写带宽得到的。
[0176] 在一种可能的设计中,所述处理模块1102通过如下方式确定从k-1矩阵乘跃迁到第i矩阵乘的代价值:
[0177] Zi=(Eai+Pai)+(Ebi+Pbi)+(2Eci+2Pci)
[0178] 其中,Zi为从第k-1矩阵乘跃迁到第i矩阵乘的代价值;Eai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的功耗;Ebi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的功耗;Eci用于指示从所述第三缓存器读取所述第i矩阵乘的运算结果的功耗;Pai用于指示从所述第一缓存器读取所述第i矩阵乘的分形信号矩阵的带宽惩罚值;Pbi用于指示从所述第二缓存器读取所述第i矩阵乘的分形权重矩阵的带宽惩罚值,Pci用于指示从所述第一缓存器读取所述第i矩阵乘的运算结果的带宽惩罚值。
[0179] 在一种可能的设计中,若第i个矩阵乘复用第k-1个矩阵乘中的分形信号矩阵,则Eai=0,Pai=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形信号矩阵,则Eai=x1,Pai=y1;
[0180] 若第i个矩阵乘复用第k-1个矩阵乘中的分形权重矩阵则Ebi=0,Pbi=0,若第i个矩阵乘未复用第k-1个矩阵乘中的分形权重矩阵,则Ebi=x2,Pbi=y2;
[0181] 若第i个矩阵乘复用第k-1个矩阵乘的运算结果,则Eci=0,Pci=0,若第i个矩阵乘未复用第k-1个矩阵乘的运算结果,则Eci=x3,Pci=y3;
[0182] x1、x2、x3、y1、y2、y3均大于0。
[0183] 需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0184] 所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0185] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
[0186] 本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0187] 本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0188] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0189] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0190] 显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。