一种卷积神经网络的运算方法、装置和服务器与流程

文档序号:14594623发布日期:2018-06-05 04:00阅读:181来源:国知局

本发明涉及数据处理领域,尤其涉及一种卷积神经网络的运算方法、装置和服务器。



背景技术:

CNN(Convolutional Neural Network,卷积神经网络)是一种人工神经网络,将图像处理中的二位离散卷积运算和人工神经网络相结合,在语音分析和图像识别领域有着广泛的应用。典型的CNN包括卷积层、池化层以及全连接层,每一层根据输入的数据进行相应的运算,将运算结果输出给下一层,输入的初始数据经过多层的运算之后得到一个最终的结果。假设输入的初始数据为N*N像素的图像,卷积核为一个2*2的矩阵,卷积核里中的4个参数为权值或权重。卷积核在图像上平移,卷积核的每个元素与图像上对应位置的数据相乘,再求和。通过卷积核在图像上不断的平移,根据求和的结果最终得到一个新的图像,新的图像为3*3像素的图像。由上述的卷积过程可知,卷积运算本质上是乘累加运算,卷积运算可表示为C=C+A*B,首先计算A*B的乘积,然后将乘积与累加寄存器中的值C相加,最后将加法结果写回到累加寄存器中。在芯片领域加法运算和乘法运算都是功耗较大的运算,且乘法器和加法器会占用较多的芯片面积,特别是乘法器的数量过多时,芯片的面积越大,导致芯片的成本增加。因此业界对乘累加电路进行了一些优化:在电路层面对乘法器和加法器进行优化以降低功耗。例如,在乘法器的全加器中,对输入数量0进行bypass(旁路),直接得到加法结果。

申请人发现现有的卷积运算过程存在的问题是:在全加器的基础上增加了额外的硬件逻辑,且新增的硬件逻辑位于关键路径上,这样会增加乘法运算的执行周期。



技术实现要素:

本申请所要解决的技术问题在于,提供一种卷积神经网络的运算方法和装置。可减少相同数据的乘法运算和加法运算,以提高卷积运算的计算效率。

