CN112219210B - 信号处理装置和信号处理方法 - Google Patents
信号处理装置和信号处理方法 Download PDFInfo
- Publication number
- CN112219210B CN112219210B CN201880094243.2A CN201880094243A CN112219210B CN 112219210 B CN112219210 B CN 112219210B CN 201880094243 A CN201880094243 A CN 201880094243A CN 112219210 B CN112219210 B CN 112219210B
- Authority
- CN
- China
- Prior art keywords
- matrix
- input
- weight
- buffer
- original
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 96
- 238000003672 processing method Methods 0.000 title abstract description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 1104
- 238000007906 compression Methods 0.000 claims abstract description 122
- 230000006835 compression Effects 0.000 claims abstract description 119
- 239000000872 buffer Substances 0.000 claims description 157
- 238000013144 data compression Methods 0.000 claims description 83
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 abstract description 18
- 238000000034 method Methods 0.000 description 49
- 238000013528 artificial neural network Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 26
- 230000008676 import Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000013527 convolutional neural network Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/04—Architecture, e.g. interconnection topology
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
本发明实施例公开了一种信号处理装置和信号处理方法,该信号处理装置包括:压缩系统,用于获取压缩后的第一矩阵,和对至少一个输入矩阵做压缩得到第二矩阵;矩阵乘法器,用于从所述压缩系统获取所述第一矩阵和所述第二矩阵,计算所述第二矩阵和所述第一矩阵的乘积。本申请实施例中,减少矩阵乘法器处理的矩阵的尺寸或减少矩阵乘法器执行矩阵相乘运算的次数,提高计算效率。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种信号处理装置、信号处理方法及计算机可读介质。
背景技术
在计算机技术中,卷积神经网络(Convolutional Neural Network,CNN)是一种多层的神经网络。目前,在卷积神经网络中,处理器进行卷积操作通常是将输入信号特征与权重的卷积,转换为信号矩阵与权重矩阵之间的矩阵乘运算。在具体矩阵乘运算时,对信号矩阵和权重矩阵进行分块处理,得到多个分形(Fractional)信号矩阵和分形权重矩阵,然后对多个分形信号矩阵和分形权重矩阵进行矩阵乘和累加运算。也就是说,卷积操作可以转换为信号矩阵(输入矩阵)与权重矩阵之间的矩阵相乘运算,即AxB([MxK]x[KxN]),其中,A表示信号矩阵(输入矩阵),B表示权重矩阵。通常A矩阵为卷积时根据卷积核步长(kernelstride)从输入数据提取出来的输入矩阵,即输入信号特征转换的输入矩阵。
一般情况下,输入矩阵和权重矩阵都是相对比较大的矩阵,出于节省硬件成本和功耗的考虑,矩阵乘法电路一次能处理的矩阵的尺寸会比输入矩阵和权重矩阵的尺寸小,因此需要把大矩阵乘法拆分成一系列的小矩阵乘法,再从多个小矩阵乘法最终得出不同尺寸的矩阵乘法结果。即便如此,如何进一步提高计算效率仍然是一个问题。
发明内容
本申请实施例提供了一种信号处理装置、信号处理方法及计算机可读介质,可以减少矩阵乘法器执行矩阵相乘运算的次数,以提高计算效率。
第一方面,本申请实施例提供了一种信号处理装置,该信号处理装置包括:压缩系统,用于获取压缩后的第一矩阵,和对至少一个输入矩阵做压缩得到第二矩阵;所述第一矩阵和所述第二矩阵满足如下限定:所述第一矩阵是去除至少一个权重矩阵中的至少一个全0行得到的,所述第二矩阵是去除所述至少一个输入矩阵中与所述至少一个全0行对应的至少一个列得到的;或者,所述第二矩阵是去除所述至少一个输入矩阵中的至少一个全0列得到的,所述第一矩阵是去除所述至少一个权重矩阵中与所述至少一个全0列对应的至少一个行得到的;所述输入矩阵包括多个计算机可处理的信号,所述权重矩阵包括多个权重系数;矩阵乘法器,用于从所述压缩系统获取所述第一矩阵和所述第二矩阵,计算所述第二矩阵和所述第一矩阵的乘积。
可选地,所述第二矩阵包括的行的数量与所述第一矩阵包括的列的数量相同。可选地,所述第一矩阵包括的行的数量小于所述权重矩阵包括的行的数量,所述第二矩阵包括的列的数量小于所述输入矩阵包括的列的数量。所述输入矩阵和所述权重矩阵的乘积等于所述第二矩阵和所述第一矩阵的乘积。由于第二矩阵的尺寸小于输入矩阵的尺寸,第一矩阵的尺寸小于权重矩阵,本申请实施例中通过将输入矩阵和权重矩阵的相乘转换为第二矩阵和第一矩阵相乘,可以有效减少矩阵乘法的运算量。
在一个可选的实现方式中,所述压缩系统,具体用于获取预设的所述第一矩阵。在该实现方式中,压缩系统可以直接获取第一矩阵,不需要额外的操作,实现简单。可选地,所述第一矩阵可以预设在外部存储器或其他存储器中。可选地,所述第一矩阵可以以硬件形式预设在压缩系统中。
在一个可选的实现方式中,所述压缩系统,具体用于所述压缩系统,具体用于对所述至少一个权重矩阵做压缩得到所述第一矩阵。在该实现方式中,通过对权重矩阵和输入矩阵进行压缩,可以减少矩阵乘法器所需处理的矩阵的尺寸或所需执行矩阵乘法的次数,进而提升计算效率。
在一个可选的实现方式中,所述压缩系统包括:处理器和数据压缩单元,所述处理器,用于对所述至少一个权重矩阵做压缩得到所述第一矩阵;和/或,所述数据压缩单元,用于对所述至少一个输入矩阵做压缩得到所述第二矩阵。在本实现方式中,通过处理器和数据压缩单元分别压缩权重矩阵和输入矩阵,实现简单。
在一个可选的实现方式中,所述处理器,还用于生成压缩信息,所述压缩信息用于指示所述至少一个全0行;所述数据压缩单元,还用于根据所述压缩信息对所述至少一个输入矩阵做压缩得到所述第二矩阵。在该实现方式中,数据压缩单元可以根据压缩信息可以准确、快速地去除至少一个输入矩阵中的全0列,以便于得到第二矩阵,实现简单。
在一个可选的实现方式中,所述信号处理装置还包括:直接内存访问控制器DMAC与权重缓存器,所述DMAC耦合至所述权重缓存器和外部存储器;所述处理器,还用于将所述第一矩阵和所述压缩信息存入所述外部存储器;所述DMAC,用于将所述第一矩阵从所述外部存储器搬移到所述权重缓存器,以及用于将所述压缩信息从所述外部存储器搬移到所述数据压缩单元;所述矩阵乘法器还用于从所述权重缓存器获取所述第一矩阵。在该实现方式中,DMAC可以及时地将第一矩阵搬移到权重缓存器以及将压缩信息搬移到数据压缩单元,以便于数据压缩单元对输入矩阵做压缩以及矩阵乘法器快速地获取第一矩阵。
在一个可选的实现方式中,所述信号处理装置还包括原始数据缓存器和输入缓存器;所述DMAC还用于将所述至少一个输入矩阵从所述外部存储器搬移到所述原始数据缓存器;所述数据压缩单元还用于从所述原始数据缓存器获取所述至少一个输入矩阵,并在对所述至少一个输入矩阵做压缩得到所述第二矩阵后将所述第二矩阵存入所述输入缓存器;所述矩阵乘法器还用于从所述输入缓存器获取所述第二矩阵。在该实现方式中,可以快速地对至少一个输入矩阵做压缩得到第二矩阵,并存入输入缓存器。
在一个可选的实现方式中,所述压缩系统包括:处理器和数据压缩单元,所述处理器,用于对所述至少一个输入矩阵做压缩得到所述第二矩阵;和/或,所述数据压缩单元,用于对所述至少一个权重矩阵做压缩得到所述第一矩阵。在本实现方式中,通过处理器和数据压缩单元分别输入权重矩阵和权重矩阵,实现简单。
在一个可选的实现方式中,所述处理器,还用于生成压缩信息,所述压缩信息用于指示所述至少一个全0列;所述数据压缩单元,还用于根据所述压缩信息对所述至少一个权重矩阵做压缩得到所述第一矩阵。在该实现方式中,数据压缩单元可以根据压缩信息可以准确、快速地去除至少一个输入矩阵中的全0列,以便于得到第二矩阵,实现简单。
在一个可选的实现方式中,所述信号处理装置还包括:直接内存访问控制器DMAC与输入缓存器,所述DMAC耦合至所述输入缓存器和外部存储器;所述处理器,还用于将所述第二矩阵和所述压缩信息存入所述外部存储器;所述DMAC,用于将所述第二矩阵从所述外部存储器搬移到所述输入缓存器,以及用于将所述压缩信息从所述外部存储器搬移到所述数据压缩单元;所述矩阵乘法器还用于从所述输入缓存器获取所述第二矩阵。在该实现方式中,DMAC可以及时地将第二矩阵搬移到输入缓存器以及将压缩信息搬移到数据压缩单元,以便于数据压缩单元对权重矩阵做压缩以及矩阵乘法器快速地获取第二矩阵。
在一个可选的实现方式中,所述信号处理装置还包括原始数据缓存器和权重缓存器;所述DMAC还用于将所述至少一个权重矩阵从所述外部存储器搬移到所述原始数据缓存器;所述数据压缩单元还用于从所述原始数据缓存器获取所述至少一个权重矩阵,并在对所述至少一个权重矩阵做压缩得到所述第一矩阵后将所述第一矩阵存入所述权重缓存器;所述矩阵乘法器还用于从所述权重缓存器获取所述第一矩阵。在该实现方式中,可以快速地对至少一个权重矩阵做压缩得到第二矩阵,并存入输入缓存器。
在一个可选的实现方式中,所述信号处理装置还包括累加单元,所述累加单元,用于对所述第二矩阵和所述第一矩阵的乘积做累加得到处理结果。在该实现方式中,利用累加器对第二矩阵和第一矩阵的乘积做累加得到处理结果,实现简单。
在一个可选的实现方式中,所述处理器,还用于执行以下至少一项:对原始权重矩阵做拆分得到所述至少一个权重矩阵;或,对原始输入矩阵做拆分得到所述至少一个输入矩阵。在该实现方式中,对原始权重矩阵和原始输入矩阵做拆分,以便于通过拆分得到的权重矩阵和输入矩阵计算该原始输入矩阵和该原始权重矩阵的乘积。
在一个可选的实现方式中,所述多个计算机可处理的信号包括:语音信号、文本信号或图像信号中的至少一项。
在一个可选的实现方式中,所述处理器,具体用于在未执行卷积运算任务的情况下,从所述外部存储器读取所述权重矩阵,将所述权重矩阵中的非全0行进行拼接得到所述第一矩阵,将所述第一矩阵发送至所述外部存储器。可选地,卷积运算任务是指需要执行卷积运算的任务。在该实现方式中,处理器可以在未执行卷积运算或FC运算的情况下,对权重矩阵进行压缩,而不是在执行卷积运算或FC运算的过程中对该权重矩阵进行压缩,可以节省压缩该权重矩阵的时间开销,提高计算效率。
第二方面,本申请实施例提供了一种信号处理方法,该方法包括:获取压缩后的第一矩阵,和对至少一个输入矩阵做压缩得到第二矩阵;所述第一矩阵和所述第二矩阵满足如下限定:所述第一矩阵是去除至少一个权重矩阵中的至少一个全0行得到的,所述第二矩阵是去除至少一个输入矩阵中与所述至少一个全0行对应的至少一个列得到的;或者,所述第二矩阵是去除所述至少一个输入矩阵中的至少一个全0列得到的,所述第一矩阵是去除所述至少一个权重矩阵中与所述至少一个全0列对应的至少一个行得到的;所述输入矩阵包括多个计算机可处理的信号,所述权重矩阵包括多个权重系数;计算所述第二矩阵和所述第一矩阵的乘积。本申请实施例中,信号处理装置通过对至少一个权重矩阵做压缩以及对输入矩阵做压缩,可以减少矩阵乘法器执行矩阵相乘运算的次数或相乘矩阵的尺寸,以提高计算效率。
在一个可选的实现方式中,所述获取压缩后的第一矩阵和第二矩阵包括:获取预设的所述第一矩阵。
在一个可选的实现方式中,所述获取压缩后的第一矩阵和第二矩阵包括:对所述至少一个权重矩阵做压缩得到所述第一矩阵。
在一个可选的实现方式中,所述方法还包括:生成压缩信息,所述压缩信息用于指示所述至少一个全0行;所述获取第二矩阵包括:根据所述压缩信息对所述至少一个输入矩阵做压缩得到所述第二矩阵。
在一个可选的实现方式中,所述方法还包括:生成压缩信息,所述压缩信息用于指示所述至少一个全0列;所述获取第一矩阵包括:根据所述压缩信息对所述至少一个权重矩阵做压缩得到所述第一矩阵。
在一个可选的实现方式中,所述计算所述第二矩阵和所述第一矩阵的乘积之后,所述方法还包括:对所述第二矩阵和所述第一矩阵的乘积做累加得到处理结果。
在一个可选的实现方式中,所述对至少一个权重矩阵做压缩得到第一矩阵,并对至少一个输入矩阵做压缩得到第二矩阵之前,所述方法还包括如下至少一项:对原始权重矩阵做拆分得到所述至少一个权重矩阵或者对原始输入矩阵做拆分得到所述至少一个输入矩阵。
在一个可选的实现方式中,所述多个计算机可处理的信号包括:语音信号、文本信号或图像信号中的至少一项。
第三方面,本申请实施例提供了另一种信号处理装置,该信号处理装置包括:压缩单元,用于获取压缩后的第一矩阵,和对至少一个输入矩阵做压缩得到第二矩阵;所述第一矩阵和所述第二矩阵满足如下限定:所述第一矩阵是去除所述至少一个权重矩阵中的至少一个全0行得到的,所述第二矩阵是去除至少一个输入矩阵中与所述至少一个全0行对应的至少一个列得到的;或者,所述第二矩阵是去除所述至少一个输入矩阵中的至少一个全0列得到的,所述第一矩阵是去除所述至少一个权重矩阵中与所述至少一个全0列对应的至少一个行得到的;所述输入矩阵包括多个计算机可处理的信号,所述权重矩阵包括多个权重系数;计算单元,用于计算所述第二矩阵和所述第一矩阵的乘积。
在一个可选的实现方式中,所述压缩单元,还用于:获取预设的所述第一矩阵。
在一个可选的实现方式中,所述压缩单元,还用于:对所述至少一个权重矩阵做压缩得到所述第一矩阵。
在一个可选的实现方式中,所述压缩单元,还用于:生成压缩信息,所述压缩信息用于指示所述至少一个全0行;以及根据所述压缩信息对所述至少一个输入矩阵做压缩得到所述第二矩阵。
在一个可选的实现方式中,所述压缩单元,还用于:生成压缩信息,所述压缩信息用于指示所述至少一个全0列;以及根据所述压缩信息对所述至少一个权重矩阵做压缩得到所述第一矩阵。
在一个可选的实现方式中,所述信号处理装置还包括累加单元,所述累加单元,用于对所述第二矩阵和所述第一矩阵的乘积做累加得到处理结果。
在一个可选的实现方式中,所述信号处理装置还包括拆分单元,所述拆分单元用于执行以下至少一项:对原始权重矩阵做拆分得到所述至少一个权重矩阵或者对原始输入矩阵做拆分得到所述至少一个输入矩阵。
在一个可选的实现方式中,所述多个计算机可处理的信号包括:语音信号、文本信号或图像信号中的至少一项。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第二方面以及任一种可选实现方式的方法。
第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括程序指令,所述程序指令当被处理器执行时使所述信处理器执行上述第二方面以及任一种可选实现方式的方法。
第六方面,本申请实施例提供了一种设备,包括存储器和处理器;存储器用于保存程序指令,处理器用于执行所述程序指令以执行上述第二方面以及任一种可选实现方式的方法。
附图说明
图1为本申请实施例提供的一种神经网络的原理示意图;
图2为本申请实施例提供的一种神经网络具体的实施场景;
图3为本申请实施例提供的另一种神经网络具体的实施场景;
图4为本申请实施例提供的一种矩阵分拆相乘方法的示意图;
图5为本申请实施例提供的一种矩阵分拆相乘架构示意图;
图6为本申请实施例提供的一种信号处理装置的硬件架构示意图;
图7为本申请实施例提供的一种信号处理方法流程图;
图8A为本申请实施例提供的一种压缩原始权重矩阵的示意图;
图8B为本申请实施例提供的一种压缩输入矩阵的示意图;
图8C为本申请实施例提供的一种压缩输入矩阵的示意图;
图9为本申请实施例提供的一种拼接子矩阵的示意图;
图10为本申请实施例提供的另一种信号处理方法;
图11为本申请实施例提供的另一种信号处理装置的硬件架构示意图;
图12为本申请另一实施例提供的一种信号处理方法流程图;
图13为本申请实施例提供的一种压缩权重矩阵的示意图;
图14为本申请实施例提供的另一种信号处理方法流程图;
图15为本申请实施例提供的一种子矩阵相乘的示意图;
图16为本申请实施例提供的一种拼接的子矩阵相乘的示意图;
图17为本申请实施例提供的又一种信号处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请实施例方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。
本申请的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”、和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。“和/或”用于表示在其所连接的两个对象之间选择一个或全部。例如“A和/或B”表示A、B或A+B。
如图1所示,是一种神经网络的原理示意图,该神经网络100具有N个处理层,N≥3且N取自然数,该神经网络的第一层为输入层101,负责接收输入信号,该神经网络的最后一层为输出层103,输出神经网络的处理结果,除去第一层和最后一层的其他层为中间层104,这些中间层共同组成隐藏层102,隐藏层中的每一层中间层既可以接收输入信号,也可以输出信号,隐藏层负责输入信号的处理过程。每一层代表了信号处理的一个逻辑级别,通过多个层,数据信号可经过多级逻辑的处理。
为便于理解,下面对本申请实施例中神经网络的处理原理进行描述,神经网络的处理通常是非线性函数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)所示:
输入信号与输出信号的关系如式(2)所示,其中bi为神经网络处理函数的偏置值,该偏置值对神经网络的输入进行调整从而得到理想的输出结果。
h1=f(W11x1+W12x2+W13x3+b1)
h2=f(W21x1+W22x2+W23x3+b2) (2)
h3=f(W31x1+W32x2+W33x3+b3)
在一些可行的实施例中该神经网络的输入信号可以是语音信号、文本信号、图像信号、或温度信号等各种形式的信号,该语音信号可以是录音设备录制的语音信号、移动手机或固定电话在通话过程中接收的语音信号、以及收音机接收的电台发送的语音信号等,文本信号可以是TXT文本信号、Word文本信号、以及PDF文本信号等,图像信号可以是相机拍摄的风景信号、显监控设备捕捉的社区环境的图像信号以及门禁系统获取的人脸的面部信号等,该神经网络的输入信号包括其他各种计算机可处理的工程信号,在此不再一一列举。该神经网络的隐藏层102进行的处理可以是去除语音信号中混杂的噪音信号从而增强语音信号、对文本信号中的特定内容进行理解、以及对人脸的面部图像信号进行识别等处理。
本申请实施例提供一种该神经网络100可以应用于各类设备中。在一种具体的实施场景,如图2所示,智能手机202和2054以内置该神经网络100相关的装置。移动智能手机客户201向移动智能手机客户205发起语音呼叫,语音信号经智能手机202发出,经基站203转送给智能手机204,由于发起语音呼叫时暴雨骤起且伴有强烈的电闪雷鸣,导致输入信号206被严重削弱且含有较大的噪声,该输入信号可以为一维数字语音信号,智能手机204中配备有神经网络100,该神经网络可以是以专用电路的形式在芯片中实现,也可以是运行在中央处理单元(Central Processing Unit,CPU)或其他处理器中的程序指令。输入信号206在智能手机204中的神经网络中经过处理,该处理包括噪声去除以及有效信号增强等,得到输出信号207,该输出信号完整的保留了主叫用户传送的语音信息,避免了恶劣自然环境对信号的干扰。
本申请实施例提供该神经网络100的另一种具体的实施场景,如图3所示,一轿车303在高速行驶,一路人301使用数码相机302拍下了该轿车303的车牌号,但是由于轿车303具有较高的车速v,数码相机的输入信号304发生了运动模糊现象,该输入信号为二维数字图像信号,该数码相机302中配备有神经网络100,该神经网络可以是以专用电路的形式在芯片中实现,也可以是运行在图像信号处理器中的软件模块。输入信号304在数码相机302中的神经网络中经过处理后,该处理包括轿车运动模型估计、运动模糊去除等,得到输出信号305,输出信号中包含的车牌号信息清晰度得以提高,可得到准确辨识。
如前所示,在图像识别、音频识别等领域广泛应用的卷积神经网络往往需要执行大量的矩阵乘法运算,执行矩阵乘法运算需要非常高的存储带宽且运算量很大。为了充分利用硬件的处理能力,卷积神经网络中的卷积运算和全连接层运算(Full Connect,FC)会转换为AxB([MxK]x[KxN])的矩阵相乘运算。其中,A和B均表示矩阵,M表示矩阵A的行数,K表示矩阵A的列数以及矩阵B的行数,N表示矩阵B的列,AxB表示矩阵A与矩阵B相乘。在实际应用中,输入矩阵和权重矩阵都是相对比较大的矩阵,当前的硬件(矩阵乘法器)一次能处理的矩阵的尺寸通常会比输入矩阵和权重矩阵小,因此可能需要把大矩阵乘法拆分成一系列的小矩阵乘法,再根据多个小矩阵乘法最终得出不同尺寸的矩阵乘法结果。
图4为本申请实施例提供的一种矩阵分拆相乘方法的示意图,如图4所示,最左边的矩阵为输入矩阵,中间的矩阵为权重矩阵,最右边的矩阵为输出矩阵,该输入矩阵的尺寸为3Hx3H,该权重矩阵的尺寸为3Hx2H,这两个矩阵相乘得到的输出矩阵的尺寸为3Hx2H。假设硬件(矩阵乘法器)的处理能力为HxH矩阵相乘,需要分别把输入矩阵和权重矩阵拆分为多个HxH矩阵,如图4所示,输入矩阵拆分得到A0至A8,权重矩阵拆分得到B0至B5,每次计算两个HxH矩阵的乘积,横向和纵向均以H点为单位滑动。这样多次矩阵相乘和相加后最终得出一个完整的输出矩阵。其中,C0=A0xB0+A1xB2+A2xB4,C1=A0xB1+A1xB3+A2xB5,C2=A3xB0+A4xB2+A5xB4,C3=A3xB1+A4xB3+A5xB5,C4=A6xB0+A7xB2+A8xB4,C5=A6xB1+A7xB3+A8xB5。在实际应用中,可以依次计算A0xB0、A1xB2以及A2xB4,再把这三次计算得到的矩阵进行相加,得到C0。同理,采用与计算C0相同的方式,计算C1至C5,再将C0至C5组合成输出矩阵。
可以理解,把大矩阵拆小后需要处理多个矩阵乘法和加法,例如计算图4中输入矩阵和权重矩阵的乘积需要18次小矩阵相乘和12次小矩阵相加,每一个小矩阵的乘法都是按以下公式计算:矩阵C=矩阵Ax矩阵B。其中,矩阵C的计算公式如下:
其中,最左边的矩阵表示矩阵A,例如图1中的A0,中间的矩阵表示矩阵B,例如图1中的B0,最右边的矩阵表示矩阵C。矩阵C包括的各元素的计算公式如下:
其中,“*”表示乘号。上面左数第一个矩形框图包括的元素为矩阵A第一列的元素,左数第二个矩形框图包括的元素为矩阵B第一行的元素,左数第三个矩形框图包括的元素为矩阵A第二列的元素,依次类推。从上述公式可以推出,如果矩阵B中出现一整行的0数据,AxB的矩阵相乘过程中,矩阵A的一列数据会被乘以一个0值,参见如下计算公式:
其中,公式(13)中左数第一个矩阵为矩阵A,左数第二个矩阵为矩阵B,左数第三个矩阵为矩阵C,矩阵B第一行的元素均为0。从上面的公式可以看出,矩阵A第一列的每个数据均会被乘以一个0值。可以理解,当矩阵B第二行的元素均为0时,矩阵A第二列的每个数据均会被乘以一个0值;当矩阵B第三行的元素均为0时,矩阵A第三列的每个数据均会被乘以一个0值。同理,当矩阵A第一列的元素均为0时,矩阵B第一行的每个数据均会被乘以一个0值。也就是说,矩阵B中的第M行与矩阵A中的第M列相对应。这样,当矩阵B第M行的元素均为0时,矩阵A第M列的元素均乘以一个0值;当矩阵A第M列的元素均为0时,矩阵B第M行的元素均乘以一个0值。
从公式(13)-(22)可以看出,当矩阵B中有一整列0数据时,[3x3]x[3x3]矩阵相乘可以转换为[3x2]x[2x3]的矩阵相乘。举例来说,公式(13)可以转换为如下公式:
其中,左数第一个矩阵为公式(13)中的左数第一个矩阵压缩后的矩阵,左数第二个矩阵为公式(13)中的左数第二个矩阵压缩后的矩阵。可以理解,矩阵A和矩阵B相乘时,若矩阵B中的至少一整行或矩阵A中的至少一整列为0时,可以对矩阵A和矩阵B进行压缩,以便于减少矩阵相乘和相加计算次数,从而减少因矩阵运算带来的功耗和带宽开销。
本申请实施例提供了多种在计算矩阵A和矩阵B的乘积时,对矩阵进行压缩的方法。一种矩阵压缩方法如下:在矩阵B(权重矩阵)包括N个全0行的情况下,将该矩阵B的非全0行依次进行拼接得到压缩后的矩阵B,将矩阵A(输入矩阵)的目标列进行拼接得到压缩后的矩阵A,其中,目标列为该矩阵A中除上述N个全0行对应的N列之外的列,矩阵B的第M行与矩阵A的第M列相对应,N和M均为大于0的整数。另一种矩阵压缩方法如下:在矩阵A(输入矩阵)包括N个全0列的情况下,将该矩阵A的非全0列依次进行拼接得到压缩后的矩阵A,将矩阵B的目标行进行拼接得到压缩后的矩阵B,其中,目标行是该矩阵B中除上述N个全0列对应的N行之外的行,矩阵A的第M列与矩阵B的第M行相对应,N和M均为大于0的整数。举例来说,计算矩阵A和矩阵B的乘积时,矩阵B的第二行和第四行为全0行,将该矩阵B的非全0行依次进行拼接得到压缩后的矩阵B,将该矩阵A中除第二列和第四列之外的列依次进行拼接得到压缩后的矩阵A。又举例来说,计算矩阵A和矩阵B的乘积时,矩阵A的第二行和第四行为全0列,将该矩阵A的非全0列依次进行拼接得到压缩后的矩阵A,将该矩阵B中除第二行和第四行之外的行依次进行拼接得到压缩后的矩阵B。在实际应用中,也可以采用上述方法对一个大矩阵拆分得到的子矩阵做压缩。或者可以对压缩后的结果做进一步拆分,本实施例对此不做限定。
图5为本申请实施例提供的一种矩阵分拆相乘架构示意图。如图5所示,矩阵乘法器计算输入的小矩阵ai,k和小矩阵bk,j的乘积,并将计算结果输出至累加器,累加器计算小矩阵ci,j和矩阵乘法器当前输出结果的累加值。图5中的矩阵分拆相乘架构主要是实现以下的矩阵相乘公式:
矩阵A中的每个子矩阵(至少包括两个元素)可以理解为该矩阵A的一个元素。如图4所示,输入矩阵拆分得到9个小矩阵(A0至A8),A0至A8均可以理解为该输入矩阵的元素(拆分得到的小矩阵),例如A4为该输入矩阵拆分后的第二行第二列的小矩阵。因此,小矩阵ai,k可以理解为A矩阵拆分后的第i行和第k列的小矩阵,小矩阵bk,j可以理解为B矩阵拆分后的第k行和第j列的小矩阵,小矩阵ci,j可以理解为之前A矩阵和B矩阵相乘后的第i行和第j列的小矩阵累加结果,c`i,j为和当前结果累加后的第i行和第j列的小矩阵。
图6为本申请实施例提供的一种信号处理装置的硬件架构示意图,用于实现神经网络100的运算功能。本申请实施例中的信号处理装置可以应用到手机、平板电脑、服务器、可穿戴设备等可执行矩阵乘法运算的各类设备中。如图6所示,该信号处理装置可以包括电路本、芯片、或芯片组、或相关运行软件程序中的至少一个。包括:外部存储器602,用于存储原始权重矩阵。外部存储器602还可以存储原始输入矩阵以及其他数据。
在图6中,中央处理器(Central Processing Unit,CPU)601,用于从外部存储器602读取上述原始权重矩阵,对上述原始权重矩阵做压缩得到压缩权重矩阵,并将上述压缩权重矩阵发送至外部存储器602,其中,上述压缩权重矩阵是去除上述原始权重矩阵中的至少一个全0行得到的;还用于生成压缩信息,并将上述压缩信息发送至外部存储器602,上述压缩信息用于指示上述至少一个全0行。或者,在压缩过程中、压缩前或压缩后,任一较大的矩阵可以被拆分。例如,CPU601,用于从外部存储器602读取上述原始权重矩阵,对上述原始权重矩阵做压缩得到压缩权重矩阵,并将拆分上述压缩权重矩阵得到的矩阵发送至外部存储器602。再例如,CPU601,用于从外部存储器602读取上述原始权重矩阵,首先对上述原始权重矩阵做分拆得到权重矩阵,并进一步对权重矩阵做压缩得到一矩阵以提供至外部存储器602。
可选的,CPU601读取暂存在外部存储器602中的原始权重矩阵以进行数据压缩,当找到一整行的0值数据时便把该行数据删除,并在压缩的过程中记录被删除掉的行编号(该行编号可记录在一个k-table),当读取完原始权重矩阵后把压缩后的原始权重矩阵和行编号写回外部存储器602。可选的,在完成对上述原始权重矩阵的一部分的压缩后,先将这一部分压缩后的数据写入外部存储器602。对原始权重矩阵的数据压缩可以是将原始权重矩阵中全0行的数据进行删除,再将剩余的行进行拼接;也可以是提取出原始权重矩阵中的非全0行数据进行拼接。可选的,CPU601可以替换为其他类型处理器,如微处理器、微控制器、神经网络处理器(Neural Network Processing Unit,NPU)、或数字信号处理器(DigitalSignal Processor,DSP)。可选地,CPU601还可以被专用硬件代替,如专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等以及其他处理器,本申请实施例不作限定。因此,用于执行压缩的处理器是广义上的概念,可以是执行软件程序的处理器、纯硬件逻辑计算电路或者二者的结合。用执行软件程序的处理器是一种常见的实现方式。
在以上实施例中,CPU601,还用于控制直接内存访问控制器(Direct MemoryAccess Controller,DMAC)610把压缩后的原始权重矩阵,即压缩权重矩阵从外部存储器602搬到权重缓存器603,控制DMAC610把压缩信息(行编号)从外部存储器602搬移到数据压缩单元606,也可以控制DMAC610把未经压缩的原始输入矩阵或从上述原始输入矩阵拆分得到的至少一个输入矩阵从外部存储器602或者结果存储器(result buffer)609搬到原始数据缓存器607(raw data buffer)暂存。可选的,CPU601,还用于从外部存储器602或结果存储器609(前一次计算结果作为本次输入)读取上述原始输入矩阵,对上述原始输入矩阵做拆分得到至少一个输入矩阵,并将得到的至少一个输入矩阵写入外部存储器602。
可选的,CPU601,还用于拆分上述压缩权重矩阵,并控制DMAC610将从上述压缩权重矩阵拆分得到的第一矩阵搬到权重缓存器603。在实际应用中,CPU610拆分压缩权重矩阵可以得到至少一个权重矩阵,DMAC610可以依次将上述压缩权重矩阵拆分得到的权重矩阵搬到权重缓存器604。或者,拆分操作也可在压缩之前进行。
可选的,CPU601,还用于指示原始数据缓存器607将未经压缩的原始输入矩阵进行拆分,并将拆分得到的至少一个输入矩阵导入数据压缩单元606,或者,指示原始数据缓存器607将其存储的上述至少一个输入矩阵导入数据压缩单元606。可选地,CPU601,还用于指示数据压缩单元606对上述至少一个输入矩阵做压缩。可选的,CPU601,还用于确定是否对上述原始输入矩阵或原始权重矩阵进行拆分。
在以上实施例中,数据压缩单元606,用于根据上述压缩信息对上述至少一个输入矩阵做压缩,并将压缩后的上述至少一个输入矩阵(第二矩阵)写入输入缓存器604。矩阵乘法器605,用于从权重缓存器604获取上述第一矩阵,从输入缓存器604获取上述第二矩阵,并计算上述第二矩阵和上述第一矩阵的乘积。累加器608,用于对上述第二矩阵和上述第一矩阵的乘积做累加得到处理结果,保存在结果存储器609。
本申请实施例中的压缩系统可以包括数据压缩单元606和CPU601。图中的部件603至610可以集成在一个集成电路或芯片中,也可以进一步与CPU601集成在一起。可以理解,图中的部件603至610可以为一个运算加速器包括的各部件,该运算加速器挂载在CPU601,以提高CPU601某方面的性能。外部存储器602可以不与图中的部件603至610集成在一起,也可以不与CPU601集成在一起。当然,外部存储器602也可以与图中的部件603至610集成在一起,还可以与CPU601集成在一起。这里的外部是相对压缩系统而言的外部。当然外部存储器602不与部件601或603至610集成,而是独立存在是一种更为常见的方案。
在以上实施例中,外部存储器602可以是双倍速率同步动态随机存储器(DoubleData Rate,DDR)、或高带宽存储器(High Bandwidth Memory,HBM)等。外部存储器可以准用于该信号处理装置的硬件架构,或者是一个通用存储器,本实施例对此不限定。CPU601就像管理者,负责控制602至610。可以理解,图6中的602至610在CPU601的控制下进行工作。例如,直接内存存取(Direct Memory Access,DMA)是指一种高速的数据传输操作。DMA允许不同速度的硬件装置来沟通,而不需要依于CPU的大量中断负载,无需CPU直接控制传输,能使CPU的效率大为提高。在实现DMA传输时,是由DMAC直接掌管总线。DMAC获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMAC输出读写命令,直接控制存储器与各类I/O接口进行DMA传输。在DMAC的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。
在一些实现中,矩阵乘法器605内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路605是通用的矩阵处理器。举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。矩阵乘法器605从权重缓存器603中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。矩阵乘法器从输入缓存器604中取矩阵A数据与矩阵B进行矩阵运算,然后在累加器(accumulator)608中进行连续的加法操作,得到的矩阵的部分结果或最终结果,保存在结果存储器609。
基于图6提供的信号处理装置的硬件架构,图7为本申请实施例提供的一种信号处理方法流程图,如图7所示,该方法可包括:701、CPU601读取外部存储器602中的原始权重矩阵,对上述原始权重矩阵进行压缩得到压缩权重矩阵和压缩信息,并将上述压缩权重矩阵和上述压缩信息存储至外部存储器602。
上述压缩信息用于指示上述原始权重矩阵中的全0行。上述原始权重矩阵包含N个全0行,N为大于0的整数。可选的,上述压缩信息为一个二进制序列,该二进制序列中的每一个二进制值指示原始权重矩阵中的一行是否为全0行。举例来说,原始权重矩阵包括12行,该原始权重矩阵中只有第5行和第8行是全0行,CPU601压缩该原始权重矩阵得到的压缩信息为111101101111(二进制序列),该二进制序列中的二进制数值从左到右依次对应该原始权重矩阵的第1行至第12行,1对应的行是非全0行,0对应的行是全0行。对原始权重矩阵进行压缩的方式可以是将该原始权重矩阵中的全0行数据进行删除,再将剩余的行进行拼接;也可以是提取出该原始权重矩阵中的非全0行数据进行拼接。
图8A为本申请实施例提供的一种原始压缩权重矩阵的示意图。如图8A所示,800表示未经压缩的原始权重矩阵,810表示压缩后的原始权重矩阵;其中,每个小矩形区域对应矩阵中的一个元素,黑色实心部分为非0值的数据,白色部分为0值数据,801、802以及803表示原始权重矩阵中的全0行数据。CPU601在压缩原始权重矩阵时,可以把全0行数据删除掉,再把非全0行进行拼接,得到压缩后的原始权重矩阵(压缩权重矩阵)。另外,CPU601把删除的行号记录下来,如图8A中的K-table(压缩信息)所示,已经删除的行以0标示,没有被删除的行以1标示。行编号(K-table)可以作为压缩输入矩阵时的指引。行编号包括的二进制数值依次与输入矩阵的列相对应。具体的,行编码中对应原始权重矩阵第一行的二进制数值对应输入矩阵中的第一列,行编码中对应原始权重矩阵最后一行的二进制数值对应输入矩阵中的最后一列,依次类推。如图8B所示,行编号包括的二进制数值1对应的列为输入矩阵中待删除的列,0对应的列不为输入矩阵中待删除的列。根据原始权重矩阵的稀疏程度不同,压缩比例会有所不同。例如图8A中,原始权重矩阵为128x64矩阵,该原始权重矩阵有64行全0值的数据,压缩后的原始权重矩阵为64x64矩阵。本申请实施例中,压缩信息可以是指上述行编号。图8A、8B、8C中的二进制数值序列是指压缩信息(K-table)。
进一步地,702、CPU601控制DMAC610将从上述压缩权重矩阵拆分得到的第一矩阵从外部存储器602搬移到权重缓存器603以及控制DMAC610将上述压缩信息从外部存储器602搬移到数据压缩单元606。可选的,CPU601对上述原始权重矩阵做压缩得到压缩权重矩阵后,将拆分上述压缩权重矩阵得到的至少一个权重矩阵发送至外部存储器602。可选的,CPU601指示外部存储器602向权重缓存器604传输上述压缩权重矩阵的方式,即指示外部存储器602每次向权重缓存器604传输上述压缩权重矩阵中的哪一部分(第一矩阵)。
进一步地,703、CPU601控制DMAC610将原始输入矩阵或至少一个输入矩阵从外部存储器602或结果存储器609搬移到原始数据缓存器607。上述至少一个输入矩阵可以是上述原始输入矩阵拆分得到的。可选的,CPU601在执行703之前,CPU601从外部存储器602读取上述原始输入矩阵,对上述原始输入矩阵做拆分得到上述至少一个输入矩阵,并将得到的上述至少一个输入矩阵写入外部存储器602。可选的,CPU601在执行703之前,CPU601从结果存储器609读取上述原始输入矩阵,对上述原始输入矩阵做拆分得到至少一个输入矩阵,并将得到的上述至少一个输入矩阵写入结果存储器609。CPU601执行702和703的顺序不作限定,可以先执行702后执行703,也可以同时执行702和703,还可以先执行703后执行702。
进一步地,704、CPU601指示原始数据缓存器607将上述原始输入矩阵包括的至少一个输入矩阵导入数据压缩单元606,或者,指示原始数据缓存器607将其存储的至少一个输入矩阵导入数据压缩单元606。上述至少一个输入矩阵中任一矩阵的尺寸小于或等于矩阵乘法器可处理的最大矩阵的尺寸。可选的,CPU601在执行704后,指示数据压缩单元606对上述至少一个输入矩阵做压缩。原始数据缓存器607可以根据CPU601的指示,每次向数据压缩单元606导入上述原始输入矩阵的一部分(至少一个输入矩阵)。可以理解,上述至少一个输入矩阵为上述原始输入矩阵的一个子矩阵。
进一步地,705、数据压缩单元606根据上述压缩信息对上述至少一个输入矩阵做压缩,得到至少一个压缩后的输入矩阵。数据压缩单元606根据上述压缩信息对上述至少一个输入矩阵做压缩可以是根据上述压缩信息确定上述至少一个输入矩阵的参考列,并将上述至少一个输入矩阵的参考列拼接起来,上述至少一个输入矩阵的参考列为与上述原始权重矩阵的全0行对应的列。图8C为本申请实施例提供的一种压缩至少一个输入矩阵的示意图。如图8C所示,原始输入矩阵为12x12矩阵,该原始输入矩阵拆分为16个3x3矩阵,K-table为该原始输入矩阵对应的压缩信息。若原始输入矩阵拆分得到的两个输入矩阵在上述原始输入矩阵对应的列不同,则这两个输入矩阵对应压缩信息的不同部分。从图8C可以看出,K-table从左至右分为4个部分,每个部分对应三列。例如,输入矩阵A、输入矩阵E均对应原始输入矩阵的前三列,这两个输入矩阵均对应K-table的第一部分;输入矩阵B、输入矩阵F均对应原始输入矩阵的第4列至第6列,这两个输入矩阵均对应K-table的第二部分。数据压缩单元606可以根据压缩信息(K-table)的第一部分压缩输入矩阵A和输入矩阵E;可以根据压缩信息的第二部分压缩输入矩阵B和输入矩阵F,以便于得到各输入矩阵压缩后的矩阵。图8C中,输入矩阵A的第二列在压缩信息中对应的二进制数值为0,数据压缩单元606删除该输入矩阵A的第二列,并将该输入矩阵A的第一列和第三列拼接起来,得到压缩后的输入矩阵A。在实际应用中,数据压缩单元606可以依次对原始输入矩阵拆分得到的至少一个输入矩阵做压缩。
进一步地,706、数据压缩单元606将上述至少一个压缩后的输入矩阵写入乒乓缓存器进行拼接。例如,乒乓缓存器(ping pang buffer)包括乒缓存器(ping buffer)和乓缓存器(pang buffer)。上述乒缓存器和上述乓缓存器的存储空间大小相同,上述原始输入矩阵拆分得到的输入矩阵的大小可以与上述乒缓存器可存储的最大矩阵的大小相同。图9为本申请实施例提供的一种拼接压缩后的输入矩阵的示意图。图9中的小矩阵A、小矩阵B、小矩阵C以及小矩阵D依次为图8C中原始输入矩阵拆分得到的输入矩阵A、输入矩阵B、输入矩阵C以及输入矩阵D。如图9所示,数据压缩单元606拼接压缩后的输入矩阵的过程如下:将压缩后的输入矩阵A写入乒缓存器;先将乒缓存器的存储空间填满(即将压缩后的输入矩阵B的第一列写入乒缓存器),再将压缩后的输入矩阵B的第二列(剩余的列)写入乓缓存器;输出乒缓存器中的矩阵,即将乒缓存器中的矩阵写入输入缓存器;先将乓缓存器填满(即将压缩后的输入矩阵C的前两列写入乓缓存器),再将压缩后的输入矩阵C的第三列(剩余的列)写入乒缓存器;将乓缓存器中的矩阵写入输入缓存器;先将乒缓存器填满,即将压缩后的输入矩阵D写入乒缓存器;将乒缓存器中的矩阵写入输入缓存器。图9中,乒缓存器和乓缓存器可存储的最大矩阵为3x3矩阵,数据压缩单元606在将乒缓存器和乓缓存器中的一个的存储空间填满后,将存储空间填满的存储器中的矩阵写入输入缓存器604。乒缓存器和乓缓存器中的一个的存储空间填满表示乒缓存器或乓缓存器中的数据量已经满足矩阵乘法器的要求。也就是说,数据压缩单元拼接得到的输入矩阵满足矩阵乘法器的要求。上述过程可概括如下:
进一步地,707、数据压缩单元606判断上述乒乓缓存器是否已存储一个JxK的矩阵。若是,执行708;若否,执行704。J和K均为大于0的整数。JxK矩阵可以为乒缓存器可存储的最大矩阵。上述数据压缩单元606判断上述乒乓缓存器是否已存储一个JxK的矩阵可以是判断乒缓存器的存储空间或乓缓存器的存储空间是否已填满。
进一步地,708、数据压缩单元606将乒乓缓存器存储的JxK的矩阵写入输入缓存器604。709、矩阵乘法器605分别从输入缓存器604和权重缓存器603获取矩阵,并进行矩阵相乘。矩阵乘法器605从权重缓存器603获取的矩阵是上述压缩权重矩阵拆分得到的第一矩阵,从输入缓存器604获取的矩阵是对至少两个压缩后的输入矩阵做拼接得到的矩阵(第二矩阵)。710、累加器608对矩阵乘法器605的矩阵相乘的乘积做累加,得到处理结果。
进一步地,711、CPU601判断矩阵乘法器计算的是否为原始输入矩阵拆分得到的最后一个输入矩阵。若是,执行712,若否,执行704。712、停止执行704。本申请实施例中,信号处理装置通过对至少一个输入矩阵和至少一个权重矩阵做压缩,可以减少矩阵乘法器执行矩阵相乘运算的次数,提高计算效率。
图7的方法中,矩阵乘法器605计算的是由原始输入矩阵拆分得到的至少一个输入矩阵拼接的矩阵以及压缩后的原始权重矩阵拆分得到的权重矩阵的乘积。可以理解,在图7的方法中,需要对压缩后的原始权重矩阵进行拆分以及对原始输入矩阵进行拆分。在原始权重矩阵的尺寸和原始输入矩阵的尺寸均小于矩阵乘法器可处理的最大矩阵的情况下,可以不对原始权重矩阵和原始输入矩阵进行拆分,而是直接计算压缩后的原始输入矩阵和压缩后的原始权重矩阵的乘积。基于图6提供的信号处理装置的硬件架构,图10为本申请实施例提供的另一种信号处理方法,如图10所示,该方法可包括:1001、CPU601读取外部存储器602中的权重矩阵,对上述权重矩阵进行压缩得到第一矩阵和压缩信息,并将上述第一矩阵和上述压缩信息存储至外部存储器602。上述对上述权重矩阵进行压缩得到第一矩阵和压缩信息可以是检测上述权重矩阵中的全0行的位置信息,将上述权重矩阵中的非全0行拼接在一起得到上述第一矩阵,根据上述位置信息得到上述压缩信息。上述压缩信息用于指示上述权重矩阵中的全0行。
进一步地,1002、CPU601控制DMAC610将上述第一矩阵从外部存储器602搬移到权重缓存器603以及控制DMAC610将上述压缩信息从外部存储器602搬移到数据压缩单元606。1003、CPU601控制DMAC610将输入矩阵从外部存储器602或结果存储器609搬移到原始数据缓存器607。1004、CPU601指示原始数据缓存器607将输入矩阵导入数据压缩单元606。1005、数据压缩单元606根据上述压缩信息对上述输入矩阵做压缩得到第二矩阵。
上述权重矩阵包含N个全0行,N为大于0的整数。可选的,数据压缩单元606根据上述压缩信息将上述输入矩阵的目标列进行拼接得到第二矩阵,上述目标列为上述输入矩阵中除上述N个全0行对应的N列之外的列,其中,上述权重矩阵的第F行对应上述输入矩阵的第F列,F为大于0的整数。可选的,数据压缩单元606根据上述压缩信息去除上述输入矩阵中与上述权重矩阵的全0行对应的列得到上述第二矩阵。
进一步地,1006、数据压缩单元606将上述第二矩阵导入输入缓存器。1007、CPU601指示矩阵乘法器605从上述权重缓存器604获取上述第一矩阵以及从上述输入缓存器603获取上述第二矩阵。1008、CPU601指示矩阵乘法器605计算上述第二矩阵和上述第一矩阵的乘积。本申请实施例中,信号处理装置可以通过对权重矩阵和输入矩阵做压缩,减少矩阵乘法器处理的矩阵的大小,提高计算效率。
图11为本申请实施例提供的另一种信号处理装置的硬件架构示意图。本申请实施例中的信号处理装置可以应用到手机、平板电脑、服务器、可穿戴设备等可执行矩阵乘法运算的设备中。如图11所示,该信号处理装置可以包括:外部存储器1102,用于存储原始输入矩阵。外部存储器1102还可以存储原始权重矩阵以及其他数据。
CPU1101,用于从外部存储器1102读取上述原始输入矩阵,对上述原始输入矩阵做压缩得到压缩输入矩阵,并将上述压缩输入矩阵发送至外部存储器1102,其中,上述压缩输入矩阵是去除上述原始输入矩阵中的至少一个全0列得到的;还用于生成压缩信息,并将上述压缩信息发送至外部存储器1102,上述压缩信息用于指示上述至少一个全0列。或者,CPU601,还用于拆分上述压缩输入矩阵,将拆分上述压缩输入矩阵得到的至少一个输入矩阵发送至外部存储器602。
可选的,CPU1101读取暂存在外部存储器1102中的原始输入矩阵以进行数据压缩,当找到一整列的0值数据时便把该列数据删除,并在压缩的过程中记录被删除掉的列编号(该列编号可记录在一个k-table),当读取完原始输入矩阵后把压缩后的原始输入矩阵和列编号写回外部存储器1102。可选的,在完成对原始输入矩阵的一部分的压缩后,先将这一部分压缩后的数据写入外部存储器1102。对原始输入矩阵的压缩可以是将原始输入矩阵中全0列的数据进行删除,再将剩余的列进行拼接;也可以是提取出原始输入矩阵中的非全0列数据进行拼接。与之前实施例的描述类似。
CPU1101,还用于控制DMAC1110把压缩后的原始输入矩阵(压缩输入矩阵)从外部存储器1102搬到输入缓存器1103,控制DMAC1110把压缩信息(列编号)从外部存储器1102搬移到数据压缩单元1106,同时控制DMAC1110把未经压缩的原始权重矩阵或原始权重矩阵拆分得到的至少一个权重矩阵从外部存储器1102搬到原始数据缓存器1107(raw databuffer)暂存。
可选的,CPU1101,还用于拆分上述压缩输入矩阵,并控制DMAC1110将从上述压缩输入矩阵拆分得到的第二矩阵搬到输入缓存器1103。在实际应用中,CPU1110拆分压缩输入矩阵可以得到至少一个输入矩阵,DMAC1110可以依次将上述压缩输入矩阵拆分得到的输入矩阵搬到输入缓存器1103。
可选的,CPU1101,还用于指示原始数据缓存器1107将未经压缩的原始权重矩阵进行拆分,并将拆分得到的至少一个权重矩阵导入数据压缩单元1106,或者,指示原始数据缓存器1107将其存储的至少一个权重矩阵导入数据压缩单元1106。可选的,数据压缩单元1106从原始数据缓存器1107获取其存储的至少一个权重矩阵。进一步地,CPU1101,还用于指示数据压缩单元1106对上述至少一个权重矩阵做压缩。可选的,CPU1101,还用于确定是否对上述原始输入矩阵或原始权重矩阵进行拆分。
在上述实施例中,数据压缩单元1106,用于根据上述压缩信息对上述至少一个权重矩阵做压缩,并将压缩后的上述至少一个权重矩阵(第一矩阵)写入权重缓存器1104。矩阵乘法器1105,用于从权重缓存器1104获取上述第一矩阵,从输入缓存器1103获取上述第二矩阵,并计算上述第二矩阵和上述第一矩阵的乘积。累加器1108,用于对上述第二矩阵和上述第一矩阵的乘积做累加得到处理结果,保存在结果存储器1109。
本申请实施例中的压缩系统可以包括数据压缩单元1106和CPU1101。图中的1103至1110可以集成在一个集成电路或芯片中,也可以与CPU集成在一起。可以理解,图中的1103至1110可以为一个运算加速器包括的各部件,该运算加速器挂载在CPU1101,以提高CPU1101某方面的性能。
图11中的信号处理装置与图6中的信号处理装置的不同之处主要包括以下几点:(1)、输入缓存器1103连接DMAC1110,权重缓存器1104连接数据压缩单元;(2)、CPU1101对原始输入矩阵进行压缩;(3)、数据压缩单元对至少一个权重矩阵做压缩。基于图11提供的信号处理装置的硬件架构,图12为本申请实施例提供的一种信号处理方法,如图12所示,该方法可包括:1201、CPU1101读取外部存储器1102中的原始输入矩阵,对上述原始输入矩阵做压缩得到压缩输入矩阵和压缩信息,并将上述压缩输入矩阵和上述压缩信息存储至外部存储器1102。
上述压缩信息用于指示上述原始输入矩阵中的全0列。上述原始输入矩阵包含N个全0列,N为大于0的整数。可选的,上述压缩信息为一个二进制序列,该二进制序列中的每一个二进制值指示原始输入矩阵中的一列是否为全0列。举例来说,原始输入矩阵包括12列,该原始输入矩阵中只有第5列和第8列是全0列,CPU1101压缩该原始输入矩阵得到的压缩信息为111101101111(二进制序列),该二进制序列中的二进制数值从左到右依次对应输入矩阵的第1列至第12列,1对应的列是非全0列,0对应的列时全0列。对原始输入矩阵进行压缩的方式可以是将该原始输入矩阵中的全0列数据进行删除,再将剩余的列进行拼接;也可以是提取出该原始输入矩阵中的非全0列数据进行拼接。
进一步地,1202、CPU1101控制DMAC1110将从上述压缩输入矩阵拆分得到的第二矩阵从外部存储器1102搬移到输入缓存器1103以及控制DMAC1110将上述压缩信息从外部存储器1102搬移到数据压缩单元1106。可选的,CPU1101对上述原始输入矩阵做压缩得到压缩输入矩阵后,将拆分上述压缩输入矩阵得到的至少一个输入矩阵发送至外部存储器602。
进一步地,1203、CPU1101控制DMAC1110将原始权重矩阵或原始权重矩阵拆分得到的至少一个权重矩阵从外部存储器1102搬移到原始数据缓存器1107。可选的,CPU1101在执行1203之前,CPU1101从外部存储器1102读取上述原始权重矩阵,对上述原始权重矩阵做拆分得到上述至少一个权重矩阵,并将得到的上述至少一个权重矩阵写入外部存储器1102。可选的,CPU1101在执行1203之前,CPU1101从结果存储器1109读取上述原始权重矩阵,对上述原始权重矩阵做拆分得到至少一个权重矩阵,并将得到的上述至少一个权重矩阵写入结果存储器609。CPU执行1202和1203的顺序不作限定,可以先执行1202后执行1203,也可以同时执行1202和1203,还可以先执行1203后执行1202。
进一步地,1204、CPU1101指示原始数据缓存器1107将原始权重矩阵包括的至少一个权重矩阵导入数据压缩单元1106,或者,指示原始数据缓存器1107将其存储至少一个权重矩阵导入数据压缩单元1106。上述至少一个权重矩阵中任一权重矩阵的尺寸小于或等于矩阵乘法器可处理的最大矩阵的尺寸。可选的,CPU1101在执行1204后,指示数据压缩单元1106压缩上述至少一个权重矩阵。
进一步地,1205、数据压缩单元1106根据上述压缩信息对上述至少一个权重矩阵做压缩,得到至少一个压缩后的权重矩阵。数据压缩单元1106根据上述压缩信息对上述至少一个权重矩阵做压缩可以是根据上述压缩信息确定上述至少一个权重矩阵的参考行,并将上述至少一个权重矩阵的参考行拼接起来,上述至少一个权重矩阵的参考行是与上述原始输入矩阵的全0列对应的行。图13为本申请实施例提供的一种压缩权重矩阵的示意图。如图13所示,原始权重矩阵为12x12矩阵,该原始权重矩阵拆分为16个3x3矩阵,K-table为该原始权重矩阵对应的压缩信息。若原始权重矩阵拆分得到的两个权重矩阵在上述权重矩阵对应的行不同,则这两个权重矩阵对应压缩信息的不同部分。从图13可以看出,K-table从上至下分为4个部分,每个部分对应三行。例如,权重矩阵A、权重矩阵B均对应原始权重矩阵的前三行,这两个权重矩阵均对应K-table的第一部分;权重矩阵E、权重矩阵F均对应原始权重矩阵的第4行至第6行,这两个权重矩阵均对应K-table的第二部分。数据压缩单元1106可以根据压缩信息(K-table)的第一部分压缩权重矩阵A和权重矩阵B;可以根据压缩信息的第二部分压缩权重矩阵E和权重矩阵F,以得到压缩后的权重矩阵。图13中,权重矩阵A的第二行在压缩信息中对应的二进制数值为0,数据压缩单元1106删除该权重矩阵A的第二行,并将该权重矩阵A的第一行和第三行拼接起来,得到压缩后的权重矩阵A。在实际应用中,数据压缩单元1106可以依次对原始权重矩阵拆分得到的至少一个权重矩阵做压缩。
进一步地,1206、数据压缩单元1106将上述至少一个压缩后的权重矩阵写入乒乓缓存器进行拼接。例如,乒乓缓存器包括乒缓存器和乓缓存器。上述乒缓存器和上述乓缓存器的存储空间大小相同,上述原始权重矩阵拆分得到的各权重矩阵的大小可以与上述乒缓存器可存储的最大矩阵的大小相同。具体的拼接压缩后的权重矩阵的方法与图9中的方法类似,这里不再详述。
进一步地,1207、数据压缩单元1106判断上述乒乓缓存器是否已存储一个JxK的矩阵。若是,执行1208;若否,执行1204。J和K均为大于0的整数。JxK矩阵可以为乒缓存器可存储的最大矩阵。上述数据压缩单元1106判断上述乒乓缓存器是否已存储一个JxK的矩阵可以是判断乒缓存器的存储空间或乓缓存器的存储空间是否已填满。
进一步地,1208、数据压缩单元1106将乒乓缓存器存储的JxK的矩阵写入权重缓存器1104。1209、矩阵乘法器1105分别从输入缓存器1103和权重缓存器1104获取矩阵,并进行矩阵相乘。矩阵乘法器1105从权重缓存器1104获取的矩阵是对至少两个压缩后的权重矩阵做拼接得到的矩阵(第一矩阵),从输入缓存器1103获取的矩阵是上述压缩输入矩阵拆分得到的第二矩阵。1210、累加器1108对矩阵乘法器1105的矩阵相乘的乘积做累加,得到处理结果。
进一步地,1211、CPU1101判断矩阵乘法器计算的是否为原始权重矩阵拆分得到的最后一个权重矩阵。若是,执行1212,若否,执行1204。1212、停止执行1204。本申请实施例中,信号处理装置通过对原始权重矩阵拆分得到的权重矩阵的参考行进行拼接以及对原始输入矩阵做压缩,可以减少矩阵乘法器执行矩阵相乘运算的次数,提高计算效率。
在权重矩阵的尺寸和输入矩阵的尺寸均小于矩阵乘法器可处理的最大矩阵的情况下,可以不对权重矩阵和输入矩阵进行拆分,而是直接计算压缩后的输入矩阵和压缩后的权重矩阵的乘积。基于图11提供的信号处理装置的硬件架构,图14为本申请实施例提供的另一种信号处理方法流程图,如图11所示,该方法可包括:1401、CPU1101读取外部存储器1102中的输入矩阵,对上述输入矩阵进行压缩得到第二矩阵和压缩信息,并将上述第二矩阵和上述压缩信息存储至外部存储器1102。上述对上述输入矩阵进行压缩得到第二矩阵和压缩信息可以是检测上述输入矩阵中的全0列的位置信息,将上述输入矩阵中的非全0列拼接在一起得到上述第二矩阵,根据上述位置信息得到上述压缩信息。上述压缩信息用于指示上述输入矩阵中的全0列。
进一步地,1402、CPU1101控制DMAC1110将上述第二矩阵从外部存储器1102搬移到输入缓存器1103以及控制DMAC1110将上述压缩信息从外部存储器1102搬移到数据压缩单元1106。1403、CPU1101控制DMAC1110将权重矩阵从外部存储器1102搬移到原始数据缓存器1107。1404、CPU1101指示原始数据缓存器1107将上述权重矩阵导入数据压缩单元1106。1405、数据压缩单元1106根据上述压缩信息对上述权重矩阵做压缩得到第一矩阵。1406、数据压缩单元1106将上述第一矩阵导入权重缓存器。1407、CPU1101指示矩阵乘法器1105从上述输入缓存器1103获取上述第二矩阵以及从上述权重缓存器1104获取上述第一矩阵。1408、CPU1101指示矩阵乘法器1105计算上述第二矩阵和上述第一矩阵的乘积。
本申请实施例中,信号处理装置通过对输入矩阵和权重矩阵做压缩,可以减少矩阵乘法器处理的矩阵的大小,提高计算效率。图7中的信号处理方法是将原始输入矩阵和原始权重矩阵的相乘转换为压缩后的原始权重矩阵拆分得到的权重矩阵和拆分原始输入矩阵得到的多个权重矩阵拼接的矩阵的相乘。图9中的信号处理方法是将原始输入矩阵和原始权重矩阵的相乘转换为压缩后的原始输入矩阵拆分得到的输入矩阵和拆分原始权重矩阵得到的多个权重矩阵拼接的矩阵的相乘。
可以理解,采用图7和图12中的方法能够计算输入矩阵和权重矩阵乘积的前提是拼接得到的子矩阵的乘积与未拼接的子矩阵的乘积相同。图15为本申请实施例提供的一种子矩阵相乘的示意图。如图15所示,A0、A1为输入矩阵拆分得到的子矩阵,B0、B2为权重矩阵拆分得到的子矩阵,B0的第三行为全0行,B2的第一行和第二行为全0行。图16为本申请实施例提供的一种拼接的子矩阵相乘的示意图。图16中的A0、A1、B0、B2以及C0分别与图15中的A0、A1、B0、B2以及C0相同。如图16所示,A’0为A0的前两列和A1的第三列拼接得到的子矩阵,B’0为B0的前两行和B2的第三行拼接得到的子矩阵。对比图15和图16可以看出,图15中的C0的各元素与图16中的C0的各元素相同。因此,拼接得到的子矩阵的乘积与未拼接的子矩阵的乘积相同。从上述实施例中可以看出,可以将多个矩阵中的至少一个全0行或全0列去除以得到压缩后的结果,即多个矩阵压缩为一个矩阵。或者,也可以仅对一个矩阵做压缩得到压缩后的一个矩阵,本实施例对此不作限定。
在实际应用中,信号处理装置可以根据实际需要采用图7、图10、图12以及图14中的任一种方法。若信号处理装置采用图6中的架构,则可以执行图7和图10中的方法。若信号处理装置采用图11中的架构,则可以执行图12和图14中的方法。信号处理装置中的CPU可以确定是否对原始权重矩阵或原始输入矩阵进行拆分。若信号处理装置采用图6中的架构且CPU确定对原始权重矩阵或原始输入矩阵进行拆分,则采用图7中的方法。若信号处理装置采用图6中的架构且CPU确定不对原始权重矩阵或原始输入矩阵进行拆分,则采用图10中的方法。可选的,信号处理装置中的CPU预置有矩阵乘法器可处理的最大矩阵的尺寸,若该CPU确定原始权重矩阵和原始输入矩阵的尺寸均小于该最大矩阵的尺寸,则确定不对原始权重矩阵和原始输入矩阵进行拆分;若该CPU确定原始权重矩阵或原始输入矩阵的尺寸大于该最大矩阵的尺寸,则确定对原始权重矩阵和原始输入矩阵进行拆分。
以上实施例中的方案主要介绍了实现矩阵压缩和信号处理的方法和相应的装置,具体可参考之前实施例对应的装置和方法。实际上相关方法也可以通过硬件、软件或软硬件结合的方式来实现。如果相关方法以软件方式实现,其可以被认为主要以软件程序或存储该软件的存储介质的方式存在。软件程序可被视为是一种计算程序产品。
本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括软件程序指令,上述程序指令被处理器执行时实现:对至少一个权重矩阵做压缩得到第一矩阵,并对至少一个输入矩阵做压缩得到第二矩阵;其中,上述输入矩阵包括多个计算机可处理的信号,上述权重矩阵包括多个权重系数;压缩后的上述第一矩阵和上述第二矩阵满足如下限定:上述第一矩阵是去除上述至少一个权重矩阵中的至少一个全0行得到的,上述第二矩阵是去除上述至少一个输入矩阵中与上述至少一个全0行对应的至少一个列得到的;或者,上述第二矩阵是去除上述至少一个输入矩阵中的至少一个全0列得到的,上述第一矩阵是去除上述至少一个权重矩阵中与上述至少一个全0列对应的至少一个行得到的;计算上述第二矩阵和上述第一矩阵的乘积。该程序指令被处理器执行时实现的方法流程的细节可以参照之前实施例提到的方法流程。所述多个计算机可处理的信号包括:语音信号、文本信号或图像信号中的至少一项。在一个可选的实现方式中,所述方法还包括:生成压缩信息,所述压缩信息用于指示所述至少一个全0行;所述获取第二矩阵包括:根据所述压缩信息对所述至少一个输入矩阵做压缩得到所述第二矩阵。在一个可选的实现方式中,所述方法还包括:生成压缩信息,所述压缩信息用于指示所述至少一个全0列;所述获取第一矩阵包括:根据所述压缩信息对所述至少一个权重矩阵做压缩得到所述第一矩阵。
在一个可选的实现方式中,所述计算所述第二矩阵和所述第一矩阵的乘积之后,所述方法还包括:对所述第二矩阵和所述第一矩阵的乘积做累加得到处理结果。在一个可选的实现方式中,所述对至少一个权重矩阵做压缩得到第一矩阵,并对至少一个输入矩阵做压缩得到第二矩阵之前,所述方法还包括如下至少一项:对原始权重矩阵做拆分得到所述至少一个权重矩阵或者对原始输入矩阵做拆分得到所述至少一个输入矩阵。
进一步地,本申请实施例提供了一种设备,例如手机、平板电脑、服务器、可穿戴设备等可执行矩阵乘法运算的各类设备。该设备包括存储器和处理器。存储器作为计算机可读存储介质,用于保存程序指令,处理器用于执行所述程序指令以实现以上提到的方法流程。
图17为本申请实施例提供的另一种信号处理装置,可置于所述设备中,该信号处理装置包括:压缩单元1701,用于对至少一个权重矩阵做压缩得到第一矩阵,并对至少一个输入矩阵做压缩得到第二矩阵;其中,上述输入矩阵包括多个计算机可处理的信号,上述权重矩阵包括多个权重系数;压缩后的上述第一矩阵和上述第二矩阵满足如下限定:上述第一矩阵是去除上述至少一个权重矩阵中的至少一个全0行得到的,上述第二矩阵是去除上述至少一个输入矩阵中与上述至少一个全0行对应的至少一个列得到的;或者,上述第二矩阵是去除上述至少一个输入矩阵中的至少一个全0列得到的,上述第一矩阵是去除上述至少一个权重矩阵中与上述至少一个全0列对应的至少一个行得到的;计算单元1702,用于计算上述第二矩阵和上述第一矩阵的乘积。进一步地,所述多个计算机可处理的信号包括:语音信号、文本信号或图像信号中的至少一项。
可选地,所述压缩单元1701,还用于:生成压缩信息,所述压缩信息用于指示所述至少一个全0行;以及根据所述压缩信息对所述至少一个输入矩阵做压缩得到所述第二矩阵。可选地,所述压缩单元1701,还用于:生成压缩信息,所述压缩信息用于指示所述至少一个全0列;以及根据所述压缩信息对所述至少一个权重矩阵做压缩得到所述第一矩阵。
进一步地,所述信号处理装置还包括累加单元1703,所述累加单元1703,用于对所述第二矩阵和所述第一矩阵的乘积做累加得到处理结果。进一步地,信号处理装置还包括拆分单元1704,所述拆分单元1704,用于对原始权重矩阵做拆分得到所述至少一个权重矩阵;以及对原始输入矩阵做拆分得到所述至少一个输入矩阵。
该实施例中的压缩单元1701、计算单元1702、累加单元1703以及拆分单元1704可以由软件、硬件或软硬件结合实现。由此可见,上述设备给或装置实施例中涉及的处理过程,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在信号处理装置上加载或执行上述计算机程序指令时,全部或部分地产生按照本发明实施例上述的流程或功能。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state Drive,SSD)。
以上的实施例中的一种实现方式是直接压缩至少一个权重矩阵得到第一矩阵。但是作为一个可替换的实现方式,第一矩阵可以是预设的。因为第一矩阵作为一种权重参数矩阵通常不会改变,不需要每次都重新计算该第一矩阵。因此上述第一矩阵以及上述压缩信息可以是预设在需要执行矩阵乘法运算的设备中。例如,上述压缩系统从其他器件或者上述信号处理装置中的某个存储器,例如图6中的外部存储器602中直接获取预设的第一矩阵。或者,可选地,所述第一矩阵可以以硬件形式预设在压缩系统中,本实施例对于第一矩阵在整个系统或装置内的具体预设的方式不做限制。这样,不需要在每次执行的时候都重新计算第一矩阵,而是根据预设的第一矩阵和压缩信息直接进行输入矩阵的压缩得到对应于第一矩阵的第二矩阵,对于具体的压缩过程可参照之前实施例的描述,此处不做赘述。
在以上实施例中,上述第一矩阵可以是上述压缩系统对至少一个权重矩阵做压缩得到的矩阵,还可以是上述压缩后的权重矩阵做进一步拆分得到的矩阵。可以理解,上述压缩系统可以通过压缩矩阵的方式直接得到上述第一矩阵,也可以通过先拆分矩阵再压缩拆分得到的矩阵的方式得到上述第一矩阵,还可以通过先压缩矩阵在拆分压缩后的矩阵的方式得到上述第一矩阵,本申请不作限定得到第一矩阵的方式。关于在压缩操作前后,相关矩阵是否经过一次或多次拆分,本实施例不做限定。相关拆分操作可以使得得到的矩阵大小满足预设的规格,有利于执行运算。另外,上述压缩系统可以在离线状态(未启动矩阵乘法运算任务)下对至少一个权重矩阵做压缩得到上述第一矩阵。例如,可以在设备出厂之前或制造和开发过程中,离线压缩权重矩阵以得到第一矩阵并预设在设备中,例如存储器内部。因此,在后续在线操作,即用户需要执行任务的时候,以上预设的第一矩阵可以被使用,以达到本实施例的效果。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种信号处理装置,其特征在于,包括:
压缩系统,用于获取压缩后的第一矩阵,和对至少一个输入矩阵做压缩得到第二矩阵;所述第一矩阵和所述第二矩阵满足如下限定:所述第一矩阵是去除至少一个权重矩阵中的至少一个全0行得到的,所述第二矩阵是去除所述至少一个输入矩阵中与所述至少一个全0行对应的至少一个列得到的;所述输入矩阵包括多个计算机可处理的信号,所述权重矩阵包括多个权重系数;
矩阵乘法器,用于从所述压缩系统获取所述第一矩阵和所述第二矩阵,计算所述第二矩阵和所述第一矩阵的乘积;
所述压缩系统包括:处理器和数据压缩单元;
所述处理器,用于对所述至少一个权重矩阵做压缩得到所述第一矩阵;和/或
所述数据压缩单元,用于对所述至少一个输入矩阵做压缩得到所述第二矩阵;
所述处理器,还用于生成压缩信息,所述压缩信息用于指示所述至少一个全0行;所述数据压缩单元,还用于根据所述压缩信息对所述至少一个输入矩阵做压缩得到所述第二矩阵;
所述信号处理装置还包括:直接内存访问控制器DMAC与权重缓存器,所述DMAC耦合至所述权重缓存器和外部存储器;所述处理器,还用于将所述第一矩阵和所述压缩信息存入所述外部存储器;所述DMAC,用于将所述第一矩阵从所述外部存储器搬移到所述权重缓存器,以及用于将所述压缩信息从所述外部存储器搬移到所述数据压缩单元;所述矩阵乘法器还用于从所述权重缓存器获取所述第一矩阵。
2.根据权利要求1所述的信号处理装置,所述信号处理装置还包括原始数据缓存器和输入缓存器;所述DMAC还用于将所述至少一个输入矩阵从所述外部存储器搬移到所述原始数据缓存器;所述数据压缩单元还用于从所述原始数据缓存器获取所述至少一个输入矩阵,并在对所述至少一个输入矩阵做压缩得到所述第二矩阵后将所述第二矩阵存入所述输入缓存器;所述矩阵乘法器还用于从所述输入缓存器获取所述第二矩阵。
3.根据权利要求1或2所述的信号处理装置,所述信号处理装置还包括累加单元,所述累加单元,用于对所述第二矩阵和所述第一矩阵的乘积做累加得到处理结果。
4.根据权利要求1或2所述的信号处理装置,所述处理器,还用于执行以下至少一项:
对原始权重矩阵做拆分得到所述至少一个权重矩阵;或
对原始输入矩阵做拆分得到所述至少一个输入矩阵。
5.根据权利要求1或2所述的信号处理装置,所述多个计算机可处理的信号包括:语音信号、文本信号或图像信号中的至少一项。
6.一种信号处理装置,其特征在于,包括:
压缩系统,用于获取压缩后的第一矩阵,和对至少一个输入矩阵做压缩得到第二矩阵;所述第一矩阵和所述第二矩阵满足如下限定:所述第二矩阵是去除所述至少一个输入矩阵中的至少一个全0列得到的,所述第一矩阵是去除至少一个权重矩阵中与所述至少一个全0列对应的至少一个行得到的;所述输入矩阵包括多个计算机可处理的信号,所述权重矩阵包括多个权重系数;
矩阵乘法器,用于从所述压缩系统获取所述第一矩阵和所述第二矩阵,计算所述第二矩阵和所述第一矩阵的乘积;
所述压缩系统包括:处理器和数据压缩单元;
所述处理器,用于对所述至少一个输入矩阵做压缩得到所述第二矩阵;和/或
所述数据压缩单元,用于对所述至少一个权重矩阵做压缩得到所述第一矩阵;
所述处理器,还用于生成压缩信息,所述压缩信息用于指示所述至少一个全0列;所述数据压缩单元,还用于根据所述压缩信息对所述至少一个权重矩阵做压缩得到所述第一矩阵;所述信号处理装置还包括:直接内存访问控制器DMAC与输入缓存器,所述DMAC耦合至所述输入缓存器和外部存储器;所述处理器,还用于将所述第二矩阵和所述压缩信息存入所述外部存储器;所述DMAC,用于将所述第二矩阵从所述外部存储器搬移到所述输入缓存器,以及用于将所述压缩信息从所述外部存储器搬移到所述数据压缩单元;所述矩阵乘法器还用于从所述输入缓存器获取所述第二矩阵。
7.根据权利要求6所述的信号处理装置,所述信号处理装置还包括原始数据缓存器和权重缓存器;所述DMAC还用于将所述至少一个权重矩阵从所述外部存储器搬移到所述原始数据缓存器;所述数据压缩单元还用于从所述原始数据缓存器获取所述至少一个权重矩阵,并在对所述至少一个权重矩阵做压缩得到所述第一矩阵后将所述第一矩阵存入所述权重缓存器;所述矩阵乘法器还用于从所述权重缓存器获取所述第一矩阵。
8.根据权利要求6或7所述的信号处理装置,所述信号处理装置还包括累加单元,所述累加单元,用于对所述第二矩阵和所述第一矩阵的乘积做累加得到处理结果。
9.根据权利要求6或7所述的信号处理装置,所述处理器,还用于执行以下至少一项:
对原始权重矩阵做拆分得到所述至少一个权重矩阵;或
对原始输入矩阵做拆分得到所述至少一个输入矩阵。
10.根据权利要求6或7所述的信号处理装置,所述多个计算机可处理的信号包括:语音信号、文本信号或图像信号中的至少一项。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/109228 WO2020062312A1 (zh) | 2018-09-30 | 2018-09-30 | 信号处理装置和信号处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112219210A CN112219210A (zh) | 2021-01-12 |
CN112219210B true CN112219210B (zh) | 2024-03-29 |
Family
ID=69949558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880094243.2A Active CN112219210B (zh) | 2018-09-30 | 2018-09-30 | 信号处理装置和信号处理方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112219210B (zh) |
WO (1) | WO2020062312A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11562046B2 (en) * | 2018-11-26 | 2023-01-24 | Samsung Electronics Co., Ltd. | Neural network processor using dyadic weight matrix and operation method thereof |
US11171115B2 (en) | 2019-03-18 | 2021-11-09 | Kepler Computing Inc. | Artificial intelligence processor with three-dimensional stacked memory |
US11836102B1 (en) * | 2019-03-20 | 2023-12-05 | Kepler Computing Inc. | Low latency and high bandwidth artificial intelligence processor |
US11152343B1 (en) | 2019-05-31 | 2021-10-19 | Kepler Computing, Inc. | 3D integrated ultra high-bandwidth multi-stacked memory |
US11844223B1 (en) | 2019-05-31 | 2023-12-12 | Kepler Computing Inc. | Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging |
US11791233B1 (en) | 2021-08-06 | 2023-10-17 | Kepler Computing Inc. | Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541814A (zh) * | 2010-12-27 | 2012-07-04 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
CN107944555A (zh) * | 2017-12-07 | 2018-04-20 | 广州华多网络科技有限公司 | 神经网络压缩和加速的方法、存储设备和终端 |
CN108268947A (zh) * | 2016-12-30 | 2018-07-10 | 富士通株式会社 | 用于提高神经网络的处理速度的装置和方法及其应用 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317482B2 (en) * | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
US9697176B2 (en) * | 2014-11-14 | 2017-07-04 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
JP2017130036A (ja) * | 2016-01-20 | 2017-07-27 | 富士通株式会社 | 情報処理装置、演算方法、および演算プログラム |
WO2017129325A1 (en) * | 2016-01-29 | 2017-08-03 | Fotonation Limited | A convolutional neural network |
CN107239823A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
CN107239825B (zh) * | 2016-08-22 | 2021-04-09 | 赛灵思电子科技(北京)有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN107590533B (zh) * | 2017-08-29 | 2020-07-31 | 中国科学院计算技术研究所 | 一种用于深度神经网络的压缩装置 |
-
2018
- 2018-09-30 WO PCT/CN2018/109228 patent/WO2020062312A1/zh active Application Filing
- 2018-09-30 CN CN201880094243.2A patent/CN112219210B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541814A (zh) * | 2010-12-27 | 2012-07-04 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
CN108268947A (zh) * | 2016-12-30 | 2018-07-10 | 富士通株式会社 | 用于提高神经网络的处理速度的装置和方法及其应用 |
CN107944555A (zh) * | 2017-12-07 | 2018-04-20 | 广州华多网络科技有限公司 | 神经网络压缩和加速的方法、存储设备和终端 |
Also Published As
Publication number | Publication date |
---|---|
CN112219210A (zh) | 2021-01-12 |
WO2020062312A1 (zh) | 2020-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112219210B (zh) | 信号处理装置和信号处理方法 | |
US11429852B2 (en) | Convolution acceleration and computing processing method and apparatus, electronic device, and storage medium | |
CN110582785B (zh) | 配置用于执行层描述符列表的具有功率效率的深度神经网络模块 | |
CN110263909B (zh) | 图像识别方法及装置 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN111382867B (zh) | 神经网络压缩的方法、数据处理的方法及相关装置 | |
CN109726822B (zh) | 运算方法、装置及相关产品 | |
US11636712B2 (en) | Dynamic gesture recognition method, device and computer-readable storage medium | |
CN112703511B (zh) | 运算加速器和数据处理方法 | |
WO2019216376A1 (ja) | 演算処理装置 | |
WO2022151779A1 (zh) | 卷积运算的实现方法、数据处理方法及装置 | |
WO2019128248A1 (zh) | 一种信号处理方法及装置 | |
WO2021147276A1 (zh) | 数据处理方法、装置及芯片、电子设备、存储介质 | |
JP2017010255A (ja) | 画像認識装置および画像認識方法 | |
WO2021081854A1 (zh) | 一种卷积运算电路和卷积运算方法 | |
CN108154522B (zh) | 目标追踪系统 | |
CN112784951B (zh) | Winograd卷积运算方法及相关产品 | |
CN114494006A (zh) | 图像重建模型的训练方法、装置、电子设备及存储介质 | |
CN111178513A (zh) | 神经网络的卷积实现方法、卷积实现装置及终端设备 | |
CN111083479A (zh) | 一种视频帧预测方法、装置及终端设备 | |
CN112580772B (zh) | 卷积神经网络的压缩方法及装置 | |
CN111788567A (zh) | 一种数据处理设备以及一种数据处理方法 | |
WO2021179117A1 (zh) | 神经网络通道数搜索方法和装置 | |
CN113055666B (zh) | 一种视频质量评估方法及装置 | |
CN112712461B (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 |