CN110414672B - 卷积运算方法、装置及系统 - Google Patents
卷积运算方法、装置及系统 Download PDFInfo
- Publication number
- CN110414672B CN110414672B CN201910664359.1A CN201910664359A CN110414672B CN 110414672 B CN110414672 B CN 110414672B CN 201910664359 A CN201910664359 A CN 201910664359A CN 110414672 B CN110414672 B CN 110414672B
- Authority
- CN
- China
- Prior art keywords
- convolution
- target
- data
- size
- multiplied
- 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
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Abstract
本发明提供了一种卷积运算方法、装置及系统,该方法包括:响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;基于目标卷积运算模式,控制参数移位寄存器获取卷积参数,以基于卷积参数形成N组尺寸为j×j的卷积参数方阵;并控制卷积数据寄存器获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;控制终端设备中M个卷积核,分别基于目标卷积方阵和卷积参数方阵,生成M组卷积结果数据,卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),M>=(j*j)/(i*i)。本发明解决了现有技术中无法支持多种尺寸的卷积运算的问题。
Description
技术领域
本发明涉及卷积运算领域,尤其涉及一种卷积运算方法、装置及系统。
背景技术
近几年,卷积神经网络(Convolutional Neural Network,CNN)在深度学习中取得了重大的进展。Alex Krizhevsky等人2012年提出了经典的CNN计算结构AlexNet,在图像分类和识别中获得了巨大成功。AlexNet的输入为一个3通道的227×227图片数据,如图1所示,其整个处理过程总共包括8层运算,前五层为卷积层,后三层为全连接层,其中第一层卷积采用3×11×11宽度的卷积核,卷积核个数为96,第二层卷积采用96×5×5宽度的卷积核,卷积核个数为256,余下三层卷积都采用不同通道数的3×3宽度卷积核。AlexNet的总参数量超过了8MB,并且单通道卷积核大小不一致,运算复杂。之后,研究人员又提出了其他的更为完善和优化的方法,其中最著名结构有ZFNet[2013年],VGGNet[2014年],ResNet[2015],GoogleNet[2015年]和SqueezeNet(压缩卷积神经网络)[2016年]等,它们从性能和资源使用率等不同的方面进行优化,不同的CNN结构具有不同的卷积层数、通道维度、卷积核大小、以及每一层卷积核个数等。通常,CNN网络运算包括:卷积运算、Pooling池化运算和FC全连接运算。
卷积运算是CNN计算结构中最为关键的运算,其运算量占据整个网络的90%以上。卷积运算又按不同的卷积尺寸进行划分,常用的卷积核包括1×1的卷积核、3×3的卷积核、5×5的卷积核心和7×7的卷积核。目前主流的卷积神经网络大尺寸的卷积核心比较少,最常用的卷积尺寸为3×3和5×5。
卷积神经网络最初输入的数据为图像数据,中间经过多层卷积运算。每一层卷积计算输出数据称为featuremap数据。上层的featuremap数据作为下一层卷积运算的输入参与卷积运算。最后一层的计算结果为该卷积神经网络的最终结果。
如图2所示,卷积运算是一个三维立体的运算过程。卷积运算包括卷积数据和卷积参数输入。卷积图像数据和卷积参数都是三维结构。运算是卷积核从输入图像的左上角开始,向右逐层滑动,每滑动一次,卷积核与其覆盖的输入数据进行点积并求和运算,得到输出一个featuremap上的一个数据。如果有n个卷积核,那么输出featuremap数据个数也为n。
其中,卷积运算公式为:其中1≤i≤nout,1≤j≤nin。分别表示第i个输出和第j个输入的feature map,Wi,j为卷积核,为卷积运算,Bi为卷积偏移量,nout表示输出feature map的通道数,nin表示输入feature map的通道数。
通过切分的方式,可将三维的卷积运算转换成多次的二维卷积运算,如图3所示,卷积运算相当于卷积核在二维的feature map上从左至右,从上至下的划窗操作,窗口内的数据与卷积核进行乘累加操作。如此,可将三维的多通道卷积运算拆分成多个如图3所示的单通道卷积运算。
针对二维划窗操作,可通过移位寄存器链实现卷积运算,一般卷积运算根据尺寸N的不同,所需的卷积数据和卷积参数的个数均为N2,由于卷积数据移位寄存器链中的移位链的数量是一定的,按其设计原理每移位一次,提供一定数量的卷积数据和卷积参数,因此,当卷积尺寸发生变化时,需要修改移位链层数以及移位链中寄存器的个数来适配不同卷积尺寸的卷积运算。由此,对于已经设置好的卷积运算结构,无法在不改变硬件结构的情况下,支持多种尺寸的卷积运算。
发明内容
本发明的目的在于提供一种卷积运算方法、装置及系统,以解决现有技术无法支持多种尺寸的卷积运算的问题。
为实现上述目的,本发明是这样实现的:
第一方面,提供了一种卷积运算方法,应用于终端设备,包括:
响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,所述目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;
基于目标卷积运算模式,控制参数移位寄存器获取卷积参数,以基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵;
基于目标卷积运算模式,控制卷积数据寄存器获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;
控制所述终端设备中M个卷积核,分别基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据,其中,所述卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),N为正整数,且N小于或等于M。
第二方面,本发明还提供一种卷积运算装置,包括:
M个卷积尺寸为i×i的卷积核、卷积数据寄存器和参数移位寄存器;
所述参数移位寄存器响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,并基于目标卷积运算模式获取卷积参数,以基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵,所述目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;
所述卷积数据寄存器基于所述目标卷积运算模式获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;
所述M个卷积核分别基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据,其中,所述卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),N为正整数,且N小于或等于M。
第三方面,本发明还提供一种卷积运算系统,包括:
移位卷积数据链,用于响应于输入的卷积运算模式控制指令,向如第二方面所述的卷积运算装置输入目标卷积数据,以使所述卷积运算装置基于所述目标卷积数据形成尺寸为j×j的目标卷积方阵;
卷积参数存储器,用于响应于输入的卷积运算模式控制指令,向如第二方面所述的卷积运算装置输入卷积参数,以使所述卷积运算装置基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵;以及
如第二方面所述的卷积运算装置,用于基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据。
第四方面,本发明还提供一种终端设备,包括:
确定单元,用于响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,所述目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;
获取单元,用于基于目标卷积运算模式,控制参数移位寄存器获取卷积参数,以基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵,并控制卷积数据寄存器获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;
生成单元,用于控制所述终端设备中M个卷积核,分别基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据,其中,所述卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),N为正整数,且N小于或等于M。
第五方面,本发明还提供一种终端设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。
第六方面,本发明还一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。
在本发明中,卷积运算方法基于目标卷积运算模式对应的卷积尺寸j×j,获取卷积参数和目标卷积数据,分别形成N组尺寸为j×j的卷积参数方阵、j×j的目标卷积方阵,然后通过M个卷积核分别对目标卷积方阵和卷积参数方阵进行卷积运算,生成M个卷积结果,从而可以支持N组尺寸为j×j的卷积运算。如此,由于本方案的卷积参数以及卷积数据的获取是基于卷积运算的模式(即对应不同的卷积尺寸)进行获取,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本方案可以支持不同卷积尺寸的卷积运算,解决了现有技术中无法支持多种卷积尺寸的卷积运算的问题。
附图说明
图1为AlexNet的示意性结构图;
图2为三维卷积运算的示意性原理图;
图3为二维卷积运算的示意性原理图;
图4为根据本发明一个实施例的卷积运算方法的示意性流程图;
图5为根据本发明另一个实施例的卷积运算方法的示意性流程图;
图6为根据本发明一个实施例的池化运算模块的示意性结构图;
图7为根据本发明一个实施例的卷积运算装置的示意性结构图;
图8为根据本发明一个实施例的卷积运算装置的示意性原理结构图
图9为根据本发明一个实施例的卷积运算系统的示意性结构图;
图10为根据本发明一个实施例的卷积运算系统中移位卷积数据链与卷积运算装置的示意性连接结构图;
图11为根据本发明另一个实施例的卷积运算系统中移位卷积数据链与卷积运算装置的示意性连接结构图;
图12为根据本发明再一个实施例的卷积运算系统中移位卷积数据链与卷积运算装置的示意性连接结构图;
图13为根据本发明再一个实施例的卷积运算系统中移位卷积数据链与卷积运算装置的示意性连接结构图;
图14为根据本发明一个实施例的移位卷积数据链的示意性结构图;
图15为根据本发明一个实施例的卷积运算系统与控制终端的示意性连接结构图;
图16为根据本发明另一个实施例的卷积运算系统的示意性结构原理图;
图17为根据本发明一个实施例的终端设备的示意性结构图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
以下结合附图,详细说明本发明各实施例提供的技术方案。
图4为根据本发明一个实施例的卷积运算方法的示意性流程图,以解决现有技术中无法支持多种尺寸的卷积运算的问题。本发明实施例的方法应用于终端设备,该方法可包括:
步骤402.终端设备响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j。
应理解,卷积运算方法的卷积运算模式可通过输入的控制指令进行控制,比如,当输入的控制指令对应的卷积运算模式为3×3卷积运算模式时,则该模式对应的卷积尺寸为3×3;当输入的控制指令对应的运算模式为5×5卷积运算模式时,则该模式对应的卷积尺寸为5×5;当输入的控制指令对应的卷积运算模式为7×7卷积运算模式时,则该模式对应的卷积尺寸为7×7,等等,在此不一一举例说明。即,j=2n+1,n为正整数。
步骤404.终端设备基于目标卷积运算模式,控制参数移位寄存器获取卷积参数,以基于卷积参数形成N组尺寸为j×j的卷积参数方阵。
步骤406.终端设备基于目标卷积运算模式,控制卷积数据寄存器获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵。
当确定目标卷积运算模式(即确定目标卷积尺寸)后,可确定本发明实施例的卷积运算方法执行N组j×j卷积运算。由此,参数移位寄存器根据目标卷积运算模式,顺序接收N组j×j(共N*j*j个)的卷积参数,并根据获取的卷积参数形成N组尺寸为j×j的卷积参数方阵。而卷积数据寄存器则根据目标卷积运算模式获取目标卷积数据,形成尺寸为j×j的目标卷积方阵。
需要说明的是,当确定目标卷积运算模式后,步骤404也可在步骤406之后执行,或者步骤404和步骤406同时执行,不限于本发明实施例所述的执行步骤。
步骤408.终端设备控制M个卷积核,分别基于目标卷积方阵和卷积参数方阵,生成M组卷积结果数据。其中,卷积核的卷积尺寸为i×i,i=2m+1,m为正整数,M=2k,k为大于1的正整数。
应理解,本发明实施例的卷积运算方法可配置M个卷积核,并使M个卷积核分别对目标卷积方阵和卷积参数方阵进行卷积运算,从而生成M组卷积结果数据。可以理解的是,在确定目标卷积模式后,本发明实施例的方法可执行目标卷积尺寸的卷积运算的组数N是根据所配置的卷积核的数量以及卷积核的尺寸i×i所确定,即N=(M*i*i)/(j*j),M>=(j*j)/(i*i),M和N为正整数,且N小于或等于M。
由于卷积运算方法基于目标卷积运算模式对应的卷积尺寸j×j,获取卷积参数和目标卷积数据,分别形成N组尺寸为j×j的卷积参数方阵、j×j的目标卷积方阵,然后通过M个卷积核分别对目标卷积方阵和卷积参数方阵进行卷积运算,生成M个卷积结果,从而可以支持N组尺寸为j×j的卷积运算。如此,由于本方案的卷积参数以及卷积数据的获取是基于卷积运算的模式(即对应不同的卷积尺寸)进行获取,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例可以支持不同卷积尺寸的卷积运算,解决了现有技术中无法支持多种卷积尺寸的卷积运算的问题。
在上述实施例中,生成M组卷积结果数据,包括:
若N=M,则将N组卷积参数方阵中的卷积参数分组输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。
若N<M,则将N组卷积参数方阵中的卷积参数、以及(M*i*i-N*j*j)个无效参数依次输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。
以目标卷积模式对应的目标卷积尺寸为3×3(j=3)为例进行说明,假设i=j=3,M=4,即4个卷积核的尺寸均为3×3,则参数移位寄存器获取36个卷积参数并形成4组(N=M=4)3×3的卷积参数方阵分别对应发送于4个卷积核,卷积数据寄存器则获取9个卷积数据,并形成3×3目标卷积方阵共享于4个卷积核,如此,4个卷积核分别根据对应的卷积参数方阵中的卷积参数和目标卷积方阵中的目标卷积数据进行卷积运算,从而生成4组卷积结果数据。
而以目标卷积模式对应的目标卷积尺寸为5×5(j=5)为例进行说明,假设卷积核的尺寸仍然为3×3,即i=3,卷积核的数量为4(M=4),则参数移位寄存器获取25个卷积参数,形成1(N=1)组5×5的卷积参数方阵,并将25个卷积参数(有效参数)与11个0(无效参数)共36个参数分别对应输入给4个卷积核(每个卷积核对应有9个卷积参数)中。卷积数据寄存器则获取25个卷积数据,并与11个0(无效数据)形成卷积数据分别对应输入至4个卷积核中。如此,4个卷积核分别根据对应的卷积参数方阵中的卷积参数和目标卷积方阵中的目标卷积数据进行卷积运算,从而生成4组卷积结果数据。
由此可见,由于本发明实施例的卷积参数以及卷积数据的获取是基于卷积运算的模式(即对应不同的卷积尺寸)进行获取,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例可以支持不同卷积尺寸的卷积运算。
在上述一个具体的实施例中,i=3,M=4,j=3时N=4;或,i=3,M=4,j=5时N=1,即在j为3时,本发明实施例的方法可支持4组3×3的卷积运算,在j=5时,本发明实施例的方法可支持1组5×5的卷积运算。当然,在i=3,M=6的情况下,j=3或5或7,N=6或2或1,即在j为3时,本发明实施例的方法可支持6组3×3的卷积运算,在j=5时,本发明实施例的方法可支持2组5×5的卷积运算,在j=7时,本发明实施例的方法可支持1组7×7的卷积运算,等等,在此也不一一举例说明。
需要说明的是,上述实施例是以3×3卷积核(即i=3)为例构建支持多种尺寸的卷积运算方法,当然也可以采用其他尺寸的卷积核构建。一般使用较小的卷积尺寸的卷积核进行构建,然而,使用1×1尺寸的卷积核基本无意义,而在使用7×7卷积核构建1组5×5卷积运算时,只使用了其中的25个乘加模块(7×7卷积核共有49个乘加模块),剩余有24个乘加模块处于空闲状态,导致卷积核中乘加模块的使用效率不高,而其他更高的卷积尺寸如11×11更不常用。因此,在本发明实施例中,一般选用尺寸3×3或5×5的卷积核构建不同尺寸的卷积运算。
如图5所示,在上述进一步的实施例中,若N<M或j>i,则在生成M组卷积结果数据之后,还包括:
步骤502.终端设备获取尺寸为j×j的偏移数据方阵。
步骤504.终端设备基于偏移数据方阵和M组卷积结果数据,得到目标卷积尺寸为j×j的累加运算结果。
应理解,在构建卷积运算的卷积尺寸大于卷积运算单元中卷积核的卷积尺寸时,输出M组卷积结果数据后,可通过j×j累加模块获取j×j偏移数据方阵,以将偏移数据方阵中的偏移量与M组卷积结果数据进行累加运算,得到j×j的累加运算结果。比如,以构建5×5卷积运算为例,则需要通过5×5累加模块获取5×5偏移数据方阵,以完成4组卷积结果数据与5×5偏移量的累加,从而得到5×5的卷积结果。
当然,对于N=M,或者i=j(比如i=j=3)的情况,在输出M组卷积结果数据后,卷积核根据卷积运算模块中的偏移量数据、目标卷积方阵中的目标卷积数据以及卷积参数方阵中的卷积数据完成卷积运算,从而得到M组j×j的卷积运算结果。也就是说,对于所构建的目标卷积运算的卷积尺寸与卷积运算模块中卷积核的卷积尺寸相等的情况,在卷积核进行卷积运算时,自动根据偏移量数据、目标卷积数据和卷积参数进行计算以得到卷积结果数据。也就是说,对于构建j(等于i)的卷积运算,偏移量是在卷积核内部完成运算,而对于构建j(不等于i)的卷积运算,偏移量则是在卷积核根据卷积参数和目标卷积数据完成卷积运算后,通过j×j累加运算模块获取偏移量数据,并通过j×j累加运算模块对偏移量数据和M组卷积运算结果进行累加计算,得到j×j的卷积运算结果。
在上述任一项实施例中,若N=M或j=i,则在生成M组卷积结果数据之后,还包括:
对M组卷积结果数据进行池化运算,以将池化运算后的结果作为目标卷积尺寸为j×j的目标卷积结果。
其中,池化运算(Pooling)根据计算不同,大致有Average Pooling、Max Pooling和Min Pooling计算等。池化运算过程大致相同,如Average Pooling计算,先对输入的数据按卷积尺寸形成窗口数据,如卷积尺寸为3,则窗口数据为9(3×3),然后对输入的9个数据计算平均数Average,形成池化计算结果。Max Pooling计算是将平均计算改成求最大值计算,Min Pooling计算是进行求最小值。
可参照图6进行说明,以i=3,M=4为例,若上述实施例的方法为构建3×3(j=3)的卷积运算方法,则在生成4组卷积结果数据后,4组3×3卷积运算结果为池化运算器的输入数据;若上述实施例的方法为构建5×5(j=5)的卷积运算方法,则在生成4组卷积结果数据后,1组5×5卷积运算结果为池化运算器的输入数据。
如图6所示,池化运算器内部可以为4个基于FIFO的移位数据链,以及一组(共25*4)个数据寄存器和一组控制参数。运算工作时,移位数据链以串行方式或并连方式连接,形成移位数据链。输入数据运算时,从而输入端逐拍输入移位链,该移位链则根据输入数据逐拍输出5组数据。当Mode_sel(卷积运算模式控制指令)指示3×3卷积运算模式时,从5组数据中,选择连续3组(可1~3,或2~4或3~5)共9个数据进行池化运算,可以配置成Max运算或Min运算等,移位数据链逐拍输出过程中,同时完成池化运算,并降输出池化后的结果作为3×3的目标卷积结果。当Mode_Sel指示5×5卷积运算模式时,对5组数据中共25个数据进行池化运算,可以是Max运算或Min运算等,移位数据链逐拍输出过程中,同时完成池化运算,并将输出的池化运算后的结果作为5×5的目标卷积结果。
本发明实施例还提供一种卷积运算装置700,如图7所示,其包括:M个卷积尺寸为i×i的卷积核7061、卷积数据寄存器702和参数移位寄存器704;参数移位寄存器704响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,并基于目标卷积运算模式获取卷积参数,以基于卷积参数形成N组尺寸为j×j的卷积参数方阵,目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;卷积数据寄存器702基于目标卷积运算模式获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;M个卷积核7061分别基于目标卷积方阵和卷积参数方阵,生成M组卷积结果数据。其中,卷积核7061的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),M>=(j*j)/(i*i),M和N为正整数。此外,N小于或等于M。
由于卷积运算装置700通过参数移位寄存器704基于目标卷积运算模式对应的卷积尺寸j×j,获取卷积参数,并通过卷积数据寄存器702获取目标卷积数据,分别形成N组尺寸为j×j的卷积参数方阵、j×j的目标卷积方阵,然后通过M个卷积核7061分别对目标卷积方阵和卷积参数方阵进行卷积运算,生成M个卷积结果,从而可以支持N组尺寸为j×j的卷积运算。如此,由于本发明实施例的卷积参数以及卷积数据的获取是基于卷积运算的模式(即对应不同的卷积尺寸)进行获取,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例的卷积运算装置700可以支持不同卷积尺寸的卷积运算。
其中,参数移位寄存器704可配置成:若N=M,则将N组卷积参数方阵中的卷积参数分组输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。若N<M,则将N组卷积参数方阵中的卷积参数、以及(M*i*i-N*j*j)个无效参数依次输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。
以目标卷积模式对应的目标卷积尺寸为3×3(j=3)为例进行说明,假设i=j=3,M=4,即4个卷积核的尺寸均为3×3,则参数移位寄存器获取36个卷积参数并形成4组(N=M=4)3×3的卷积参数方阵分别对应发送于4个卷积核,卷积数据寄存器则获取9个卷积数据,并形成3×3目标卷积方阵共享于4个卷积核,如此,4个卷积核分别根据对应的卷积参数方阵中的卷积参数和目标卷积方阵中的目标卷积数据进行卷积运算,从而生成4组卷积结果数据。
而以目标卷积模式对应的目标卷积尺寸为5×5(j=5)为例进行说明,假设卷积核的尺寸仍然为3×3,即i=3,卷积核的数量为4(M=4),则参数移位寄存器获取25个卷积参数,形成1(N=1)组5×5的卷积参数方阵,并将25个卷积参数(有效参数)与11个0(无效参数)共36个参数分别对应输入给4个卷积核(每个卷积核对应有9个卷积参数)中。卷积数据寄存器则获取25个卷积数据,并与11个0(无效数据)形成卷积数据分别对应输入至4个卷积核中。如此,4个卷积核分别根据对应的卷积参数方阵中的卷积参数和目标卷积方阵中的目标卷积数据进行卷积运算,从而生成4组卷积结果数据。
由此可见,由于本发明实施例的卷积运算装置700基于卷积运算的模式(即对应不同的卷积尺寸)获取卷积参数以及卷积数据,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例的卷积运算装置700可以支持不同卷积尺寸的卷积运算。
在上述一个实施例中,卷积运算装置700包括卷积运算单元706,M个卷积核7061均位于卷积运算单元706中,该卷积运算单元706还包括:偏移量存储器7062,用于存储j×j偏移数据方阵,以在N=M或j=i时,使M个卷积核基于M组卷积结果数据与偏移数据方阵,生成M组累加运算结果。比如,以构建3×3卷积运算为例,4个卷积核根据4组卷积结果数据与偏移数据方阵,即可生成4组卷积结果数据。也就是说,对于所构建的目标卷积运算的卷积尺寸与卷积运算模块中卷积核的卷积尺寸相等的情况,在卷积核进行卷积运算时,在卷积运算单元706内部自动根据偏移量数据、目标卷积数据和卷积参数进行计算以得到卷积结果数据。
在上述另一个实施例中,卷积运算装置700包括:累加运算器710和用于存储j×j偏移数据方阵的偏移量存储器712。其中,累加运算器710用于在N<M或j>i时,基于偏移数据方阵和M组卷积结果数据,得到目标卷积尺寸为j×j的累加运算结果。比如,以构建5×5卷积运算为例,则需要通过5×5累加模块获取5×5偏移数据方阵,以完成4组卷积结果数据与5×5偏移量的累加,从而得到5×5的卷积结果。
即,对于构建j(等于i)的卷积运算,偏移量是在卷积核内部完成运算,而对于构建j(不等于i)的卷积运算,偏移量则是在卷积核根据卷积参数和目标卷积数据完成卷积运算后,通过j×j累加运算模块获取偏移量数据,并通过j×j累加运算模块对偏移量数据和M组卷积运算结果进行累加计算,得到j×j的卷积运算结果。
在上述任一项实施例中,卷积运算装置700还包括池化运算器708,用于对M组卷积结果数据进行池化运算,以得到目标卷积尺寸为j×j的目标卷积结果。
具体来讲,可结合图6进行说明,以i=3,M=4为例,若上述实施例的装置为构建3×3(j=3)的卷积运算装置,则在生成4组卷积结果数据后,4组3×3卷积运算结果为池化运算器的输入数据;若上述实施例的装置为构建5×5(j=5)的卷积运算装置,则在生成4组卷积结果数据后,1组5×5卷积运算结果为池化运算器的输入数据。
池化运算器内部可以为4个基于FIFO的移位数据链,以及一组(共25*4)个数据寄存器和一组控制参数。运算工作时,移位数据链以串行方式或并连方式连接,形成移位数据链。输入数据运算时,从而输入端(即图6中D5的输入端口)逐拍输入移位链,该移位链则根据输入数据逐拍输出5组数据。当Mode_sel(卷积运算模式控制指令)指示3×3模式运算时,从5组数据中,选择连续3组(可1~3,或2~4或3~5)共9个数据进行池化运算,可以配置成Max运算或Min运算等,移位数据链逐拍输出过程中,同时完成池化运算,并降输出池化后的结果作为3×3的目标卷积结果。当Mode_Sel指示5×5模式运算时,对5组数据中共25个数据进行池化运算,可以是Max运算或Min运算等,移位数据链逐拍输出过程中,同时完成池化运算,并将输出池化后的结果作为5×5的目标卷积结果。
在一个具体的实施例中,i=3,M=4,j=3时N=4;或i=3,M=4,j=5时N=1。即本发明一个具体的实施例提供了一种卷积运算装置700,可结合图8进行说明,该卷积运算装置可包括1组卷积数据寄存器702,寄存器组一共25(5×5)个寄存器,用于为卷积运算单元中3×3和5×5卷积核进行卷积运算共享;1组可重构支持3×3和5×5卷积的参数移位寄存器704,参数移位寄存器704内部一共36(4×3×3)个寄存器;4个流水3×3卷积核7061,卷积核由多个乘加器级联组成,卷积核内置3×3计算偏移量Bias寄存器,其原始数据存储在偏移量存储器7062中,运算时从偏移量存储器7062中读取参与运算;1组5×5累加运算器710;5×5卷积运算所需的累加计算偏移量Bias也存放在偏移量存储器712中,运算时实时读取;4组并行Pooling池化运算器708。其中Pooling模块内部是基于FIFO实现的移位数据链,支持Max pooling和Min pooling运算。偏移量存储器712内按地址顺序(升序或降序)存放了Bias参数。运算时,偏移量存储器7062或偏移量存储器712的读地址由BiasAddr寄存器指示,BiasAddr指示当前运算所需要的Bias参数地址,以根据当前运算的进度顺次指示读取偏移量存储器7062或偏移量存储器712内的内容进行卷积累加运算。
由于卷积运算装置700通过参数移位寄存器704基于目标卷积运算模式对应的卷积尺寸j×j,获取卷积参数,并通过卷积数据寄存器702获取目标卷积数据,分别形成N组尺寸为j×j(4组3×3或1组5×5)的卷积参数方阵、j×j(3×3或5×5)的目标卷积方阵,然后通过4个卷积核分别对目标卷积方阵和卷积参数方阵进行卷积运算,生成4个卷积结果,从而可以支持N组尺寸为j×j(4组3×3或1组5×5)的卷积运算。如此,本发明实施例的卷积运算装置700可以支持不同卷积尺寸的卷积运算。
如图9所示,本发明实施例还提供一种卷积运算系统900,包括:移位卷积数据链902,用于响应于输入的卷积运算模式控制指令,向上述任一项实施例所述的卷积运算装置700输入目标卷积数据,以使卷积运算装置基于目标卷积数据形成尺寸为j×j的目标卷积方阵;卷积参数存储器904,用于响应于输入的卷积运算模式控制指令,向上述任一项实施例所述的卷积运算装置700输入卷积参数,以使卷积运算装置基于卷积参数形成N组尺寸为j×j的卷积参数方阵;上述任一项实施例所述的卷积运算装置700,用于基于目标卷积方阵和卷积参数方阵,生成M组卷积结果数据。
由于本发明实施例的卷积运算系统通过上述任一项实施例所述的卷积运算装置700响应输入的卷积运算模式控制指令,接收移位卷积数据链902输出的目标卷积数据并接收卷积参数存储器904输出的卷积参数,并通过上述任一项实施例所述的卷积运算装置700根据目标卷积数据和卷积参数生成M组卷积结果数据。如此,由于发明实施例的卷积参数以及卷积数据的获取是基于卷积运算的模式(即对应不同的卷积尺寸)进行获取,以根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例的卷积运算系统可以支持不同卷积尺寸的卷积运算。
一般,传统卷积运算方法通过复制多个单独的卷积运算单元(包括不同尺寸的卷积核),并行执行卷积运算,由此,在进行卷积运算时,每个卷积运算单元需要加载同一组输入feature map数据,从而会导致输入数据带宽瓶颈或数据重复输入,而降低整个系统的运行效率,此外,该传统卷积运算方法会受限于内部的移位寄存器资源,通过复制多个卷积运算单元完成卷积运算会受到寄存器资源的限制。
为了解决上述技术问题,本发明实施例的卷积运算系统可包括多个卷积运算装置700,多个卷积运算装置700与移位卷积数据链902之间的连接方式,如图10所示,多个卷积运算装置700之间首尾相连,且移位卷积数据链902与位于首端的卷积运算装置700通信连接。
或者,如图11所示,多个卷积运算装置700的输入端相并联,且移位卷积数据链902与多个卷积运算装置700相并连接的输入端相连。
又或者,如图12或图13所示,多个卷积运算装置700之间相混连,即,多个卷积运算装置700之间有相互串联,也有相互并联,但是,移位卷积数据链902与呈混连结构的卷积运算装置700的输入端相连,即将混连结构的卷积运算装置作为整体,将该整体结构的输入端与移位卷积数据链902相连。
由此可见,本发明实施例的卷积运算系统中的多个卷积运算装置700可共享一移位卷积数据链902,在进行规模扩展时的开销比较小,因此,本发明实施例的卷积运算系统具有更好的扩展性,硬件开销小,可通过简单的硬件单元扩展和复制,并可同时处理多个卷积特征图feature map的并行计算。并且,基于移位卷积数据链902、卷积参数存储器904和卷积运算装置700,可实现3×3和5×5等多种尺寸的卷积运算,并可支持池化运算。
此外,卷积运算装置的级联扩展实现方式可以有多种扩展方式,不限于本发明实施例所述的几种连接方式,该卷积运算系统通过简单地复制卷积运算装置,可采用多种方式连接方式,实现较大规模卷积运算的并行处理,具有较好的可扩展性。
需要说明的是,卷积运算装置700采用的重构设计思想,可以构建如3×3、5×5、7×7等卷积运算。比如,在构建5×5的卷积运算时,卷积运算装置700内部需要设置4个3×3的卷积核,可重构支持4组3×3卷积运算,1组5×5卷积运算;在构建7×7的卷积运算时,卷积运算装置700内部需要设置6个3×3的卷积核,可重构支持6组3×3卷积运算,2组5×5卷积运算和1组7×7卷积运算;在构建9×9的卷积运算时,卷积运算装置700内部需要设置12个3×3的卷积核,可重构支持12组3×3卷积运算,4组5×5卷积运算和2组7×7卷积运算,1组9×9卷积运算等等,在此不一一举例说明。
传统的卷积运算方法中,卷积数据寄存器链采用的是通用寄存器,如果长度太大,则一方面会消耗更多的寄存器资源,特别对于输入的卷积数据个数nin很大而无法进行卷积运算的情形,会消耗过多的寄存器资源,即硬件资源开销更大,从而对硬件资源提出了很高的要求。
为了解决上述技术问题,上述实施例的卷积运算系统中的移位卷积数据链902是基于FIFO的移位卷积数据链,可结合图14进行说明,该移位卷积数据链902包括(N-1)个基于FIFO实现的移位数据链。图14中包括4个FIFO实现的移位数据链,在3×3和5×5的卷积运行模式下,可以形成二维卷积数据,逐拍输入到上述任一项实施例所述的卷积运算装置700中。当卷积运算系统工作于3×3卷积运算模式时,卷积运算装置只接收其中的连续的3组(如1~3、2~4或3~5)目标卷积数据;当卷积运算系统工作于5×5卷积运算模式时,卷积运算装置只接收其中的5组目标卷积数据。
应理解,移位卷积数据链902可以为多个卷积运算装置700共享供应数据,即由于多个卷积运算装置700共享移位卷积数据链902输出的卷积数据,因此,可以大幅节省所需要的硬件资源。此外,卷积运算装置700间可采用级联串推的方式,从而便于实现卷积数据的共享。并且,由于FIFO队列可采用sram实现,即移位卷积数据链可作为另一种硬件资源,不占用寄存器,从而可以减小寄存器资源的消耗,因此,可以解决现有技术中需要消耗较多寄存器资源而导致硬件资源开销比较大的问题。
在一个具体的实施例中,结合图8和图9进行说明,本发明实施例的卷积运算系统包括一个基于FIFO的卷积数据移位链902和一个卷积参数存储器904(也可以称为移位链),1组可重构卷积数据寄存器702,1组可重构参数移位寄存器704,4个3×3卷积核7061,1个用于5×5的累加运算器710,1个4路并行的Pooling池化运算器708、偏移量存储器712和偏移量存储器7061。本发明实施例的卷积运算系统的具体实现原理可以为:
移位卷积数据链902部署在卷积运算装置700的外部,负责串行输出一个5×5的数据矩阵,如公式(1)所示:
卷积参数存储器904则输出卷积参数。其中,移位卷积数据链902采用FIFO实现,各卷积运算装置700共享移位一卷积数据链902输出的卷积数据和卷积参数存储器904输出的卷积参数,由此,可极大节省硬件资源,且可扩展性好。
卷积数据寄存器702包括25个卷积数据寄存器(D11~D55),该寄存器组在3×3卷积运算输出的有效数据为:
而5×5卷积运算时,输出有效数据为:
可重构卷积参数包括4组3×3共36个参数移位寄存器:
在运算3×3卷积运算时,(W11~W66)对应4组3×3卷积参数;在运算5×5卷积运算时,有效参数为25个(W11~W55),其余参数为0,即
通过Mode_sel输入的控制指令控制支持3×3和5×5两种卷积运算模式。卷积运算装置包括4个3×3卷积核,内含4个偏移量寄存器。4个卷积核分别采用数据(D11~D55)中对应的卷积数据和参数(W11~W55)中对应的卷积参数,进行卷积乘加运算,形成4个卷积结果R1~R4。
卷积运算装置工作于3×3卷积运算模式时,参数移位寄存器为4个3×3卷积核供应卷积参数,36个参数分成4组,分别输入给4个卷积核进行并行计算。移位卷积数据链,负责输出的3×3矩阵窗口的数据共9个数据,串行写入可重构卷积数据寄存器组,由可重构卷积数据寄存器将9个卷积数据共享输入给4个3×3卷积核。4个卷积核分别从偏移量存储器7062中读取偏移量数据,并与卷积参数、卷积数据完成3×3卷积运算。卷积完成后,4组卷积结果数据并行输入Relu模块完成激活函数运算。完成激活运算后的结果并行输入Pooling模块,根据Pool_len完成池化运算。根据当前计算结果性质,如果是中间结果且总量较小,则将结果存储在内部存储器中,用于后续运算,如果是最终结果或结果量较大,则输出到外部存储器当中。
卷积运算装置还可包括5×5卷积累加运算模块以及5×5卷积偏移量寄存器(Bias)。当卷积运算装置工作于5×5卷积运算模式时,通过5×5卷积累加运算模块完成R1~R4和Bias的累加,从而得到5×5卷积运算结果。
卷积参数存储器输出1组5×5卷积核参数,共36个参数(其中有效数据为W11~W55,共25个,其余数据为0),串行地写入到可重构参数移位寄存器组中,可重构参数移位寄存器组将参数输入给4个3×3卷积核,36个参数分成4组,分别输入给4个卷积核进行并行计算。卷积数据数移位链输出的5×5矩阵窗口的数据共25个数据(D11~D55),串行写入可重构卷积数据寄存器组,形成4组共36个卷积数据,实际有效数据25个,其余数据为0。可重构卷积数据寄存器组将36个卷积数据分别输入给4个3×3卷积核。卷积核设置偏移量数据为0,并与卷积参数、卷积数据完成3×3卷积运算,形成4个卷积结果J1~J4。5×5累加模块负责从偏移量存储器712读取5×5偏移量,并与J1~J4完成累加运算,得到5×5卷积结果。卷积结果输入Pooling模块,根据Pool_len完成池化运算,将结果输出到外部存储器当中。
需要说明的是,如图8所示,卷积运算装置的运行模式由外部输入的控制信号Conv_len(卷积数据移位链长度选择)、Conv_stride(移位数据链步长)、Pool_len(池化移位链长度)、Pool_stride(池化移位链步长)、Mode_sel(卷积运算模式选择)确定。其中,移位链长度选择根据输入feature map数据的长度来配置;3×3卷积运算或5×5卷积运算模式则根据Mode_sel输入的指令进行确定。
在卷积运算装置中,还包括多路选择器714(MUX),以从多个输入里面选择一组数据进行输出。也就是说,当卷积运算装置的运行模式确定3×3卷积运算模式时,则选择一组3×3卷积结果至池化运算器708,池化运算器708基于该组3×3卷积结果和其它三组3×3卷积结果,执行池化运算,从而输出池化运算后的结果作为3×3的目标卷积结果;当卷积运算装置的运行模式确定5×5卷积运算模式时,则选择一组5×5的累加运算结果至池化运算器708,此时,虽然图8中的池化运算器708的输入还包含有3组3×3卷积结果,但由于此时卷积运算装置的运行模式确定5×5卷积运算模式,因此,输入至池化运算器708的三组3×3卷积结果数据此时为无效数据,即池化运算器708只基于一组5×5的累加运算结果进行池化运算,从而得到5×5的目标卷积结果。
如此,本发明实施例的卷积运算系统根据输入的控制信号控制基于FIFO的卷积数据移位链的长度,并根据Mode_Sel决定所内部进行的卷积运算的方式(3×3或5×5),构建支持3×3和5×5卷积运算装置,从而可以支持不同卷积尺寸的卷积运算,解决了现有技术中无法支持多种卷积尺寸的卷积运算的问题。
并且,卷积运算装置接收的卷积数据是基于移位卷积数据链内部的FIFO实现的,在不同尺寸的卷积运算模式时,移位卷积数据链工作时输出的卷积数据可以通过级联方式共享至各卷积运算装置,在进行规模扩展时,硬件开销比较小,因此,本发明实施例的卷积运算系统具有更好的扩展性,硬件开销小,可通过简单的硬件单元扩展和复制,并可同时处理多个卷积特征图feature map的并行计算。
此外,卷积运算系统中的移位卷积数据链902是基于FIFO实现的移位数据链,由于FIFO队列可采用sram实现,即移位卷积数据链可作为另一种硬件资源,不占用寄存器,从而可以减小寄存器资源的消耗,因此,可以解决现有技术中需要消耗较多寄存器资源而导致硬件资源开销比较大的问题。
上述任一项所述的卷积运算方法或卷积运算装置或卷积运算系统主要应用于CNN深度学习领域的图像卷积运算加速领域中,主要用于图像识别,人脸识别等等。
卷积运算系统无论是工作于哪种卷积尺寸的卷积运算,整个系统的运算均是流水运算,而图片的卷积处理性能取决于硬件装置的工作主频和输入图片的大小。
在上述一些实施例中,如图15所示,卷积运算系统900可作为受控终端,响应于控制终端1502发出的卷积运算模式控制指令,确定目标卷积运算模式,以执行上述任一项实施例所述的目标卷积运算。其中,移位卷积数据链902和卷积参数存储器904作为卷积运算系统的控制模块1504,分别接收控制终端1502发出的运算模式控制指令,并分别向卷积运算装置700输入目标卷积数据和卷积参数,以使卷积运算装置根据目标卷积数据和卷积参数生成卷积结果数据。从而可以支持多种尺寸的卷积运算。
当然,在另一些实施例中,如图16所示,卷积运算系统900可包括控制终端和受控终端,其中,卷积运算装置700可作为受控终端,移位卷积数据链902和卷积参数存储器904则作为控制终端1502的控制模块1504,分别向卷积运算装置700输入目标卷积数据和卷积参数,以使卷积运算装置根据目标卷积数据和卷积参数生成卷积结果数据。从而可以支持多种尺寸的卷积运算。
其中,受控终端以及控制终端可以配置为虚拟机、应用程序、运行UI的计算机装置等终端设备。
本发明实施例还提供一种终端设备,如图17所示,该终端设备包括:确定单元1702,用于响应于输入的运算模式控制指令,确定目标卷积运算模式,目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;第一获取单元1704,用于基于目标卷积运算模式,控制参数移位寄存器获取卷积参数,以基于卷积参数形成N组尺寸为j×j的卷积参数方阵,第二获取单元1706控制卷积数据寄存器获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;生成单元1708,用于控制终端设备中M个卷积核,分别基于目标卷积方阵和卷积参数方阵,生成M组卷积结果数据。其中,卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),M>=(j*j)/(i*i),M和N为正整数。此外,N小于或等于M。
由于终端设备通过确定单元1702响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,以确定目标卷积运算模式对应的卷积尺寸j×j,然后通过第一获取单元1704获取卷积参数,并通过第二获取单元1706获取目标卷积数据,分别形成N组尺寸为j×j的卷积参数方阵、j×j的目标卷积方阵,然后通过生成单元1708控制M个卷积核7061分别对目标卷积方阵和卷积参数方阵进行卷积运算,生成M个卷积结果,从而可以支持N组尺寸为j×j的卷积运算。如此,由于本发明实施例的卷积参数以及卷积数据的获取是基于卷积运算的模式(即对应不同的卷积尺寸)进行获取,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例的终端设备可以支持不同卷积尺寸的卷积运算。
在上述实施例中,生成单元1708还可配置成:
若N=M,则将N组卷积参数方阵中的卷积参数分组输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据;若N<M,则将N组卷积参数方阵中的卷积参数、以及(M*i*i-N*j*j)个无效参数依次输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。
由此可见,由于本发明实施例的终端设备基于卷积运算的模式(即对应不同的卷积尺寸)获取卷积参数以及卷积数据,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例的终端设备可以支持不同卷积尺寸的卷积运算。
在上述实施例中,终端设备还包括:第三获取单元1710,用于在N<M时,获取尺寸为j×j的偏移数据方阵;生成单元1708基于偏移数据方阵和M组卷积结果数据,得到N组目标卷积尺寸为j×j的累加运算结果。
对于构建j(等于i)的卷积运算,偏移量是在卷积核内部完成运算,而对于构建j(不等于i)的卷积运算,偏移量则是在卷积核根据卷积参数和目标卷积数据完成卷积运算后,通过j×j累加运算模块获取偏移量数据,并通过j×j累加运算模块对偏移量数据和M组卷积运算结果进行累加计算,得到j×j的卷积运算结果。
在上述任一项实施例中,还包括池化单元1712,用于在N=M时,对M组卷积结果数据进行池化运算,以将池化运算后的结果作为所述目标卷积尺寸为j×j的目标卷积结果;或者,在N<M时,对N组目标卷积尺寸为j×j的累加运算结果进行池化运算,以将池化运算后的结果作为目标卷积尺寸为j×j的目标卷积结果。需要说明的是,本实施例中所揭示的池化单元1712与上文说所揭示的卷积运算装置实例中所揭示的池化运算器708或者卷积运算方法实例中所揭示的池化运算器互为相同或者等同技术特征,并可通过计算机可执行代码(例如采用Java、Python、C#等机器语言或者高级语言)予以实现。
在上述一个具体的实施例中,i=3,M=4,j=3时N=4;或i=3,M=4,j=5时N=1,即在j为3时,本发明实施例的终端设备可支持4组3×3的卷积运算,在j=5时,本发明实施例的方法可支持1组5×5的卷积运算。当然,在i=3,M=6的情况下,j=3或5或7,N=6或2或1,即在j为3时,本发明实施例的终端设备可支持6组3×3的卷积运算,在j=5时,本发明实施例的终端设备可支持2组5×5的卷积运算,在j=7时,本发明实施例的终端设备可支持1组7×7的卷积运算,等等,在此也不一一举例说明。
上述任一项实施例所述的终端设备可以配置为虚拟机、应用程序、运行UI的计算机装置等。
优选地,本发明实施例还提供一种终端设备,其可包括处理器,存储器,存储在存储器上并可在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述图4-5所示的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述图4-5所示的方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (12)
1.一种卷积运算方法,应用于终端设备,其特征在于,包括:
响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,所述目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;
基于目标卷积运算模式,控制参数移位寄存器获取卷积参数,以基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵;
基于目标卷积运算模式,控制卷积数据寄存器获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;
控制所述终端设备中M个卷积核,分别基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据,其中,所述卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),M>=(j*j)/(i*i),M和N为正整数,且N小于或等于M;
若N=M,则在生成M组卷积结果数据之后,还包括:
对M组卷积结果数据进行池化运算,得到所述目标卷积尺寸为j×j的目标卷积结果;
其中,i=3,M=6,j=7时N=1。
2.如权利要求1所述的方法,其特征在于,生成M组卷积结果数据,包括:
若N=M,则将所述N组尺寸为j×j的卷积参数方阵中的卷积参数分组输入至M个卷积核中,以将所述目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据;
若N<M,则将所述N组尺寸为j×j的卷积参数方阵中的卷积参数、以及(M*i*i-N*j*j)个无效参数依次输入至M个卷积核中,以将所述目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。
3.如权利要求1所述的方法,其特征在于,若N<M,则在生成M组卷积结果数据之后,还包括:
获取尺寸为j×j的偏移数据方阵;
基于所述偏移数据方阵和所述M组卷积结果数据,得到N组所述目标卷积尺寸为j×j的累加运算结果。
4.一种卷积运算装置,其特征在于,包括:
M个卷积尺寸为i×i的卷积核、卷积数据寄存器和参数移位寄存器;
所述参数移位寄存器响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,并基于目标卷积运算模式获取卷积参数,以基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵,所述目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;
所述卷积数据寄存器基于所述目标卷积运算模式获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;
所述M个卷积核分别基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据,其中,所述卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),M>=(j*j)/(i*i),M和N为正整数,且N小于或等于M;
若N=M,则在生成M组卷积结果数据之后,还包括:
对M组卷积结果数据进行池化运算,得到所述目标卷积尺寸为j×j的目标卷积结果;
其中,i=3,M=6,j=7时N=1。
5.根据权利要求4所述的装置,其特征在于,还包括:
偏移量存储器,用于存储j×j偏移数据方阵,以在N=M或j=i时,使所述M个卷积核基于所述M组卷积结果数据与所述偏移数据方阵,生成M组累加运算结果。
6.根据权利要求4所述的装置,其特征在于,还包括:
累加运算器和用于存储j×j偏移数据方阵的偏移量存储器;
其中,所述累加运算器用于在N≠M或j≠i时,基于所述偏移数据方阵和所述M组卷积结果数据,得到所述目标卷积尺寸为j×j的累加运算结果。
7.根据权利要求4所述的装置,其特征在于,还包括:
池化运算器,用于对M组卷积结果数据进行池化运算,以得到所述目标卷积尺寸为j×j的目标卷积结果。
8.一种卷积运算系统,其特征在于,包括:
移位卷积数据链,用于响应于输入的卷积运算模式控制指令,向如权利要求4-7任一项所述的卷积运算装置输入目标卷积数据,以使所述卷积运算装置基于所述目标卷积数据形成尺寸为j×j的目标卷积方阵;
卷积参数存储器,用于响应于输入的卷积运算模式控制指令,向如权利要求4-7任一项所述的卷积运算装置输入卷积参数,以使所述卷积运算装置基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵;
以及,
如权利要求4-7任一项所述的卷积运算装置,用于基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据。
9.根据权利要求8所述的系统,其特征在于,包括:
所述卷积运算装置为多个,多个所述卷积运算装置之间首尾相连,且所述移位卷积数据链与位于首端的卷积运算装置通信连接;或
多个所述卷积运算装置之间相互并联,且所述移位卷积数据链与多个所述卷积运算装置相并连接的一端相连。
10.一种终端设备,其特征在于,包括:
确定单元,用于响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,所述目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;
获取单元,用于基于目标卷积运算模式,控制参数移位寄存器获取卷积参数,以基于所述卷积参数形成N组尺寸为j×j的卷积参数方阵,并控制卷积数据寄存器获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;
生成单元,用于控制所述终端设备中M个卷积核,分别基于所述目标卷积方阵和所述卷积参数方阵,生成M组卷积结果数据,其中,所述卷积核的卷积尺寸为i×i,i=2m+1,j=2n+1,m,n为正整数,M=2k,k为大于1的正整数,N=(M*i*i)/(j*j),M>=(j*j)/(i*i),M和N为正整数,且N小于或等于M;
其中,i=3,M=6,j=7时N=1。
11.一种终端设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至3中任一项所述的方法的步骤。
12.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910664359.1A CN110414672B (zh) | 2019-07-23 | 2019-07-23 | 卷积运算方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910664359.1A CN110414672B (zh) | 2019-07-23 | 2019-07-23 | 卷积运算方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110414672A CN110414672A (zh) | 2019-11-05 |
CN110414672B true CN110414672B (zh) | 2022-11-01 |
Family
ID=68362515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910664359.1A Active CN110414672B (zh) | 2019-07-23 | 2019-07-23 | 卷积运算方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110414672B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110929860B (zh) * | 2019-11-07 | 2020-10-23 | 深圳云天励飞技术有限公司 | 一种卷积加速运算方法、装置、存储介质及终端设备 |
CN112464150A (zh) * | 2020-11-06 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种基于fpga实现数据卷积运算的方法、装置和介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180109619A (ko) * | 2017-03-28 | 2018-10-08 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10032110B2 (en) * | 2016-12-13 | 2018-07-24 | Google Llc | Performing average pooling in hardware |
KR102642853B1 (ko) * | 2017-01-05 | 2024-03-05 | 한국전자통신연구원 | 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법 |
CN106951395B (zh) * | 2017-02-13 | 2018-08-17 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
CN107169560B (zh) * | 2017-04-19 | 2020-10-16 | 清华大学 | 一种自适应可重构的深度卷积神经网络计算方法和装置 |
US10552663B2 (en) * | 2017-05-02 | 2020-02-04 | Techcyte, Inc. | Machine learning classification and training for digital microscopy cytology images |
CN108241890B (zh) * | 2018-01-29 | 2021-11-23 | 清华大学 | 一种可重构神经网络加速方法及架构 |
CN108875917A (zh) * | 2018-06-28 | 2018-11-23 | 中国科学院计算技术研究所 | 一种用于卷积神经网络处理器的控制方法及装置 |
CN109034373B (zh) * | 2018-07-02 | 2021-12-21 | 鼎视智慧(北京)科技有限公司 | 卷积神经网络的并行处理器及处理方法 |
CN109886400B (zh) * | 2019-02-19 | 2020-11-27 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
-
2019
- 2019-07-23 CN CN201910664359.1A patent/CN110414672B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180109619A (ko) * | 2017-03-28 | 2018-10-08 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的卷积神经网络并行加速结构设计;刘志成 等;《微电子学与计算机》;20181031;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110414672A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN108205701B (zh) | 一种执行卷积计算的系统及方法 | |
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
JP7358382B2 (ja) | 演算を加速するための加速器及びシステム | |
CN107169560B (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN106228238B (zh) | 现场可编程门阵列平台上加速深度学习算法的方法和系统 | |
US7574466B2 (en) | Method for finding global extrema of a set of shorts distributed across an array of parallel processing elements | |
KR20200143685A (ko) | 연산을 가속하기 위한 방법 및 가속기 장치 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN107657581A (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN108416437A (zh) | 用于乘加运算的人工神经网络的处理系统及方法 | |
KR20180123846A (ko) | 합성곱 신경망을 위한 논리적 3차원 구조의 재구성형 연산 가속기 | |
CN113076521B (zh) | 一种基于gpgpu可重构架构的方法及计算系统 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN110377874B (zh) | 卷积运算方法及系统 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
Liu et al. | WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs | |
CN109146065A (zh) | 二维数据的卷积运算方法及装置 | |
CN112488296A (zh) | 基于硬件环境的数据操作方法、装置、设备及存储介质 | |
CN112884137A (zh) | 神经网络的硬件实现方式 | |
CN114461978A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN114358237A (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 |