第一方面,本申请提供了一种卷积神经网络的运算方法,包括:运算装置获取卷积核和输入矩阵,运算装置的实现方式包括但不限于处理器核、逻辑电路、专用集成电路(英文:Application-Specific Integrated Circuit,缩写:ASIC)中的任意一种方式实现,也可以通过可编程逻辑器件(英文:Programmable Logic Device,缩写:PLD)实现。上述PLD可以是复杂可编程逻辑器件(英文:(Complex Programmable Logic Device,缩写:CPLD),FPGA,通用阵列逻辑(英文:Generic Array Logic,缩写:GAL)或其任意组合。卷积核包含m行n列的权重系数,输入矩阵包含r行s列的数据,在一种可能的实施方式中,卷积核的行数等于列数,即m=n。输入矩阵中包含的数据的数量大于或等于卷积核中包含的数据的数量,即r*s>m*n,且r≥m,s≥n。输入矩阵包括但不限于图像、语音或其他类型的数据。根据卷积算法的定义,运算装置控制卷积核在输入矩阵上平移滑动,平移滑动的方法为:依次在输入矩阵的第1行至第m行上平移滑动、第2行至第m+1行上平移滑动、第r-m+1行至第r行上平移滑动,平移滑动的m行呈连续分布,在平移滑动的过程中除了第一个行和最后一个行,其他行是可以共享的。运算装置确定滑动过程中卷积核的每个权重系数在输入矩阵的m行对应的数据,由于卷积核包含m*n个权重系数,因此在滑动过程中会对应m*n行的数据,m*n行的数据按照权重系数的排列和输入矩阵的m行的顺序排列进行排列,具体的顺序为第1行第1个权重系数在m行中的第1行中对应的数据、第1行第2个权重系数在m行中的第1行中对应的数据、…、第1行第m个权重系数在m行中的第1行中对应的数据,依次类推进行排列得到包含m*n行(s-n+1)列的数据的第一中间矩阵。统计第一中间矩阵中每行连续分布的同一数据的数量,以及根据统计结果生成第二中间矩阵。例如:第一中间矩阵的某行的数据为:1,1,1,0,0,2,2,2,统计该行连续分布的同一数据的数量得到改行对应的新的数据可表示为(1,3),(0,2),(2,3),括号中第1个参数表示数值,第2个参数表示该数值的长度。运算装置根据上述的连续分布的同一数据的统计后,将第一中间矩阵生成第二中间矩阵,将卷积核中每个权重系数乘以第二中间矩阵中对应的行后得到预处理矩阵,其中权重系数与第二中间矩阵中的任意一个数据相乘后得到乘积数据,其乘积数据的数值等于权重系数和该数据的数值的乘积,乘积数据的长度保持不变。然后,运算装置对预处理矩阵进行处理,预处理矩阵具有m*n行的数据,根据预设顺序将所述预处理矩阵n*m行进行求和得到所述输入矩阵的m行对应的卷积行,对于n*m行进行两两相加,从n*m行中取出的行的顺序本实施例不作限制。运算装置根据上述的计算方法计算所有的r-m+1个卷积行,根据得到的r-m+1个卷积行得到输入矩阵对应的卷积矩阵。上述实施例,对输入矩阵中重复的数据进行压缩处理,在进行加法运算和乘法运算时减少重复执行的次数,可减少卷积运算的运算量。

需要说明的是,上述实施例是对输入矩阵的行方向上进行处理得到卷积矩阵,在另一种可能的实施方中,也可以输入矩阵从列方向上开始处理,具体的处理方法,将上述实施例中的行和列进行互换可得到最终的卷积矩阵。

在本申请的一种可能的实施方式中,运算装置将卷积核的每个权重系数乘以在第二中间矩阵中对应的行后得到预处理矩阵包括:第二中间矩阵中的数据可以用(x,L)来表示,x表示数值,L表示数值x的长度,设权重系数为w,将权重系数乘以(x,L)得到的结果y,y=(w*x,L),即y的数值等于w和x的乘积,y的长度保持不变,这样在进行乘法运算过程中可减少乘法运算的次数。

在本申请的一种可能的实施方式中,预处理矩阵的数据包括数值和长度。预处理矩阵中任意两个行之间的求和的方法为:假设两个行为第一行和第二行,首先从第一行取出首个数据(a,L1)和第二行中取出首个数据(b,L2),比较L1和L2的大小,在L1=L2的情况下,输出结果为(a+b,L1)或(a+b,L2),从第一行中取出下一个数据和从第二行中取出下一个数据继续进行相加;

在L1>L2的情况下,输出结果为(a+b,L2),从第一行中取出下一个数据,将第一数据的数据保持不变,长度减小为L1-L2,继续进行求和;

在L1<L2的情况下,所述求和数据的数字等于a+b,所述求和数据的长度等于L1,从第一行中取出下一个数据;第二数据的数值保持不变,长度减小为L2-L1,继续求和。上述求和方法,可减少加法运算的次数,提高运算效率。

在本方面的一种可能的实施方式中,所述统计所述第一中间矩阵中每行的相同数据连续分布的数量包括:对于所述第一中间矩阵中的每行,以串行方式输出数据;比较当前输入的数据和上次输入的元素是否相同;若为是,将所述当前输入的数据的长度加1;若不相同,输入所述当前输入的数据的数值和长度。

在本方面的一种可能的实施方式中,m=n。

第二方面,本实施例提供了一种卷积神经网络的运算装置,包括:一种卷积神经网络的运算装置,其特征在于,包括:

预处理模块,用于获取卷积核和输入矩阵;其中,所述卷积核包含m行n列的权重系数,所述输入矩阵包含r行s列的数据,m、n、r和s均大于0的整数;确定所述卷积核的每个权重系数在所述输入矩阵中连续分布的m行所应的数据;根据每个权重系数在所述输入矩阵中连续分布的m行锁对应的数据生成第一中间矩阵;其中,所述第一中间矩阵包含n*m行(s-n+1)列的数据;统计所述第一中间矩阵中每行的相同数据连续分布的数量,以及根据统计结果生成第二中间矩阵;其中,所述第二中间矩阵中的每个数据包括数值和长度;

乘法控制模块,用于将所述卷积核的每个权重系数乘以在所述第二中间矩阵中对应的行后得到预处理矩阵;

加法控制模块,用于根据预设顺序将所述预处理矩阵n*m行进行求和得到所述输入矩阵的m行对应的卷积行;

生成模块,用于根据所述输入矩阵的r行得到r-m+1个卷积行,以及根据r-m+1个卷积行得到所述输入矩阵的卷积矩阵。

上述实施例,对输入矩阵中重复的数据进行压缩处理,在进行加法运算和乘法运算时减少重复执行的次数,可减少卷积运算的运算量。

在本方面的一种可能的实施方式中,所述第二中间矩阵中每个数据包括数值和长度;

所述乘法控制模块用于:

获取所述卷积核中的一个权重系数,以及获取所述权重系数在所述第二中间矩阵中对应的行中的一个数据;

根据所述权重系数和所述数据得到输出数据;其中,所述输出数据的数值等于权重系数与所述数据的数值的乘积,所述输出数据的长度等于所述数据的长度。

在本方面的一种可能的实施方式中,根据预设顺序将所述预处理矩阵n*m行进行求和得到所述输入矩阵的m行对应的卷积行的步骤中,两个行之间的求和过程包括:

从第一行中取出首个数据(a,L1)和从第二行取出首个数据(b,L2);a和b表示数值,L1和L2表示长度;L1和L2为大于0的整数;

在L1=L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从所述第一行中取出下一个数据和从所述第二行中取出下一个数据进行继续求和;

在L1>L2的情况下,(a,L1)+(b,L2)=(a+b,L2),从所述第二行取出下一个数据;将(a,L1)更新为(a,L1-L2),将从所述第二行取出的下一个数据和(a,L1-L2)继续求和;

在L1<L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从第一行中取出下一个数据,将(b,L2)更新为(b,L2-L1),将从所述第一行中取出的下一个数据和b(L2-L1)继续求和;

在所述第一行和所述第二行中所有的数据完成求和,将每次求和得到的结果按顺序进行排列得到求和结果。

在本方面的一种可能的实施方式中,所述统计所述第一中间矩阵中每行的相同数据连续分布的数量包括:

对于所述第一中间矩阵中的每行,以串行方式输出数据;

比较当前输入的数据和上次输入的元素是否相同;

若为是,将所述当前输入的数据的长度加1;

若不相同,输入所述当前输入的数据的数值和长度。

在本方面的一种可能的实施方式中,m=n。

第三方面,本申请还提供一种服务器,服务器包括上述任意一种运算装置,服务器包括但不限于视频服务器、音频服务器、数据中心服务器或其他类型的服务器。

第四方面,提供一种本发明提供了一种运算装置,包括处理器、存储器、通信接口、总线,所述处理器、存储器和通信接口之间通过总线连接并完成相互间的通信,所述存储器中用于存储计算机执行指令,所述运算装置运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述运算装置中的硬件资源执行第一方面和第一方面的任一种可能实现方式中的卷积神经网络的运算方法。

第五方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面任一种可能实现方式中的方法的指令。

本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种卷积神经网络的运算方法的流程示意图;

图2是本发明实施例提供的两个行相加的原理示意图;

图3是本发明实施例提供的数据压缩处理的原理示意图

图4是本发明实施例提供的一种卷积神经网络的结构示意图;

图5是本发明实施例提供的一种卷积申请网络的另一结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行地描述。

参见图1,为本发明实施例提供的一种卷积神经网络的运算方法的流程示意图,在本发明实施例中,所述方法包括:

S101、获取卷积核中和输入矩阵;其中,所述卷积核包含m行n列的权重系数,所述输入矩阵包含r行s列的数据;,m、n、r和s为大于0的整数。

具体的,卷积核包含m行n列的权重系数,即卷积核中包括m*n个权重系数;输入矩阵包含r行s列的数据,即输入矩阵包含r*s个数据。输入矩阵中包含的数据的数量大于或等于卷积核中包含的数据的数量,即r*s>m*n,且r≥m,s≥n。输入矩阵包括但不限于图像、语音或其他类型的数据。

S102、将所述卷积核在所述输入矩阵的连续分布的m行上平移滑动,以及确定滑动过程中所述卷积核的每个权重系数在所述输入矩阵的m行对应的数据。

具体的,根据卷积算法的运算过程,运算装置控制卷积核在输入矩阵的m行上平滑移动,每次移动的步长为1个数据,移动过程中卷积核不能超出输入矩阵的范围。平滑移动的方法为:依次在输入矩阵的第1行至第m行平滑移动、第2行至第m+1行上平移滑动、第r-m+1行至第r行上平移滑动,平移滑动的m行呈连续分布,在平移滑动的过程中除了第一个行和最后一个行,其他行是可以共享的。运算装置确定滑动过程中卷积核的每个权重系数在输入矩阵的m行对应的数据,由于卷积核包含m*n个权重系数,因此在滑动过程中会对应m*n行的数据。

举例说明,卷积核为卷积核中m=2,n=2,包含4个权重系数。输入矩阵为输入矩阵中r=4,s=5,包含20个数据。卷积核在输入矩阵的第1行和第2行之间平滑移动的情况下4个权重系数对应的数据为卷积核在第2行和第3行之间平滑移动的情况下4个权重系数对应的数据为卷积核在第3行和第4行之间平滑移动的情况下4个权重系数对应的数据为根据权重系数的排列顺序对在输入矩阵中对应的数据进行排列

S103、根据每个权重系数在所述输入矩阵的m行对应的数据生成第一中间矩阵;其中,所述第一中间矩阵包含n*m行(s-n+1)列的数据。

续上例,输入矩阵的第1行和第2行对应的第一中间矩阵为

第一中间矩阵中的行的顺序与卷积核中权重系数的顺序保持一致。

S104、统计所述第一中间矩阵中每行中连续分布的同一数据的数量,以及根据统计结果生成第二中间矩阵;其中,所述第二中间矩阵中的每个数据包括数值和长度。

具体的,运算装置统计第一中间矩阵中每行连续分布的同一数据的数量,根据统计结果生成第二中间矩阵。

举例说明,第一中间矩阵中的数据为:统计第一中间矩阵中各行的同一数据连续分布的数量后生成的第二中间矩阵可表示为其中括号中第1个参数表示数据的数值,第2个参数表示数值的长度。

S105、将所述卷积核的每个权重系数乘以在所述第二中间矩阵中对应的行后得到预处理矩阵。

具体的,运算装置根据上述的连续分布的同一数据的统计后,将第一中间矩阵生成第二中间矩阵,将卷积核中每个权重系数乘以第二中间矩阵中对应的行后得到预处理矩阵,其中权重系数与第二中间矩阵中的任意一个数据相乘后得到乘积数据,其乘积数据的数值等于权重系数和该数据的数值的乘积,乘积数据的长度保持不变。

续上例,卷积核为卷积核中的权重系数与第二中间矩阵中对应的行相乘后得到的预处理矩阵为

S106、根据预设顺序将所述预处理矩阵n*m行进行求和得到所述输入矩阵的m行对应的卷积行。

具体的,运算装置对预处理矩阵进行处理,预处理矩阵具有m*n行的数据,对预处理矩阵中的m*n行进行两两相加,运算装置在m*n中取出行的顺序不作限制。根据S105的例子,将预处理矩阵中的(2,1)、(4,3)、(3,2)、(4,2),(1,1)。(3,1),(6,2),(4,1),(6,2)和(4,1)进行两两相加得到卷积行。

在一种可能的实施方式中,两个行之间的求和过程包括:设两个行为第一行和第二行,从第一行中取出首个数据(a,L1)和从第二行取出首个数据(b,L2);a和b表示数值,L1和L2表示长度;

在L1=L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从所述第一行中取出下一个数据和从所述第二行中取出下一个数据进行继续求和;

在L1>L2的情况下,(a,L1)+(b,L2)=(a+b,L2),从所述第二行取出下一个数据;将(a,L1)更新为(a,L1-L2),将从所述第二行取出的下一个数据和(a,L1-L2)继续求和;

在L1<L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从第一行中取出下一个数据,将(b,L2)更新为(b,L2-L1),将从所述第一行中取出的下一个数据和b(L2-L1)继续求和;

在所述第一行和所述第二行中所有的数据完成求和,将每次求和得到的结果按顺序进行排列得到求和结果。

举例说明,参见图2所示,两个数据行分别为行a和行b,其中行a:[(50,11),(60,5)],行b:[(70,10),(80,6)],加法器有两个输入端口和输出端口,两个输入端口为第一输入端口和第二输入端口,行a和行b的求和计算过程为:

从行a中取出第1个数据(50,11)输入到第一输入端口,从行b中取出第1个数据(70,10)输入到第二输入端口,将(50,11)和(70,10)中的数值相加得到输出结果的数值,以及输出结果中数值的长度取11和10中的最小值为10,则输出端口的输出结果为(50+70,10)=(120,10)。

第一输入端口的数据更新为(50,11-10),从行b中取出下一个数据(80,6)输入到第二输入端口,将第一输入端口的数据(50,1)和第二输入端口的数据(80,6)进行求和,将(50,1)和(80,6)中的数值相加得到输出结果的数值,以及输出结果中数值的长度取1和6中的最小值为1,则输出端口的输出结果(50+80,1)=(130,1);

从行a中取出下一个数据(60,5)输入到第一端口,第二端口的数据更新(80,6-1)=(80,5);

将第一端口的数据(60,5)和第二端口的数据(80,5)进行求和输出结果(140,5),此时行a和行b中所有的数据都完成求和操作,行a和行b相加后输出的结果为[(120,10),(80,5),(140,5)]。

S107、根据上述的计算方法计算所有的r-m+1个卷积行,根据得到的所有的r-m+1个卷积行得到所述输入矩阵对应的卷积矩阵。

具体的,运算装置根据S101至S106的计算过程计算得到输入矩阵所有的r-m+1个卷积行,根据得到的所有的r-m+1个卷积行得到所述输入矩阵对应的卷积矩阵。

上述实施例,对输入矩阵中重复的数据进行压缩处理,在进行加法运算和乘法运算时减少重复执行的次数,可减少卷积运算的运算量。

在本实施例中的一种可能的实施方式中,所述将所述卷积核的每个权重系数乘以在所述第二中间矩阵中对应的行后得到预处理矩阵包括:

获取所述卷积核中的一个权重系数w,确定所述权重系数在所述第二中间矩阵中对应的行;

从所述对应的行中取出一个数据(x,L);其中,x表示数据的数值,L表示x的长度;

将所述权重系数w乘以所述数据(x,L)得到结果y;其中y=(w*x,L)。

实施上述实施例,在行中存在多个重复的数据的情况下,只需要执行一次乘法运算,后续的计算过程可直接引用已有的计算结果,减少了乘法运算的次数。

在一种可能的实施方式中,所述统计所述第一中间矩阵中每行的相同数据连续分布的数量包括:

对于所述第一中间矩阵中的每行,以串行方式输出数据;

比较当前输入的数据和上次输入的元素是否相同;

若为是,将所述当前输入的数据的长度加1;

若不相同,输出所述当前输入的数据的数值和长度。

具体的,参见图3所示的数据压缩的原理示意图,待压缩的行中包含的数据为(153,153,153,153,153,153,240,240,240,204,204,204),缓冲器中存储前一次输入的数据,按照行中数据的排列顺序每次从输入端口输出一个数据,比较器比较当前输入的数据和缓冲器输入的上一个数据,如果当前输入的数据和上一个数据相等,则存储器中存储的长度加1;

如果当前输入的数据和上一个输入不相同,则以(data,length)格式从输出端口输出压缩后的数据,其中data为缓冲器内的数据,length为存储器中的长度,同时缓冲器内数据更新为当前输入的数据,存储器内的长度值复位为1。最终得到的压缩数据为((153,7),(240,3),(204,3))。

参见图4,为本发明实施例提供的一种卷积神经网络的运算装置的结构示意图,本发明实施例的运算装置用于执行图1中的一种卷积申请网络的运算方法,所涉及的术语和过程可参照图1实施例的描述。运算装置4包括:预处理单元401、乘法控制单元402、加法控制器单元403和生成单元404。

预处理单元401,用于获取卷积核和输入矩阵;其中,所述卷积核包含m行n列的权重系数,所述输入矩阵包含r行s列的数据,m、n、r和s均大于0的整数;确定所述卷积核的每个权重系数在所述输入矩阵中连续分布的m行所对应的数据;根据每个权重系数在所述输入矩阵中连续分布的m行所对应的数据生成第一中间矩阵;其中,所述第一中间矩阵包含n*m行(s-n+1)列的数据;统计所述第一中间矩阵中每行的相同数据连续分布的数量,以及根据统计结果生成第二中间矩阵;其中,所述第二中间矩阵中的每个数据包括数值和长度;

乘法控制单元402,用于将所述卷积核的每个权重系数乘以在所述第二中间矩阵中对应的行后得到预处理矩阵。

加法控制单元403,用于根据预设顺序将所述预处理矩阵n*m行进行求和得到所述输入矩阵的m行对应的卷积行。

生成模单元404,用于根据所述输入矩阵的r行得到r-m+1个卷积行,以及根据r-m+1个卷积行得到所述输入矩阵的卷积矩阵。

可选的,所述第二中间矩阵中每个数据包括数值和长度;

所述乘法控制模块402用于:

获取所述卷积核中的一个权重系数,以及获取所述权重系数在所述第二中间矩阵中对应的行中的一个数据;

根据所述权重系数和所述数据得到输出数据;其中,所述输出数据的数值等于权重系数与所述数据的数值的乘积,所述输出数据的长度等于所述数据的长度。

可选的,加法控制单元403用于:

从第一行中取出首个数据(a,L1)和从第二行取出首个数据(b,L2);a和b表示数值,L1和L2表示长度;

在L1=L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从所述第一行中取出下一个数据和从所述第二行中取出下一个数据进行继续求和;

在L1>L2的情况下,(a,L1)+(b,L2)=(a+b,L2),从所述第二行取出下一个数据;将(a,L1)更新为(a,L1-L2),将从所述第二行取出的下一个数据和(a,L1-L2)继续求和;

在L1<L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从第一行中取出下一个数据,将(b,L2)更新为(b,L2-L1),将从所述第一行中取出的下一个数据和b(L2-L1)继续求和;

在所述第一行和所述第二行中所有的数据完成求和,将每次求和得到的结果按顺序进行排列得到求和结果。

可选的,所述预处理单元401:

对于所述第一中间矩阵中的每行,以串行方式输出数据;

比较当前输入的数据和上次输入的元素是否相同;

若为是,将所述当前输入的数据的长度加1;

若不相同,输入所述当前输入的数据的数值和长度。

可选的,m=n。

本发明实施例和图1方法实施例一基于同一构思,其带来的技术效果也相同,具体过程可参照图1方法实施例一的描述,此处不再赘述。

运算装置的实现方式包括但不限于处理器核、逻辑电路、专用集成电路(英文:Application-Specific Integrated Circuit,缩写:ASIC)中的任意一种方式实现,也可以通过可编程逻辑器件(英文:Programmable Logic Device,缩写:PLD)实现。上述PLD可以是复杂可编程逻辑器件(英文:(Complex Programmable Logic Device,缩写:CPLD),FPGA,通用阵列逻辑(英文:Generic Array Logic,缩写:GAL)或其任意组合。

参见图5,为本发明实施例提供的一种卷积神经网络的运算装置另一结构示意图,在本发明实施例中,运算装置5包括处理器50、存储器51和收发器52。收发器52用于与外部设备之间收发数据。运算装置5中的处理器50的数量可以是一个或多个。本发明的一些实施例中,处理器50、存储器51和收发器52可通过总线系统或其他方式连接。运算装置5可以用于执行图1所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图1对应的实施例。此处不再赘述。

其中,存储器51中存储程序代码。处理器50用于调用存储器51中存储的程序代码,用于执行以下操作:

获取卷积核和输入矩阵;其中,所述卷积核包含m行n列的权重系数,所述输入矩阵包含r行s列的数据,m、n、r和s均大于0的整数;

确定所述卷积核的每个权重系数在所述输入矩阵中连续分布的m行所对应的数据;

根据每个权重系数在所述输入矩阵中连续分布的m行所对应的数据生成第一中间矩阵;其中,所述第一中间矩阵包含n*m行(s-n+1)列的数据;

统计所述第一中间矩阵中每行的相同数据连续分布的数量,以及根据统计结果生成第二中间矩阵;其中,所述第二中间矩阵中的每个数据包括数值和长度;

将所述卷积核的每个权重系数乘以在所述第二中间矩阵中对应的行后得到预处理矩阵;

根据预设顺序将所述预处理矩阵n*m行进行求和得到所述输入矩阵的m行对应的卷积行;

根据所述输入矩阵的r行得到r-m+1个卷积行,以及根据r-m+1个卷积行得到所述输入矩阵的卷积矩阵。

可选的,所述第二中间矩阵中每个数据包括数值和长度;

处理器501执行所述将所述卷积核的每个权重系数乘以在所述第二中间矩阵中对应的行后得到预处理矩阵包括:

获取所述卷积核中的一个权重系数,以及获取所述权重系数在所述第二中间矩阵中对应的行中的一个数据;

根据所述权重系数和所述数据得到输出数据;其中,所述输出数据的数值等于权重系数与所述数据的数值的乘积,所述输出数据的长度等于所述数据的长度。

可选的,处理器501执行两个行之间的求和过程包括:

从第一行中取出首个数据(a,L1)和从第二行取出首个数据(b,L2);a和b表示数值,L1和L2表示长度;

在L1=L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从所述第一行中取出下一个数据和从所述第二行中取出下一个数据进行继续求和;

在L1>L2的情况下,(a,L1)+(b,L2)=(a+b,L2),从所述第二行取出下一个数据;将(a,L1)更新为(a,L1-L2),将从所述第二行取出的下一个数据和(a,L1-L2)继续求和;

在L1<L2的情况下,(a,L1)+(b,L2)=(a+b,L1),从第一行中取出下一个数据,将(b,L2)更新为(b,L2-L1),将从所述第一行中取出的下一个数据和b(L2-L1)继续求和;

在所述第一行和所述第二行中所有的数据完成求和,将每次求和得到的结果按顺序进行排列得到求和结果。

可选的,处理器501执行所述统计所述第一中间矩阵中每行的相同数据连续分布的数量包括:

对于所述第一中间矩阵中的每行,以串行方式输出数据;

比较当前输入的数据和上次输入的元素是否相同;

若为是,将所述当前输入的数据的长度加1;

若不相同,输入所述当前输入的数据的数值和长度。

可选的,m=n。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1