CN110377874A - 卷积运算方法及*** - Google Patents

卷积运算方法及*** Download PDF

Info

Publication number
CN110377874A
CN110377874A CN201910664358.7A CN201910664358A CN110377874A CN 110377874 A CN110377874 A CN 110377874A CN 201910664358 A CN201910664358 A CN 201910664358A CN 110377874 A CN110377874 A CN 110377874A
Authority
CN
China
Prior art keywords
convolution
convolution algorithm
data
target
algorithm
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.)
Granted
Application number
CN201910664358.7A
Other languages
English (en)
Other versions
CN110377874B (zh
Inventor
臧春峰
王斌
严大卫
黄丽民
陈芬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Dingxue Network Technology Co Ltd
Original Assignee
Jiangsu Dingxue Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Dingxue Network Technology Co Ltd filed Critical Jiangsu Dingxue Network Technology Co Ltd
Priority to CN201910664358.7A priority Critical patent/CN110377874B/zh
Publication of CN110377874A publication Critical patent/CN110377874A/zh
Application granted granted Critical
Publication of CN110377874B publication Critical patent/CN110377874B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供了一种卷积运算方法及***,该方法包括:响应于输入的卷积运算模式控制指令,控制移位卷积数据链向卷积运算装置输入目标卷积数据,移位卷积数据链为FIFO队列,FIFO队列存储有目标卷积数据;控制卷积参数存储器向卷积运算装置输入卷积参数;控制卷积运算装置基于目标卷积数据和卷积参数,生成卷积结果数据。本发明解决了现有技术中通过采用通用寄存器的移位寄存器链实现卷积运算而导致硬件资源开销较大的问题。

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所示的单通道卷积运算。
针对二维划窗操作,可通过移位寄存器链实现卷积运算,传统的卷积数据寄存器链采用的是通用寄存器,如果卷积数据寄存器链的长度太大,则会消耗更多的寄存器资源,特别是对于输入的卷积数据个数nin很大而无法进行卷积运算的情形,会消耗过多的寄存器资源,导致硬件资源开销更大,从而对硬件资源提出了很高的要求。
发明内容
本发明的目的在于提供一种卷积运算方法及***,以解决现有技术中通过采用通用寄存器的移位寄存器链实现卷积运算而导致硬件资源开销较大的问题。
为实现上述目的,本发明是这样实现的:
第一方面,提供了一种卷积运算方法,应用于终端设备,包括:
响应于输入的卷积运算模式控制指令,控制移位卷积数据链向卷积运算装置输入目标卷积数据,所述移位卷积数据链为FIFO队列,所述FIFO队列存储有所述目标卷积数据;
控制卷积参数存储器向卷积运算装置输入卷积参数;
控制所述卷积运算装置基于所述目标卷积数据和所述卷积参数,生成卷积结果数据。
第二方面,本发明还提供一种卷积运算***,其包括:
移位卷积数据链,用于响应于输入的卷积运算模式控制指令,向卷积运算装置输入目标卷积数据,所述移位卷积数据链为FIFO队列,所述FIFO队列存储有所述目标卷积数据;
卷积参数存储器,用于向所述卷积运算装置输入卷积参数;
卷积运算装置,用于基于所述目标卷积数据和所述卷积参数数据,生成卷积结果数据。
第三方面,本发明还一种终端设备,包括:
第一控制单元,响应于输入的卷积运算模式控制指令,控制移位卷积数据链向卷积运算装置输入目标卷积数据,所述移位卷积数据链为FIFO队列,所述FIFO队列存储有所述目标卷积数据;
第二控制单元,控制卷积参数存储器向卷积运算装置输入卷积参数;
第三控制单元,控制所述卷积运算装置基于所述目标卷积数据和所述卷积参数,生成卷积结果数据。
第四方面,本发明还提供一种终端设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本发明还一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。
本发明实施例的卷积运算方法通过采用先入先出FIFO队列的移位卷积数据链存储卷积数据,以在卷积运算时,通过FIFO队列输出目标卷积数据,从而使卷积运算装置根据接收的目标卷积数据和卷积参数执行卷积运算。由于FIFO队列一般是基于易失性存储介质实现,由此,移位卷积数据链中的目标卷积数据不占用寄存器资源,因此,可以节约寄存器资源,从而降低硬件资源开销,解决了现有技术中通过采用通用寄存器的移位寄存器链实现卷积运算而导致硬件资源开销较大的问题。
附图说明
图1为AlexNet的示意性结构图;
图2为三维卷积运算的示意性原理图;
图3为二维卷积运算的示意性原理图;
图4为根据本发明一个实施例的卷积运算方法的示意性流程图;
图5为根据本发明另一个实施例的卷积运算***的示意性结构原理图;
图6为根据本发明另一个实施例的卷积运算方法的示意性流程图;
图7为根据本发明一个实施例的池化运算模块的示意性结构图;
图8为根据本发明一个实施例的卷积运算***的示意性结构图;
图9为根据本发明一个实施例的卷积运算***中移位卷积数据链与卷积运算装置的示意性连接结构图;
图10为根据本发明另一个实施例的卷积运算***中移位卷积数据链与卷积运算装置的示意性连接结构图;
图11为根据本发明再一个实施例的卷积运算***中移位卷积数据链与卷积运算装置的示意性连接结构图;
图12为根据本发明再一个实施例的卷积运算***中移位卷积数据链与卷积运算装置的示意性连接结构图;
图13为根据本发明一个实施例的卷积运算装置的示意性结构图;
图14为根据本发明一个实施例的卷积运算装置的示意性原理图;
图15为根据本发明一个实施例的卷积运算***与控制终端的示意性连接结构图;
图16为根据本发明另一个实施例的卷积运算***的示意性结构原理图;
图17为根据本发明一个实施例的终端设备的示意性结构图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
以下结合附图,详细说明本发明各实施例提供的技术方案。
图4为根据本发明一个实施例的卷积运算方法的示意性流程图,以解决了现有技术中通过采用通用寄存器的移位寄存器链实现卷积运算而导致硬件资源开销较大的问题。本发明实施例的方法应用于终端设备,该方法可包括:
步骤402.终端设备响应于输入的卷积运算模式控制指令,控制移位卷积数据链向卷积运算装置输入目标卷积数据,移位卷积数据链为FIFO队列,FIFO队列存储有所述目标卷积数据。
步骤404.终端设备控制卷积参数存储器向卷积运算装置输入卷积参数。
需要说明的是,当确定目标卷积运算模式后,“控制移位卷积数据链向卷积运算装置输入目标卷积数据”的操作步骤也可在“控制卷积参数存储器向卷积运算装置输入卷积参数”之后执行,或者“控制移位卷积数据链向卷积运算装置输入目标卷积数据”和“控制卷积参数存储器向卷积运算装置输入卷积参数”可以同时执行,不限于本发明实施例所述的执行步骤。
另外,卷积参数存储器向卷积运算装置输入卷积参数,也可以解释为卷积运算装置加载卷积参数存储器中的卷积参数,即卷积运算装置可从卷积参数存储器中获取到卷积参数即可。
步骤406.终端设备控制卷积运算装置基于目标卷积数据和卷积参数,生成卷积结果数据。
本发明实施例的卷积运算方法通过采用先入先出FIFO队列的移位卷积数据链存储卷积数据,以在卷积运算时,通过FIFO队列输出目标卷积数据,从而使卷积运算装置根据接收的目标卷积数据和卷积参数执行卷积运算。由于FIFO队列一般是基于易失性存储介质实现,由此,移位卷积数据链中的目标卷积数据不占用寄存器资源,因此,可以节约寄存器资源,从而降低硬件资源开销,解决了现有技术中通过采用通用寄存器的移位寄存器链实现卷积运算而导致硬件资源开销较大的问题。
在上述实施例中,在控制移位卷积数据链向卷积运算装置输入目标卷积数据之前,还包括:
响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,目标卷积运算模式对应的卷积运算的最大卷积尺寸为J×J。
应理解,卷积运算方法的卷积运算模式可通过输入的控制指令进行控制,比如,当输入的控制指令对应的卷积运算模式为3×3卷积运算模式时,则该模式对应的卷积尺寸为3×3;当输入的控制指令对应的卷积运算模式为5×5卷积运算模式时,则该模式对应的卷积尺寸为5×5;当输入的控制指令对应的卷积运算模式为7×7卷积运算模式时,则该模式对应的卷积尺寸为7×7,等等,在此不一一举例说明。即,j=2n+1,n为正整数。
若目标卷积运算模式对应的卷积运算的最大卷积尺寸为J×J,则FIFO队列的数量为J-1。
可以理解的是,移位卷积数据链可以由多个FIFO队列构成,即在确定目标卷积模式后,按照目标卷积模式对应的卷积尺寸选择多个FIFO队列中的几个(或者所有FIFO队列)向卷积运算装置输入目标卷积数据。一般,若FIFO队列的数量大于目标卷积尺寸j×j,则会从FIFO队列中选择与目标卷积尺寸相同的j个FIFO队列输出的数据至卷积运算装置,以使卷积运算装置根据j个FIFO队列输出的卷积数据以及卷积参数存储输出的卷积参数生成卷积结果数据。
如图5所示,移位卷积数据链内部可包括4个FIFO队列,多条数据链以串行方式或并联方式连接,形成移位卷积数据链,由此,该移位卷积数据链最多可输出5组卷积数据至卷积运算装置,即,可支持最大卷积尺寸为5×5的卷积运算。具体而言,在接收到运算模式控制指令后,若卷积运算模式对应的卷积尺寸为3×3,则卷积运算装置只接收移位卷积数据链中的其中3组卷积数据,以在卷积运算装置执行相应的卷积运算;若卷积运算模式对应的卷积尺寸为5×5,则卷积运算装置接收移位卷积数据链的所有组(即5组)卷积数据,从而完成目标尺寸的卷积运算。由于FIFO队列一般是基于易失性存储介质实现,由此,移位卷积数据链中的目标卷积数据不占用寄存器资源,以降低硬件资源开销。
一般卷积运算根据尺寸N的不同,所需的卷积数据和卷积参数的个数均为N2,由于卷积数据移位寄存器链中的移位链的数量是一定的,按其设计原理每移位一次,提供一定数量的卷积数据和卷积参数,因此,当卷积尺寸发生变化时,需要修改移位链层数以及移位链中寄存器的个数来适配不同卷积尺寸的卷积运算。由此,对于已经设置好的卷积运算结构,无法在不改***件结构的情况下,支持多种尺寸的卷积运算。
为了解决上述技术问题,在图4的实施例中的控制移位卷积数据链向卷积运算装置输入目标卷积数据之后,包括:控制卷积运算装置基于目标卷积数据,生成尺寸为j×j的目标卷积方阵,其中,目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j。
需要说明的是,卷积尺寸J×J表示目标卷积运算模式对应的卷积运算的最大卷积尺寸,卷积尺寸j×j则表示目标卷积运算模式对应的目标卷积尺寸,即j小于或等于J。
在控制卷积参数存储器向卷积运算装置输入卷积参数之后,包括:控制卷积运算装置基于卷积参数,生成N组尺寸为j×j的卷积参数方阵;
当确定目标卷积运算模式(即确定目标卷积尺寸)后,可确定本发明实施例的卷积运算方法执行N组j×j卷积运算。由此,卷积运算装置根据目标卷积运算模式,顺序接收N组j×j卷积核的(共N*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。
应理解,本发明实施例的卷积运算装置可配置M个卷积核,并使M个卷积核分别对目标卷积方阵和卷积参数方阵进行卷积运算,从而生成M组卷积结果数据。可以理解的是,在确定目标卷积模式后,本发明实施例的方法可执行目标卷积尺寸的卷积运算的组数N是根据所配置的卷积核的数量以及卷积核的尺寸i×i所确定,即N=(M*i*i)/(j*j),N为正整数。
由于卷积运算方法基于目标卷积运算模式对应的卷积尺寸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的卷积核构建不同尺寸的卷积运算。
如图6所示,在上述进一步的实施例中,若N<M或j>i,则在生成M组卷积结果数据之后,还包括:
步骤602.终端设备获取尺寸为j×j的偏移数据方阵。
步骤604.终端设备控制卷积运算装置基于偏移数据方阵和M组卷积结果数据,得到目标卷积尺寸为j×j的累加运算结果。
步骤606.终端设备控制卷积运算装置对累加运算结果进行池化运算,得到目标卷积尺寸为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×3,则窗口数据为9,然后对输入的9个数据计算平均数Average,形成池化计算结果。Max Pooling计算是将平均计算改成求最大值计算,Min Pooling计算是进行求最小值。
可参照图7进行说明,以i=3,M=4为例,若上述实施例的方法为构建3×3(j=3)的卷积运算方法,则在生成4组卷积结果数据后,4组3×3卷积运算结果为池化运算器的输入数据,即4组数据合并成一组数据同时输入至池化运算器中;若上述实施例的方法为构建5×5(j=5)的卷积运算方法,则在生成4组卷积结果数据后,1组5×5卷积运算结果为池化运算器的输入数据。
如图7所示,池化运算器内部可以为4个基于FIFO的移位数据链,以及一组(共25*4)个数据寄存器和一组控制参数。池化运算器运算时,移位数据链以串行方式或并行方式连接,形成移位数据链。基于控制参数输入数据运算时,从而输入端(即图7中的Row54)逐拍输入移位数据链,该移位数据链则根据输入端所输入移位数据链逐拍输出5组数据。当Mode_sel(卷积运算模式控制指令)指示3×3卷积运算模式时,从5组数据中,选择连续3组(可1~3,或2~4或3~5)共9个数据进行池化运算,可以配置成Max运算或Min运算等,移位数据链逐拍输出过程中,同时完成池化运算,并将输出池化后的结果作为3×3的目标卷积结果(即图7中的3×3Pooling 4D输出)。当Mode_Sel指示5×5模式运算时,对5组数据中共25个数据进行池化运算,可以是Max运算或Min运算等,移位数据链逐拍输出过程中,同时完成池化运算,并将输出池化运算后的结果作为5×5的目标卷积结果(即图7中的5×5Pooling 1D输出)。
本发明实施例还提供一种卷积运算***,如图8所示,包括:移位卷积数据链802,用于响应于输入的卷积运算模式控制指令,向卷积运算装置输入目标卷积数据,移位卷积数据链为FIFO队列,FIFO队列存储有目标卷积数据;卷积参数存储器804,用于向卷积运算装置输入卷积参数;卷积运算装置900,用于基于目标卷积数据和卷积参数数据,生成卷积结果数据。
本发明实施例的卷积运算***通过采用先入先出FIFO队列的移位卷积数据链存储卷积数据,以在卷积运算时,通过FIFO队列输出目标卷积数据,从而使卷积运算装置根据接收的目标卷积数据和卷积参数执行卷积运算。由于FIFO队列一般是基于易失性存储介质实现,由此,移位卷积数据链中的目标卷积数据不占用寄存器资源,因此,可以节约寄存器资源,从而降低硬件资源开销,解决了现有技术中通过采用通用寄存器的移位寄存器链实现卷积运算而导致硬件资源开销较大的问题。
在上述实施例中,FIFO队列的数量为J-1,其中,目标卷积运算模式对应的卷积运算的最大卷积尺寸为J×J,所述目标卷积运算模式基于输入的卷积运算模式控制指令进行确定。
可以理解的是,移位卷积数据链可以由多个FIFO队列构成,即在根据输入的卷积运算模式控制指令确定目标卷积模式后,按照目标卷积模式对应的卷积尺寸选择多个FIFO队列中的几个(或者所有FIFO队列)向卷积运算装置输入目标卷积数据。一般,若FIFO队列的数量大于目标卷积尺寸j×j,则会从FIFO队列中选择与目标卷积尺寸相同的j个FIFO队列输出的数据至卷积运算装置,以使卷积运算装置根据j个FIFO队列输出的卷积数据以及卷积参数存储输出的卷积参数生成卷积结果数据,从而完成目标尺寸的卷积运算。由于FIFO队列一般是基于易失性存储介质实现,由此,移位卷积数据链中的目标卷积数据不占用寄存器资源,以降低硬件资源开销。
一般,传统卷积运算方法通过复制多个单独的卷积运算单元(包括不同尺寸的卷积核),并行执行卷积运算,由此,在进行卷积运算时,每个卷积运算单元需要加载同一组输入feature map数据,从而会导致输入数据带宽瓶颈或数据重复输入,而降低整个***的运行效率,此外,该传统卷积运算方法会受限于内部的移位寄存器资源,通过复制多个卷积运算单元完成卷积运算会受到寄存器资源的限制。
为了解决上述技术问题,本发明实施例的卷积运算***800可包括多个卷积运算装置900,多个卷积运算装置900与移位卷积数据链802之间的连接方式,如图9所示,多个卷积运算装置900之间首尾相连,且移位卷积数据链802与位于首端的卷积运算装置900通信连接。
或者,如图10所示,多个卷积运算装置900的输入端相并联,且移位卷积数据链802与多个卷积运算装置900相并连接的输入端相连。
又或者,如图11或图12所示,多个卷积运算装置900之间相混连,即,多个卷积运算装置900之间有相互串联,也有相互并联,但是,移位卷积数据链802与呈混连结构的卷积运算装置900的输入端相连,即将混连结构的卷积运算装置作为整体,将该整体结构的输入端与移位卷积数据链802相连。
由此可见,本发明实施例的卷积运算***中的多个卷积运算装置900可共享一移位卷积数据链802,在进行规模扩展时的开销比较小,因此,本发明实施例的卷积运算***具有更好的扩展性,硬件开销小,可通过简单的硬件单元扩展和复制,并可同时处理多个卷积特征图feature map的并行计算。并且,基于移位卷积数据链802、卷积参数存储器804和卷积运算装置900,可实现3×3和5×5等多种尺寸的卷积运算,并可支持池化运算。
此外,卷积运算装置的级联扩展实现方式可以有多种扩展方式,不限于本发明实施例所述的几种连接方式,该卷积运算***通过简单地复制卷积运算装置,可采用多种方式连接方式,实现较大规模卷积运算的并行处理,具有较好的可扩展性。
需要说明的是,卷积运算装置900采用的重构设计思想,可以构建如3×3、5×5、7×7等卷积运算。比如,在构建5×5的卷积运算时,卷积运算装置900内部需要设置4个3×3的卷积核,可重构支持4组3×3卷积运算,1组5×5卷积运算;在构建7×7的卷积运算时,卷积运算装置900内部需要设置6个3×3的卷积核,可重构支持6组3×3卷积运算,2组5×5卷积运算和1组7×7卷积运算;在构建9×9的卷积运算时,卷积运算装置900内部需要设置12个3×3的卷积核,可重构支持12组3×3卷积运算,4组5×5卷积运算和2组7×7卷积运算,1组9×9卷积运算等等,在此不一一举例说明。
上述任一项实施例中的卷积运算***800中的卷积运算装置900可作为卷积运算***800的一部分,也可以作为一个独立的整体。当卷积运算装置900作为一个独立的整体(比如作为一个独立的设备或者是具有UI界面的计算机装置等)时,其可接收移位卷积数据链802输出的卷积数据、以及卷积参数存储器804输出的卷积参数,并根据卷积数据和卷积参数进行卷积运算,生成卷积结果数据。
具体而言,本发明实施例还可以提供一种卷积运算装置900,如图13所示,其可包括M个卷积尺寸为i×i的卷积核9061、卷积数据寄存器902和参数移位寄存器904;参数移位寄存器904响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,并基于目标卷积运算模式获取卷积参数,以基于卷积参数形成N组尺寸为j×j的卷积参数方阵,目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;卷积数据寄存器902基于目标卷积运算模式获取目标卷积数据,以形成尺寸为j×j的目标卷积方阵;M个卷积核9061分别基于目标卷积方阵和卷积参数方阵,生成M组卷积结果数据。其中,卷积核9061的卷积尺寸为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。
由于卷积运算装置900通过参数移位寄存器904基于目标卷积运算模式对应的卷积尺寸j×j,获取卷积参数,并通过卷积数据寄存器902获取目标卷积数据,分别形成N组尺寸为j×j的卷积参数方阵、j×j的目标卷积方阵,然后通过M个卷积核9061分别对目标卷积方阵和卷积参数方阵进行卷积运算,生成M个卷积结果,从而可以支持N组尺寸为j×j的卷积运算。如此,由于本发明实施例的卷积参数以及卷积数据的获取是基于卷积运算的模式(即对应不同的卷积尺寸)进行获取,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例的卷积运算装置900可以支持不同卷积尺寸的卷积运算。
其中,参数移位寄存器904可配置成:若N=M,则将N组卷积参数方阵中的卷积参数分组输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。若N<M,则将N组卷积参数方阵中的卷积参数、以及(M*i*i-N*j*j)个无效参数依次输入至M个卷积核中,以将目标卷积方阵分别与每一卷积核中的卷积参数进行卷积运算,生成M组卷积结果数据。
由于本发明实施例的卷积运算装置900基于卷积运算的模式(即对应不同的卷积尺寸)获取卷积参数以及卷积数据,以通过M个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例的卷积运算装置900可以支持不同卷积尺寸的卷积运算。
在上述一个实施例中,卷积运算装置900包括卷积运算单元906,M个卷积核9061均位于卷积运算单元906中,该卷积运算单元906还包括:偏移量存储器9062,用于存储j×j偏移数据方阵,以在N=M或j=i时,使M个卷积核基于M组卷积结果数据与偏移数据方阵,生成M组累加运算结果。比如,以构建3×3卷积运算为例,4个卷积核根据4组卷积结果数据与偏移数据方阵,即可生成4组卷积结果数据。也就是说,对于所构建的目标卷积运算的卷积尺寸与卷积运算模块中卷积核的卷积尺寸相等的情况,在卷积核进行卷积运算时,在卷积运算单元906内部自动根据偏移量数据、目标卷积数据和卷积参数进行计算以得到卷积结果数据。
在上述另一个实施例中,卷积运算装置900包括:累加运算器910和用于存储j×j偏移数据方阵的偏移量存储器912。其中,累加运算器910用于在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的卷积运算结果。
在上述任一项所述的卷积运算装置的实施例中,卷积运算装置900还包括池化运算器908,用于对M组卷积结果数据进行池化运算,以得到目标卷积尺寸为j*j的目标卷积结果。
具体来讲,可结合图7进行说明,以i=3,M=4为例,若上述实施例的装置为构建3×3(j=3)的卷积运算装置,则在生成4组卷积结果数据后,4组3×3卷积运算结果为池化运算器的输入数据;若上述实施例的装置为构建5×5(j=5)的卷积运算装置,则在生成4组卷积结果数据后,1组5×5卷积运算结果为池化运算器的输入数据。
在一个具体的实施例中,i=3,M=4,j=3时N=4,或j=5时N=1。即本发明一个具体的实施例提供了一种卷积运算装置900,可结合图14进行说明,该卷积运算装置可包括1组卷积数据寄存器902,寄存器组一共25(5×5)个寄存器,用于为卷积运算单元中3×3和5×5卷积核9061进行卷积运算共享;1组可重构支持3×3和5×5卷积的参数移位寄存器904,参数移位寄存器904内部一共36(4×3×3)个寄存器;4个流水3×3卷积核9061,卷积核9061由多个乘加器级联组成,卷积核9061内置3×3计算偏移量Bias寄存器,其原始数据存储在偏移量存储器9062中,运算时从偏移量存储器9062中读取参与运算;1组5×5累加运算器910;5×5卷积运算所需的累加计算偏移量Bias也存放在偏移量存储器912中,运算时实时读取;4组并行Pooling池化运算器908。其中Pooling单元内部是基于FIFO实现的移位数据链,支持Max pooling和Min pooling运算。偏移量存储器9062和偏移量存储器912内按地址顺序(升序或降序)存放了Bias参数。运算时,偏移量存储器9062和偏移量存储器912的读地址由BiasAddr寄存器指示,BiasAddr指示当前所运算所需要的Bias参数地址,以根据当前运算的进度顺次指示读取偏移量存储器9062或偏移量存储器912内留存的数据进行卷积累加运算。
由于卷积运算装置900通过参数移位寄存器904基于目标卷积运算模式对应的卷积尺寸j×j,获取卷积参数,并通过卷积数据寄存器902获取目标卷积数据,分别形成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)的卷积运算。如此,本发明实施例的卷积运算装置900可以支持不同卷积尺寸的卷积运算。
在另一个具体的实施例中,结合图8和图14进行说明,本发明实施例的卷积运算***包括一个基于FIFO的卷积数据移位链802和一个卷积参数存储器804(也可以称为移位链),1组可重构卷积数据寄存器902,1组可重构参数移位寄存器904,4个3×3卷积核9061,1个用于5×5的累加运算器910,1个4组并行的Pooling池化运算器908、偏移量存储器912和偏移量存储器9062。本发明实施例的卷积运算***的具体实现原理可以为:
移位卷积数据链802部署在卷积运算装置900的外部,负责串行输出一个5×5的数据矩阵,如公式(1)所示:
卷积参数存储器804则输出卷积参数。其中,移位卷积数据链902采用FIFO实现,各卷积运算装置900共享移位一卷积数据链802输出的卷积数据和卷积参数存储器804输出的卷积参数,由此,可极大节省硬件资源,且可扩展性好。
可重构卷积数据寄存器组(即图13中的卷积数据寄存器902)包括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卷积运算模式时,参数移位寄存器904为4个3×3卷积核供应卷积参数,36个参数分成4组,分别输入给4个卷积核进行并行计算。移位卷积数据链802负责输出的3×3矩阵窗口的数据共9个数据,串行写入可重构卷积数据寄存器902,由可重构卷积数据寄存器将9个卷积数据共享输入给4个3×3卷积核。4个卷积核分别从偏移量存储器9062中读取偏移量数据,并与卷积参数、卷积数据完成3×3卷积运算。卷积完成后,4组卷积结果数据并行输入Relu模块完成激活函数运算。完成激活运算后的结果并行输入Pooling模块,根据Pool_len完成池化运算。根据当前计算结果性质,如果是中间结果且总量较小,则将结果存储在内部存储器中,用于后续运算,如果是最终结果或结果量较大,则输出到外部存储器当中。
卷积运算装置900还可包括5×5卷积累加运算器910以及5×5卷积偏移量存储器912。当卷积运算装置工作于5×5卷积运算模式时,通过5×5累加运算器910完成R1~R4和Bias的累加,从而得到5×5卷积运算结果。
卷积运算装置900工作于5×5卷积运算模式时,卷积参数存储器804输出1组5×5卷积核参数,共36个参数(其中有效数据为W11~W55,共25个,其余数据为0),串行地写入到可重构参数移位寄存器904中,可重构参数移位寄存器组将参数输入给4个3×3卷积核,36个参数分成4组,分别输入给4个卷积核进行并行计算。卷积数据数移位链输出的5×5矩阵窗口的数据共25个数据(D11~D55),串行写入可重构卷积数据寄存器902,形成4组共36个卷积数据,实际有效数据25个,其余数据为0。可重构卷积数据寄存器将36个卷积数据分别输入给4个3×3卷积核。卷积核设置偏移量数据为0,并与卷积参数、卷积数据完成3×3卷积运算,形成4个卷积结果J1~J4。5×5累加运算器910负责从偏移量存储器912读取5×5偏移量,并与J1~J4完成累加运算,得到5×5卷积结果。卷积结果输入Pooling模块,根据Pool_len完成池化运算,将结果输出到外部存储器当中。
需要说明的是,如图14所示,卷积运算装置的运行模式由外部输入的控制信号Conv_len(卷积数据移位链长度选择)、Conv_stride(移位数据链步长)、Pool_len(池化移位链长度)、Pool_stride(池化移位链步长)、Mode_sel(卷积运算模式选择)确定。其中,移位链长度选择根据输入feature map数据的长度来配置;3×3卷积运算或5×5卷积运算模式则根据Mode_sel输入的指令进行确定。
在卷积运算装置中,还包括多路选择器914(MUX),以从多个输入里面选择一组数据进行输出。也就是说,当卷积运算装置的运行模式确定3×3卷积运算模式时,则选择一组3×3卷积结果至池化运算器908,池化运算器908基于该组3×3卷积结果和其它三组3×3卷积结果,执行池化运算,从而输出池化运算后的结果作为3×3的目标卷积结果;当卷积运算装置的运行模式确定5×5卷积运算模式时,则选择一组5×5的累加运算结果至池化运算器908,此时,虽然图14中的池化运算器908的输入还包含有3组3×3卷积结果,但由于此时卷积运算装置的运行模式确定5×5卷积运算模式,因此,输入至池化运算器908的三组3×3卷积结果数据此时为无效数据,即池化运算器908只基于一组5×5的累加运算结果进行池化运算,从而得到5×5的目标卷积结果。
如此,本发明实施例的卷积运算***根据输入的控制信号控制基于FIFO的卷积数据移位链的长度,并根据Mode_Sel决定内部进行的卷积运算的方式(3×3或5×5),构建支持3×3和5×5卷积运算装置,从而可以支持不同卷积尺寸的卷积运算,解决了现有技术中无法支持多种卷积尺寸的卷积运算的问题。
并且,卷积运算装置接收的卷积数据是基于移位卷积数据链内部的FIFO实现的,在不同尺寸的卷积运算模式时,移位卷积数据链工作时输出的卷积数据可以通过级联方式共享至各卷积运算装置,在进行规模扩展时,硬件开销比较小,因此,本发明实施例的卷积运算***具有更好的扩展性,硬件开销小,可通过简单的硬件单元扩展和复制,并可同时处理多个卷积特征图feature map的并行计算。
此外,卷积运算***中的移位卷积数据链802是基于FIFO实现的移位数据链,由于FIFO队列可采用sram(静态随机存取存储器)实现,即移位卷积数据链可作为另一种硬件资源,不占用寄存器,从而可以减小寄存器资源的消耗,因此,可以解决现有技术中需要消耗较多寄存器资源而导致硬件资源开销比较大的问题。
上述任一项所述的卷积运算方法或卷积运算装置或卷积运算***主要应用于CNN深度学习领域的图像卷积运算加速领域中,主要用于图像识别,人脸识别等等。
卷积运算***无论是工作于哪种卷积尺寸的卷积运算,整个***的运算均是流水运算,而图片或者其他类型的实体数据的卷积处理性能取决于硬件装置的工作主频和输入图片的大小。
在上述一些实施例中,如图15所示,卷积运算***800可作为受控终端,响应于控制终端1502发出的卷积运算模式控制指令,确定目标卷积运算模式,以执行上述任一项实施例所述的目标卷积运算。其中,移位卷积数据链802和卷积参数存储器804作为卷积运算***的控制模块1504,分别接收控制终端1502发出的卷积运算模式控制指令,并分别向卷积运算装置900输入目标卷积数据和卷积参数,以使卷积运算装置根据目标卷积数据和卷积参数生成卷积结果数据。从而可以支持多种尺寸的卷积运算。
当然,在另一些实施例中,如图16所示,卷积运算***800可包括控制终端和受控终端,其中,卷积运算装置900可作为受控终端,移位卷积数据链802和卷积参数存储器804则作为控制终端1502的控制模块1504,分别向卷积运算装置900输入目标卷积数据和卷积参数,以使卷积运算装置根据目标卷积数据和卷积参数生成卷积结果数据。从而可以支持多种尺寸的卷积运算。
其中,受控终端以及控制终端可以配置为虚拟机、应用程序、运行UI的计算机装置等终端设备。需要说明的是,在本实施例中,术语“受控终端”与术语“控制终端”互为控制与被控制的角色关系;例如,当卷积运算***800作为受控终端时,控制端1502与卷积运算***800互为控制与被控制的角色关系。当移位卷积数据链802和卷积参数存储器804作为卷积运算***的控制模块1504作为控制终端,卷积运算装置900作为受控终端时,控制模块1504与卷积运算装置900互为控制与被控制的角色关系。
本发明实施例还提供一种终端设备,如图17所示,该终端设备包括:第一控制单元1702,响应于输入的卷积运算模式控制指令,控制移位卷积数据链向卷积运算装置输入目标卷积数据,移位卷积数据链为FIFO队列,FIFO队列存储有目标卷积数据;第二控制单元1704,控制卷积参数存储器向卷积运算装置输入卷积参数;第三控制单元1706,控制卷积运算装置基于目标卷积数据和卷积参数,生成卷积结果数据。
本发明实施例的终端设备通过第一控制单元1702响应于输入的卷积运算模式控制指令,控制采用先入先出FIFO队列的移位卷积数据链向卷积运算装置输入目标卷积数据,并通过控制卷积参数存储器向卷积运算装置输入卷积参数,以通过第三控制单元1706控制卷积运算装置基于目标卷积数据和卷积参数,生成卷积结果数据。由于FIFO队列一般是基于易失性存储介质实现,由此,移位卷积数据链中的目标卷积数据不占用寄存器资源,因此,可以节约寄存器资源,从而降低硬件资源开销,解决了现有技术中通过采用通用寄存器的移位寄存器链实现卷积运算而导致硬件资源开销较大的问题。
在上述实施例中,终端设备还包括确定单元1708,响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,所目标卷积运算模式对应的卷积运算的最大卷积尺寸为J×J;其中,FIFO队列的数量为J-1。
可以理解的是,移位卷积数据链可以由多个FIFO队列构成,即在确定目标卷积模式后,按照目标卷积模式对应的卷积尺寸选择多个FIFO队列中的几个(或者所有FIFO队列)向卷积运算装置输入目标卷积数据。一般,若FIFO队列的数量大于目标卷积尺寸j×j,则会从FIFO队列中选择与目标卷积尺寸相同的j个FIFO队列输出的数据至卷积运算装置,以使卷积运算装置根据j个FIFO队列输出的卷积数据以及卷积参数存储输出的卷积参数生成卷积结果数据,从而完成目标尺寸的卷积运算。由于FIFO队列一般是基于易失性存储介质实现,由此,移位卷积数据链中的目标卷积数据不占用寄存器资源,以降低硬件资源开销。
在上述进一步的实施例中,第一控制单元1702还用于控制卷积运算装置基于目标卷积数据,生成尺寸为j×j的目标卷积方阵,其中,目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;第二控制单元1704还用于控制卷积运算装置基于卷积参数,生成N组尺寸为j×j的卷积参数方阵;第三控制单元1706还用于控制卷积运算装置中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个卷积核根据获取的卷积参数和卷积数据完成卷积运算,因此,本发明实施例可以支持不同卷积尺寸的卷积运算,从而可以解决现有技术无法支持多种卷积尺寸的卷积运算的问题。
在上述实施例中,终端设备还包括:获取单元1710,用于在N<M时,获取尺寸为j×j的偏移数据方阵;第三控制单元1706控制卷积运算装置基于偏移数据方阵和M组卷积结果数据,得到N组目标卷积尺寸为j×j的累加运算结果,并控制卷积运算装置对累加运算结果进行池化运算,得到目标卷积尺寸为j×j的目标卷积结果。
对于构建j(等于i)的卷积运算,偏移量是在卷积核内部完成运算,而对于构建j(不等于i)的卷积运算,偏移量则是在卷积核根据卷积参数和目标卷积数据完成卷积运算后,通过j×j累加运算模块获取偏移量数据,并通过j×j累加运算模块对偏移量数据和M组卷积运算结果进行累加计算,得到j×j的卷积运算结果。
对于N=M,或者i=j(比如i=j=3)的情况,在输出M组卷积结果数据后,卷积核根据卷积运算装置中的偏移量数据、目标卷积方阵中的目标卷积数据以及卷积参数方阵中的卷积数据完成卷积运算,从而得到M组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的目标卷积结果。
池化单元内部可以为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的目标卷积结果。
需要说明的是,本实施例中所揭示的池化单元1712与上文说所揭示的卷积运算装置实例中所揭示的池化运算器908或者卷积运算方法实例中所揭示的池化运算器互为相同或者等同技术特征,并可通过计算机可执行代码(例如采用Java、Python、C#等机器语言或者高级语言)予以实现。
在上述一个具体的实施例中,i=3,j=3或5,M=4,N=4或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或图6所示的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述图4或图6所示的方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (12)

1.一种卷积运算方法,应用于终端设备,其特征在于,包括:
响应于输入的卷积运算模式控制指令,控制移位卷积数据链向卷积运算装置输入目标卷积数据,所述移位卷积数据链为FIFO队列,所述FIFO队列存储有所述目标卷积数据;
控制卷积参数存储器向卷积运算装置输入卷积参数;
控制所述卷积运算装置基于所述目标卷积数据和所述卷积参数,生成卷积结果数据。
2.如权利要求1所述的方法,其特征在于,在控制移位卷积数据链向卷积运算装置输入目标卷积数据之前,还包括:
响应于输入的卷积运算模式控制指令,确定目标卷积运算模式,所述目标卷积运算模式对应的卷积运算的最大卷积尺寸为J×J;
其中,所述FIFO队列的数量为J-1。
3.如权利要求2所述的方法,其特征在于,在控制移位卷积数据链向卷积运算装置输入目标卷积数据之后,包括:控制所述卷积运算装置基于所述目标卷积数据,生成尺寸为j×j的目标卷积方阵,其中,所述目标卷积运算模式对应的卷积运算的目标卷积尺寸为j×j;
在控制卷积参数存储器向卷积运算装置输入卷积参数之后,包括:控制所述卷积运算装置基于所述卷积参数,生成N组尺寸为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。
4.如权利要求3所述的方法,其特征在于:
i=3,M=4,j=3时N=4;或,
i=3,M=4,j=5时N=1。
5.如权利要求3所述的方法,其特征在于,若N=M,则在生成M组卷积结果数据之后,还包括:
对M组卷积结果数据进行池化运算,得到所述目标卷积尺寸为j×j的目标卷积结果。
6.如权利要求3所述的方法,其特征在于,若N<M,则在生成M组卷积结果数据之后,还包括:
获取尺寸为j×j的偏移数据方阵;
控制所述卷积运算装置基于所述偏移数据方阵和所述M组卷积结果数据,得到N组所述目标卷积尺寸为j×j的累加运算结果;
控制所述卷积运算装置对所述累加运算结果进行池化运算,得到所述目标卷积尺寸为j×j的目标卷积结果。
7.一种卷积运算***,其特征在于,包括:
移位卷积数据链,用于响应于输入的卷积运算模式控制指令,向卷积运算装置输入目标卷积数据,所述移位卷积数据链为FIFO队列,所述FIFO队列存储有所述目标卷积数据;
卷积参数存储器,用于向所述卷积运算装置输入卷积参数;
卷积运算装置,用于基于所述目标卷积数据和所述卷积参数数据,生成卷积结果数据。
8.如权利要求7所述的卷积运算***,其特征在于:
所述FIFO队列的数量为J-1,其中,目标卷积运算模式对应的卷积运算的最大卷积尺寸为J×J,所述目标卷积运算模式基于输入的卷积运算模式控制指令进行确定。
9.如权利要求7所述的卷积运算***,其特征在于:
所述卷积运算装置为多个,多个所述卷积运算装置之间首尾相连,且所述移位卷积数据链与位于首端的卷积运算装置通信连接;或
多个所述卷积运算装置之间相互并联,且所述移位卷积数据链与多个所述卷积运算装置相并连接的一端相连。
10.一种终端设备,其特征在于,包括:
第一控制单元,响应于输入的卷积运算模式控制指令,控制移位卷积数据链向卷积运算装置输入目标卷积数据,所述移位卷积数据链为FIFO队列,所述FIFO队列存储有所述目标卷积数据;
第二控制单元,控制卷积参数存储器向卷积运算装置输入卷积参数;
第三控制单元,控制所述卷积运算装置基于所述目标卷积数据和所述卷积参数,生成卷积结果数据。
11.一种终端设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的方法的步骤。
12.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的方法的步骤。
CN201910664358.7A 2019-07-23 2019-07-23 卷积运算方法及*** Active CN110377874B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910664358.7A CN110377874B (zh) 2019-07-23 2019-07-23 卷积运算方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910664358.7A CN110377874B (zh) 2019-07-23 2019-07-23 卷积运算方法及***

Publications (2)

Publication Number Publication Date
CN110377874A true CN110377874A (zh) 2019-10-25
CN110377874B CN110377874B (zh) 2023-05-02

Family

ID=68254858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910664358.7A Active CN110377874B (zh) 2019-07-23 2019-07-23 卷积运算方法及***

Country Status (1)

Country Link
CN (1) CN110377874B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112101284A (zh) * 2020-09-25 2020-12-18 北京百度网讯科技有限公司 图像识别方法、图像识别模型的训练方法、装置及***
CN112633498A (zh) * 2020-12-22 2021-04-09 天津大学 基于数据流的卷积神经网络权重梯度优化方法
WO2023284130A1 (zh) * 2021-07-15 2023-01-19 深圳供电局有限公司 用于卷积计算的芯片及其控制方法、电子装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250103A (zh) * 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的***
CN106951395A (zh) * 2017-02-13 2017-07-14 上海客鹭信息技术有限公司 面向压缩卷积神经网络的并行卷积运算方法及装置
CN108875917A (zh) * 2018-06-28 2018-11-23 中国科学院计算技术研究所 一种用于卷积神经网络处理器的控制方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250103A (zh) * 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的***
CN106951395A (zh) * 2017-02-13 2017-07-14 上海客鹭信息技术有限公司 面向压缩卷积神经网络的并行卷积运算方法及装置
CN108875917A (zh) * 2018-06-28 2018-11-23 中国科学院计算技术研究所 一种用于卷积神经网络处理器的控制方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112101284A (zh) * 2020-09-25 2020-12-18 北京百度网讯科技有限公司 图像识别方法、图像识别模型的训练方法、装置及***
CN112633498A (zh) * 2020-12-22 2021-04-09 天津大学 基于数据流的卷积神经网络权重梯度优化方法
CN112633498B (zh) * 2020-12-22 2023-04-07 天津大学 基于数据流的卷积神经网络权重梯度优化方法
WO2023284130A1 (zh) * 2021-07-15 2023-01-19 深圳供电局有限公司 用于卷积计算的芯片及其控制方法、电子装置

Also Published As

Publication number Publication date
CN110377874B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN106951395B (zh) 面向压缩卷积神经网络的并行卷积运算方法及装置
CN107578095B (zh) 神经网络计算装置及包含该计算装置的处理器
CN111178519B (zh) 卷积神经网络加速引擎、卷积神经网络加速***及方法
CN108985450B (zh) 面向向量处理器的卷积神经网络运算向量化方法
CN106355244B (zh) 卷积神经网络的构建方法及***
JP6960700B2 (ja) マルチキャストネットワークオンチップに基づいた畳み込みニューラルネットワークハードウェアアクセラレータおよびその動作方式
CN105892989B (zh) 一种神经网络加速器及其运算方法
CN109063825A (zh) 卷积神经网络加速装置
CN108416436A (zh) 使用多核心处理模块进行神经网络划分的方法及其***
CN107918794A (zh) 基于计算阵列的神经网络处理器
CN108665059A (zh) 基于现场可编程门阵列的卷积神经网络加速***
CN107239824A (zh) 用于实现稀疏卷积神经网络加速器的装置和方法
CN110059798A (zh) 开发神经网络中的稀疏性
CN110377874A (zh) 卷积运算方法及***
CN107301456A (zh) 基于向量处理器的深度神经网络多核加速实现方法
CN107341544A (zh) 一种基于可分割阵列的可重构加速器及其实现方法
CN110097174A (zh) 基于fpga和行输出优先的卷积神经网络实现方法、***及装置
CN109284817A (zh) 深度可分离卷积神经网络处理架构/方法/***及介质
CN108171317A (zh) 一种基于soc的数据复用卷积神经网络加速器
CN106875011A (zh) 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN108564168A (zh) 一种对支持多精度卷积神经网络处理器的设计方法
CN110390383A (zh) 一种基于幂指数量化的深度神经网络硬件加速器
CN109034373A (zh) 卷积神经网络的并行处理器及处理方法
CN110163359A (zh) 一种计算装置及方法
CN110414672A (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