CN110807170B - 多样本多通道卷积神经网络Same卷积向量化实现方法 - Google Patents
多样本多通道卷积神经网络Same卷积向量化实现方法 Download PDFInfo
- Publication number
- CN110807170B CN110807170B CN201911000690.XA CN201911000690A CN110807170B CN 110807170 B CN110807170 B CN 110807170B CN 201911000690 A CN201911000690 A CN 201911000690A CN 110807170 B CN110807170 B CN 110807170B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- vector
- calculation
- convolution
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种多样本多通道卷积神经网络Same卷积向量化实现方法,步骤包括:步骤1:将输入特征数据集数据按照样本维优先方式存储,以及将卷积核的数据按照卷积核的数量维优先方式存储;步骤2:按列将输入特征数据集数据矩阵划分为多个矩阵块;步骤3:每次将卷积核数据矩阵传输到各个核的SM中,以及将从输入特征数据矩阵中按行抽取组成的子矩阵传输到各个核的AM中,执行向量化矩阵乘法计算和并行化矩阵乘法计算,并在计算中执行补0;步骤4:将输出特征矩阵计算结果存储在片外存储器中;步骤5:重复步骤3至4,直到完成全部计算。本发明能够实现Same卷积向量化,且具有实现操作简单、执行效率及精度高且带宽需求小等优点。
Description
技术领域
本发明涉及向量处理器技术领域,尤其涉及一种多样本多通道卷积神经网络Same卷积向量化实现方法。
背景技术
近年来基于深度卷积神经网络的深度学***面上的图像像素数据和RGB通道。
卷积神经网络主要有Valid卷积和Same卷积两种,其中Valid卷积不对输入图像填充0元素,而Same卷积需要对输入图像的边缘填充0元素。由于Valid卷积不填充0元素,若有一个preH*preW的图像,用一个kernelH*kernelW的过滤器卷积,则得到的输出图像为(preH-kernelH+1)*(preW-kernelW+1),因而Valid卷积存在的一个缺点即是每次卷积操作后,图像都会缩小,尤其是层数很多时,最终得到的是很小的图像;还存在另一缺点是图像边缘信息比中间信息使用次数少,导致图像边缘的大部分信息都丢失了。因此神经网络模型通常需要将Valid卷积和Same卷积结合使用,如在神经网络模型中间采用Same卷积。
Same卷积是在做卷积操作之前通过填充0元素扩大图像,使得卷积操作后的输出图像与输入图像大小保持相同。通常Same卷积计算是根据新的图像大小预先申请一片新的内存区域,将填充0的区域补上0元素,在其他区域将填充前的图像元素值拷贝过来,然后针对新图像采用与Valid卷积相同的计算方法。但是该类方法会存在以下问题:
(1)需要至少双倍的内存开销;
(2)0元素的存储位置不连续,导致补0元素的操作开销大;
(3)复制原图像数据占用时间开销大。
向量处理器是一种新颖的体系结构,能够在保持较低功耗的同时,具有强大的计算能力,尤其适合加速大型卷积神经网络计算。如图1所示,向量处理器通常包括标量处理部件(Scalar Processing Unit,SPU)和向量处理部件(Vector Processing Unit,VPU),SPU负责标量任务计算和流控,VPU负责向量计算,提供主要的计算能力,包括若干向量处理单元(Vector Processing Element,VPE),每个VPE包含MAC、ALU、BP等多个运算功能部件。SPU和VPU之间提供数据传输和交换机制,实现标、向量数据的共享和通信。向量数据访问单元支持向量数据的Load/Store,提供大容量的专用向量阵列存储器(Array Memory,AM)以及标、向量共享的片外存储器。
针对向量处理器的体系结构特点,目前存在各种卷积计算的向量化实现方法,例如中国专利申请201810687639.X公开的一种向量处理器的卷积神经网络运算向量化方法、专利申请201810689646.3公开的一种面向GPDSP的卷积神经网络多核并行计算方法、专利申请201710201589.5公开的一种面向向量处理器的二维矩阵卷积的向量化实现方法等等,该类方案都是采用将权重数据加载到向量阵列存储器AM中,将输入图像特征数据加载到向量阵列存储器的标量存储SM中来完成卷积计算的方式,且大多是采用按照第三维顺序对数据进行重排序,目前还尚未有针对卷积神经网络中Same卷积的向量化实现方法,而将上述传统方案应用于Same卷积向量化实现时会存在以下问题:
1、不能有效共享权重数据,会浪费存储带宽,而不能充分发挥向量处理器计算效率。
2、由于第三维的大小不确定,与向量处理器的处理单元数量不匹配,且不同卷积神经网络模型、不同卷积层的第三维大小各异,上述各类方案的加载数据效率会大受影响,且不具有通用性。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现操作简单、执行效率及精度高且带宽需求小的多样本多通道卷积神经网络Same卷积向量化实现方法,能够充分发挥向量处理器的计算性能实现多样本多通道卷积神经网络Same卷积的向量化。
为解决上述技术问题,本发明提出的技术方案为:
一种多样本多通道卷积神经网络Same卷积向量化实现方法,步骤包括:
步骤1:将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储,以及将卷积核的数据按照卷积核的数量维优先的方式存储;
步骤2:向量处理器按列将所述输入特征数据集数据矩阵划分为多个矩阵块,得到多个输入特征数据矩阵;
步骤3:向量处理器每次将所述卷积核数据矩阵传输到各个核的标量存储器SM中,以及将从所述输入特征数据矩阵中按行抽取V行数据组成的子矩阵传输到各个核的向量阵列存储器AM中,其中0<V<=K,K为单个卷积核的像素数据数目;通过执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,并在计算过程中执行补0操作,得到输出特征数据矩阵计算结果;
步骤4:将所述输出特征矩阵计算结果存储在向量处理器的片外存储器中;
步骤5:重复步骤3、4,直到完成全部输入特征数据矩阵计算。
进一步的,所述步骤1中将卷积神经网络计算的输入特征的数据集数据按照样本维优先的方式存储包括:第一层卷积神经网络计算时,将输入特征的数据集数据重排序,使得输入特征的数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其他层计算的输入特征数据矩阵为上一层计算结果的输出特征矩阵,且是按照样本维优先的方式存储在向量处理器的片外存储器中,其中M为数据集的总样本数目,N为单个样本的输入特征数目。
进一步的,所述步骤1中将卷积核的数据按照卷积核的数量维优先的方式存储包括:将卷积核的数据按照K*nextC阶的矩阵连续存储在向量处理器的片外存储器,其中nextC为卷积核的数量,K=kernelH*kernelW*preC为单个卷积核的像素数据数目,preC为通道数。
进一步的,所述步骤2中,具体将所述输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中MB=q*p,M=num*MB,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
进一步的,所述步骤3中,所述按行抽取V行数据组成的所述子矩阵的总次数为nextH*nextW,其中:
nextH=(preH+2pH-kernelH+1),nextW=(preW+2pW-kernelW+1)
N=preH*preW*preC,K=kernelH*kernelW*preC
其中,K为单个卷积核的像素数据数目,N为单个样本的输入特征数目,nextH为输出图像数据的高度,nextW为输出图像数据的宽度,preH*preW为当前计算层的卷积神经网络的二维图像输入数据,pH、pW分别为高和宽方向填充的0元素个数。
进一步的,所述步骤3中,抽取所述子矩阵以及在抽取过程中进行补0操作的具体步骤为:
步骤3.1.1:构建一个长度为K的向量Z,用来记录K个卷积核数据对应的行是否为0元素行;令执行次数t=nextW*r0+c0,其中0<=r0<nextH,0<=c0<nextW,t的取值范围为{0,1,2,...,nextH*nextW-1};
步骤3.1.2:令h0=r0;
步骤3.1.3:判断h0是否<(r0+kernelH),若是则转步骤3.1.4,否则结束并退出;
步骤3.1.4:令w0=c0;
步骤3.1.5:判断w0是否<(c0+kernelW),若是转步骤3.1.6,若不是转步骤3.1.8;
步骤3.1.6:判断(h0>(pH-1)&&w0>(pW-1)&&h0<(preH+pH)&&w0<(preW+pW))是否为真值,若是,令pos=preC*(c0+preW*r0),从所述输入特征数据矩阵的第pos行连续抽取preC行,同时令k0=c0+kernelW*r0,将向量Z的第k0个位置开始的连续preC个元素置1;若不是,不对所述输入特征数据矩阵做抽取操作,同时令k0=c0+kernelW*r0,将向量Z的第k0个位置开始的连续preC个元素置0;
步骤3.1.7:w0增1,转步骤3.1.5;
步骤3.1.8:h0增1,转步骤3.1.3。
进一步的,所述步骤3中,执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算的具体步骤包括:
步骤3.2.1:向量处理器将所述输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为V*p阶;
步骤3.2.2:向量处理器将所述卷积核数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的卷积核数据缓冲区中,每个核传入的卷积核数据矩阵规模为K*nextC阶;
步骤3.2.3:向量处理器的各个核的标量处理部件SPU依次从所述卷积核数据缓冲区按列读取一个卷积核数据到一个标量寄存器中,判断读取的所述卷积核数据对应的输入特征数据矩阵行是为否为0元素行,若是继续读取下一个列元素,计算结果为直接赋值为全0元素构成的0向量;若不是则通过标量广播指令广播到一个向量寄存器;
步骤3.2.4:向量处理器的各个核的向量处理部件VPU依次从所述输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器,将该向量寄存器与所述步骤3.2.3得到的向量寄存器进行乘累加计算;
步骤3.2.5:判断是否遍历所述卷积核数据矩阵一列的K个元素数据,若不是,则跳转步骤3.2.3,且所述步骤3.2.3中读取位置移到下一元素、所述步骤3.2.4中读取位置移到下一行;若是,则每个核完成该列数据计算对应的p个输出特征数据的计算,p为每个核的向量处理单元VPE个数,跳转步骤3.2.6;
步骤3.2.6:判断是否遍历完卷积核数据的所有nextC列数据,若不是,则跳转步骤3.2.3,且所述步骤3.2.3中读取位置移到下一列首地址、所述步骤3.2.4中读取位置回到输入特征数据缓冲区起始地址;若是则遍历完nextC列,向量处理器完成nextC*MB阶的输出特征数据的计算。
进一步的,所述步骤3.2.1中,每个核传入的V*p阶的所述输入特征数据矩阵中不足的行数具体为(K-V),该(K-V)行为0元素行,对应步骤3.2.3中得到的计算结果为直接赋值为全0元素构成的0向量;所述步骤3.2.2中,传入的所述卷积核数据矩阵具体与K*p阶矩阵进行矩阵乘法。
进一步的,所述步骤3.2.1中的数据缓冲区和/或步骤3.2.2中的数据缓冲区具体设置两个,两个所述数据缓冲区中当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输。
进一步的,所述步骤4中,具体将所述输出特征矩阵计算结果按照样本维优先的方式存储在向量处理器的片外存储器中。
与现有技术相比,本发明的优点在于:
1、本发明多样本多通道卷积神经网络Same卷积向量化实现方法,能够基于向量处理器的结构特性以及Same卷积的特性,实现多样本多通道卷积神经网络Same卷积向量化,通过输入特征数据集数据按照样本维优先的方式存储,卷积核的数据按照卷积核的数量维优先的方式存储,每个核的卷积核数据通过标量存储器传输,并广播到向量处理单元计算,可以实现卷积核数据的共享,大幅度减少了计算数据的传输量,能够显著降低卷积核数据的带宽需求,同时降低卷积核数据的传输时间;
2、本发明多样本多通道卷积神经网络Same卷积向量化实现方法,不需要复制原图像数据操作,通过将复杂的多重循环的Same卷积计算操作转化为高效率的向量化和并行化矩阵乘法计算,能够充分利用向量处理器对于矩阵乘法计算的高效性以及向量处理器非常适合于向量化和并行化计算的特性,充分发挥向量处理器的计算性能实现Same卷积向量化;
3、本发明多样本多通道卷积神经网络Same卷积向量化实现方法,针对Same卷积的特性,通过补0元素通过在计算过程中实现,不需要0元素的实际存储,也不需要真实的补0写和读操作,因而不需要额外的内存开销,且减少了0元素对应的计算;
4、本发明多样本多通道卷积神经网络Same卷积向量化实现方法,通过每个卷积核数据扩展成向量数据,与全部的输入特征数据同时进行向量乘累加计算,能够充分发挥向量处理器的SIMD和核间并行性,大幅度提升了卷积神经网络的计算效率;
5、本发明多样本多通道卷积神经网络Same卷积向量化实现方法,通过同一样本的所有输入特征数据存储在一个列上,卷积核数据与输入特征数据的全部乘累加计算都是在同一个VPE处理单元上操作,能够避免多个处理单元之间的规约求和,提高向量处理器的整体计算效率;
6、本发明多样本多通道卷积神经网络Same卷积向量化实现方法,能够兼顾效率和准确度,还能够支持方便灵活设置Mini-batch大小。
附图说明
图1是向量处理器的一般结构示意图。
图2是本实施例多样本多通道卷积神经网络Same卷积向量化实现方法的详细流程示意图。
图3是本发明在具体应用实施例中对输入特征数据集数据重排序的原理示意图。
图4是本发明具体应用实施例中步骤3抽取子矩阵以及执行补0操作的详细流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
设目标向量处理器的核数为q,每个核的向量处理单元VPE个数为p,数据集的总样本数目为M,Mini-batch大小为MB,其中MB=q*p,M=num*MB,num为正整数,以及当前计算层的卷积神经网络的二维图像输入数据为preH*preW,preH为图像宽度,preW为图像高度,通道数为preC,卷积核大小为kernelH*kernelW*preC,且kernelH,kernelW均为奇数,卷积核的数量为nextC,卷积计算的步长为1。
为了使得卷积操作后的输出图像与输入图像大小保持相同,设高和宽方向填充的0元素个数为分别pH、pW,pH>0,pW>0,则preH*preW的图像扩大为(preH+2pH)*(preW+2pW),输出图像为(preH+2pH-kernelH+1)*(preW+2pW-kernelW+1),若让输出图像与输入图像大小相同,即(preH+2pH-kernelH+1)=preH,得到pH=(kernelH-1)/2;(preW+2pW-kernelW+1)=preW,得到pW=(kernelW-1)/2,本实施例kernelH、kernelW均取奇数,1*1,3*3,5*5,7*7,11*11等,因而只要选择合适的填充大小,总能保证输出图像与输入图像大小相同。
如图2所示,本实施例多样本多通道卷积神经网络Same卷积向量化实现方法的详细步骤包括:
步骤1:将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储,以及将卷积核的数据按照卷积核的数量维优先的方式存储。
上述将卷积神经网络计算的输入特征的数据集数据按照样本维优先的方式存储具体包括:第一层卷积神经网络计算时,将输入特征的数据集数据重排序,使得输入特征的数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其他层计算的输入特征数据矩阵为上一层计算结果的输出特征矩阵,且是按照样本维优先的方式存储在向量处理器的片外存储器中,其中M为数据集的总样本数目,N为单个样本的输入特征数目。
在具体应用实施例(preH=2、preW=2、通道数为preC=3,总样本数为m)中,第一层卷积神经网络计算时对输入特征的数据集数据重排序如图3所示,其中图3(a)为重排序前的m个样本的输入特征数据,图3(b)为重排序后的输入特征数据集矩阵,经过重排后输入特征数据集数据即是按照样本维优先的方式存储。
由于是按照样本维优先的方式存储,上述N*M阶矩阵的每一列存储单个样本的输入特征,且在该列的存储顺序为通道preC方向优先,接着是图像宽度preW方向优先,最后是图像高度preH方向优先。输入特征数据矩阵的元素具体表示为x[i][m],其中列坐标m表示第m+1个样本,取值范围为{0,1,2,...,M-1};行坐标i表示该样本的第i+1个输入特征值,取值范围为{0,1,2,...,preH*preW*preC-1}。
上述将卷积核的数据按照卷积核的数量维优先的方式存储具体包括:将卷积核的数据按照K*nextC阶的矩阵连续存储在向量处理器的片外存储器,其中nextC为卷积核的数量,K=kernelH*kernelW*preC为单个卷积核的像素数据数目,preC为通道数。
由于按照卷积核的数量维优先的方式存储,上述K*nextC阶矩阵的每一列存储单个卷积核的像素数据,且在该列的存储顺序为通道preC方向优先,接着是卷积核宽度kernelW方向优先,最后是卷积核高度kernelH方向优先。卷积核数据矩阵的元素具体表示为w[j][c],其中列坐标c表示第c+1个卷积核,取值范围为{0,1,2,...,nextC-1},行坐标j表示该卷积核的第j+1个像素数据值,取值范围为{0,1,2,...,kernelH*kernelW*preC-1}。偏置数据列向量的元素表示为b[c],其中坐标c对应第c+1个卷积核,取值范围为{0,1,2,...,nextC-1},每个卷积核对应一个偏置数据值。
步骤2:向量处理器按列将输入特征数据集数据矩阵划分为多个矩阵块,得到多个输入特征数据矩阵。
具体将输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中MB=q*p,M=num*MB,得到num个N*MB阶的输入特征数据矩阵。
步骤3:向量处理器每次将卷积核数据矩阵传输到各个核的标量存储器SM中,以及将从输入特征数据矩阵中按行抽取V行数据组成的子矩阵传输到各个核的向量阵列存储器AM中,其中0<V<=K,K为单个卷积核的像素数据数目;通过执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,并在计算过程中执行补0操作,得到输出特征数据矩阵计算结果。
具体每次从输入特征数据矩阵中按行抽取V行数据组成子矩阵传输到各个核的向量阵列存储器AM中,其中0<V<=K,在计算过程中执行补0元素的操作。即对步骤2中每个N*MB阶的矩阵块,向量处理器每次将K*nextC阶的卷积核数据矩阵传输到各个核的标量存储器SM中,从N*MB阶的输入特征数据集数据矩阵中按行抽取V行数据组成的V*MB阶的输入特征数据集数据的子矩阵传输到各个核的向量阵列存储器AM中,补0元素的操作在计算过程中实现,再通过标、向量协作的向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,得到nextC*MB阶的输出特征数据矩阵,向量处理器的各个核对上述nextC*MB阶的输出特征数据矩阵与偏置数据列向量进行并行加法计算得到计算结果即为nextC*MB阶的输出特征矩阵。
上述nextC*MB阶的输出特征数据矩阵与偏置数据列向量进行加法计算具体是将nextC*MB阶的输出特征矩阵的每个列向量与偏置数据列向量的每个对应元素进行加法计算。
上述从N*M阶的输入特征数据集数据矩阵中,按行抽取V行数据组成的V*M阶的输入特征数据集数据的子矩阵的总次数具体为nextH*nextW,其中:
nextH=(preH+2pH-kernelH+1),nextW=(preW+2pW-kernelW+1)
N=preH*preW*preC,K=kernelH*kernelW*preC
其中,K为单个卷积核的像素数据数目,N为单个样本的输入特征数目,nextH为输出图像数据的高度,nextW为输出图像数据的宽度。
步骤4:将输出特征矩阵计算结果存储在向量处理器的片外存储器中。
上述具体将输出特征矩阵计算结果按照样本维优先的方式存储在向量处理器的片外存储器中。
具体将步骤3得到的nextC*MB阶的输出特征矩阵计算结果按照样本维优先的方式存储向量处理器的片外存储器中。
步骤5:重复步骤3、4,直到完成全部输入特征数据矩阵计算。
上述步骤完成后得到的输出特征数据矩阵规模为S*M阶矩阵,其中M为数据集的总样本数目;S=nextH*nextW*nextC为单个样本的输出特征数目。S*M阶的输出特征矩阵是按照样本维优先的方式连续存储到向量处理器的片外存储器,即S*M阶矩阵的每一列存储单个样本的输出特征,并且在该列的存储顺序为通道nextC方向优先,接着是图像宽度nextW方向优先,最后是图像高度nextH方向优先。输出特征数据矩阵的元素具体表示为为a[j][m],其中列坐标m表示第m+1个样本,取值范围为{0,1,2,...,M-1},行坐标j表示该样本的第j+1个输出特征值,取值范围为{0,1,2,...,nextH*nextW*nextC-1}。
本实施例通过执行上述步骤1~5后,得到的计算结果即为该层的卷积神经网络计算结果,且计算结果的存储仍然保持步骤1所要求的样本维优先的方式存储,由该输出特征数据矩阵为后续层的卷积神经网络计算提供输入特征数据矩阵。
本实施例上述方法,通过输入特征数据集数据按照样本维优先的方式存储,卷积核的数据按照卷积核的数量维优先的方式存储,每个核的卷积核数据通过标量存储器传输,并广播到向量处理单元计算,可以实现卷积核数据的共享,大幅度减少了计算数据的传输量,能够显著降低卷积核数据的带宽需求,同时降低卷积核数据的传输时间,且不需要复制原图像数据操作,通过将复杂的多重循环的卷积神经网络卷积计算操作转化为nextH*nextW次高效率的向量化和并行化矩阵乘法计算,能够充分利用向量处理器对于矩阵乘法计算的高效性以及向量处理器非常适合于向量化和并行化计算的特性,且针对Same卷积的特性,通过补0元素通过在计算过程中实现,不需要0元素的实际存储,也不需要真实的补0写和读操作,因而不需要额外的内存开销,减少了0元素对应的计算。
本实施例上述方法,通过每个卷积核数据扩展成向量数据,与全部的输入特征数据同时进行向量乘累加计算,能够充分发挥向量处理器的SIMD和核间并行性,大幅度提升了卷积神经网络的计算效率,且同一样本的所有输入特征数据存储在一个列上,卷积核数据与输入特征数据的全部乘累加计算都是在同一个VPE处理单元上操作,能够避免多个处理单元之间的规约求和,提高向量处理器的整体计算效率,能够兼顾效率和准确度,还能够支持方便灵活设置Mini-batch大小。
如图4所示,在具体应用实施例中,上述步骤3中抽取子矩阵以及在抽取过程中进行补0元素操作的具体步骤为:
步骤3.1.1:构建一个长度为K的向量Z,用来记录K个卷积核数据对应的行是否为0元素行;令执行次数t=nextW*r0+c0,其中0<=r0<nextH,0<=c0<nextW,t的取值范围为{0,1,2,...,nextH*nextW-1};
步骤3.1.2:令h0=r0;
步骤3.1.3:判断h0是否<(r0+kernelH),若是则转步骤3.1.4,否则结束;
步骤3.1.4:令w0=c0;
步骤3.1.5:判断w0是否<(c0+kernelW),若是转步骤3.1.6,若不是转步骤3.1.8;
步骤3.1.6:判断(h0>(pH-1)&&w0>(pW-1)&&h0<(preH+pH)&&w0<(preW+pW))是否为真值,若是,令pos=preC*(c0+preW*r0),从输入特征数据矩阵的第pos行连续抽取preC行,同时令k0=c0+kernelW*r0,将向量Z的第k0个位置开始的连续preC个元素置1;若不是,不对输入特征数据矩阵做抽取操作,同时令k0=c0+kernelW*r0,将向量Z的第k0个位置开始的连续preC个元素置0;
步骤3.1.7:w0增1,转步骤3.1.5;
步骤3.1.8:h0增1,转步骤3.1.3。
通过上述步骤,可以从N*MB阶的输入特征数据集数据矩阵中按行抽取V行数据,组成的V*MB阶的输入特征数据集数据的子矩阵,同时补0元素的操作在计算过程中完成。通过补0元素通过在计算过程中实现,不需要0元素的实际存储,也不需要真实的补0写和读操作,因而不需要额外的内存开销,减少了0元素对应的计算。
在具体应用实施例中,上述步骤3中,将K*nextC阶的卷积核数据矩阵与V*MB阶的输入特征数据子块矩阵,执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算的具体步骤包括:
步骤3.2.1:向量处理器将输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为V*p阶;
步骤3.2.2:向量处理器将卷积核数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的卷积核数据缓冲区中,每个核传入的卷积核数据矩阵规模为K*nextC阶;
步骤3.2.3:向量处理器的各个核的标量处理部件SPU依次从卷积核数据缓冲区按列读取一个卷积核数据到一个标量寄存器中,判断读取的卷积核数据对应的输入特征数据矩阵行是为否为0元素行,若是继续读取下一个列元素,计算结果为直接赋值为全0元素构成的0向量;若不是则通过标量广播指令广播到一个向量寄存器;
步骤3.2.4:向量处理器的各个核的向量处理部件VPU依次从输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器,将该向量寄存器与步骤3.2.3得到的向量寄存器进行乘累加计算;
步骤3.2.5:判断是否遍历卷积核数据矩阵一列的K个元素数据,若不是,则跳转步骤3.2.3,且步骤3.2.3中读取位置移到下一元素、步骤3.2.4中读取位置移到下一行;若是,则每个核完成该列数据计算对应的p个输出特征数据的计算,跳转步骤3.2.6;
步骤3.2.6:判断是否遍历完卷积核数据的所有nextC列数据,若不是,则跳转步骤3.2.3,且步骤3.2.3中读取位置移到下一列首地址、步骤3.2.4中读取位置回到输入特征数据缓冲区起始地址;若是则遍历完nextC列,向量处理器完成nextC*MB阶的输出特征数据的计算。
本实施例上述步骤3.2.1中,每个核传入的V*p阶的输入特征数据矩阵规模为V*p阶,其中不足的行数具体为(K-V),该(K-V)行为0元素行,对应的计算不需要实际运算,在步骤3.2.3中得到的计算结果即为直接赋值为全0元素构成的0向量;步骤3.2.2中,传入的卷积核数据矩阵具体与K*p阶矩阵进行矩阵乘法。
本实施例上述步骤3.2.1和步骤3.2.2中的数据缓冲区具体可以设置两个,当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输,使得数据传输与计算时间重叠,可以进一步提升计算效率。
本实施例上述步骤3.2.3中判断该卷积核数据对应的输入特征数据矩阵行是为否为0元素行具体依据上述向量Z来实现,具体步骤为:根据上述向量Z的元素值进行判断,设k为读取卷积核数据在该列的位置,判断若Z[k]=0,则对应的输入特征数据矩阵行为0元素行,若Z[k]=1,则对应的输入特征数据矩阵行不为0元素行。
在具体应用实施例中,若向量处理器提供了SIMD指令同时进行并行数据处理,还包括根据待计算图像元素的数据位数,调整上述p值为d*p,相应的MB也变化为原来MB的d倍,d表示向量处理器中的每个VPE通过SIMD指令能同时处理d个图像元素数据。确定d值时,具体如64位处理器的字长为64位,若待计算图像元素的数据位数分别为64、32、16、8位,则对应的d值分别为64/64=1、64/32=2、64/16=4、64/8=8;32位处理器的字长为32位,若待计算图像元素的数据位数分别为32、16、8位,则对应的d值分别为32/32=1、32/16=2、32/8=4。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (9)
1.一种多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,步骤包括:
步骤1:将用于卷积神经网络计算的输入特征数据集数据按照样本维优先的方式存储,以及将卷积核的数据按照卷积核的数量维优先的方式存储;
步骤2:向量处理器按列将所述输入特征数据集数据矩阵划分为多个矩阵块,得到多个输入特征数据矩阵;
步骤3:向量处理器每次将卷积核数据矩阵传输到各个核的标量存储器SM中,以及将从所述输入特征数据矩阵中按行抽取V行数据组成的子矩阵传输到各个核的向量阵列存储器AM中,其中0<V<=K,K为单个卷积核的像素数据数目,通过执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算,并在计算过程中执行补0操作,得到输出特征数据矩阵计算结果;
步骤4:将所述输出特征数据矩阵计算结果存储在向量处理器的片外存储器中;
步骤5:重复步骤3、4,直到完成全部输入特征数据矩阵计算;
所述步骤3中,所述执行向量化矩阵乘法计算和各个核的并行化矩阵乘法计算的具体步骤包括:
步骤3.2.1:向量处理器将所述输入特征数据矩阵分别传输到向量处理器的各个核的向量阵列存储器AM中预设的输入特征数据缓冲区中,每个核传入的输入特征数据矩阵规模为V*p阶,p为每个核的向量处理单元VPE个数;
步骤3.2.2:向量处理器将所述卷积核数据矩阵分别传输到向量处理器各个核的标量存储器SM中预设的卷积核数据缓冲区中,每个核传入的卷积核数据矩阵规模为K*nextC阶,其中nextC为卷积核的数量;
步骤3.2.3:向量处理器的各个核的标量处理部件SPU依次从所述卷积核数据缓冲区按列读取一个卷积核数据到一个标量寄存器中,判断读取的所述卷积核数据对应的输入特征数据矩阵行是为否为0元素行,若是继续读取下一个列元素,计算结果为直接赋值为全0元素构成的0向量;若不是则通过标量广播指令广播到一个向量寄存器;
步骤3.2.4:向量处理器的各个核的向量处理部件VPU依次从所述输入特征数据缓冲区读取一行输入特征数据到一个向量寄存器,将该向量寄存器与所述步骤3.2.3得到的向量寄存器进行乘累加计算;
步骤3.2.5:判断是否遍历所述卷积核数据矩阵一列的K个元素数据,若不是,则跳转步骤3.2.3,且所述步骤3.2.3中读取位置移到下一元素、所述步骤3.2.4中读取位置移到下一行;若是,则每个核完成该列数据计算对应的p个输出特征数据的计算,p为每个核的向量处理单元VPE个数,跳转步骤3.2.6;
步骤3.2.6:判断是否遍历完卷积核数据的所有nextC列数据,若不是,则跳转步骤3.2.3,且所述步骤3.2.3中读取位置移到下一列首地址、所述步骤3.2.4中读取位置回到输入特征数据缓冲区起始地址;若是则遍历完nextC列,向量处理器完成nextC*MB阶的输出特征数据的计。
2.根据权利要求1所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤1中将卷积神经网络计算的输入特征的数据集数据按照样本维优先的方式存储包括:第一层卷积神经网络计算时,将输入特征的数据集数据重排序,使得输入特征的数据集数据按照N*M阶的矩阵连续存储在向量处理器的片外存储器,其他层计算的输入特征数据矩阵为上一层计算结果的输出特征矩阵,且是按照样本维优先的方式存储在向量处理器的片外存储器中,其中M为数据集的总样本数目,N为单个样本的输入特征数目。
3.根据权利要求2所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤1中将卷积核的数据按照卷积核的数量维优先的方式存储包括:将卷积核的数据按照K*nextC阶的矩阵连续存储在向量处理器的片外存储器,其中K=kernelH*kernelW*preC为单个卷积核的像素数据数目,preC为通道数。
4.根据权利要求3所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤2中,具体将所述输入特征数据集数据矩阵划分为num个矩阵块,每个矩阵块的大小为N*MB阶,其中MB=q*p,M=num*MB,q为目标向量处理器的核数,p为每个核的向量处理单元VPE个数。
5.根据权利要求1~4中任意一项所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤3中,所述按行抽取V行数据组成的子矩阵的总次数为nextH*nextW,其中:
nextH=(preH+2pH-kernelH+1),nextW=(preW+2pW-kernelW+1)
N=preH*preW*preC,K=kernelH*kernelW*preC
其中,K为单个卷积核的像素数据数目,N为单个样本的输入特征数目,nextH为输出图像数据的高度,nextW为输出图像数据的宽度,preH、preW分别为当前计算层的卷积神经网络的二维图像输入数据的图像高度、图像宽度,pH、pW分别为高和宽方向填充的0元素个数。
6.根据权利要求1~4中任意一项所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤3中,抽取所述子矩阵的具体步骤为:
步骤3.1.1:构建一个长度为K的向量Z,用来记录K个卷积核数据对应的行是否为0元素行;令执行次数t=nextW*r0+c0,其中0<=r0<nextH,0<=c0<nextW,t的取值范围为{0,1,2,...,nextH*nextW-1};
步骤3.1.2:令h0=r0;
步骤3.1.3:判断h0是否<(r0+kernelH),若是则转步骤3.1.4,否则结束并退出;
步骤3.1.4:令w0=c0;
步骤3.1.5:判断w0是否<(c0+kernelW),若是转步骤3.1.6,若不是转步骤3.1.8;
步骤3.1.6:判断(h0>(pH-1)&&w0>(pW-1)&&h0<(preH+pH)&&w0<(preW+pW))是否为真值,若是,令pos=preC*(c0+preW*r0),从所述输入特征数据矩阵的第pos行连续抽取preC行,同时令k0=c0+kernelW*r0,将向量Z的第k0个位置开始的连续preC个元素置1;若不是,不对所述输入特征数据矩阵做抽取操作,同时令k0=c0+kernelW*r0,将向量Z的第k0个位置开始的连续preC个元素置0;
步骤3.1.7:w0增1,转步骤3.1.5;
步骤3.1.8:h0增1,转步骤3.1.3。
7.根据权利要求1所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤3.2.1中,每个核传入的V*p阶的所述输入特征数据矩阵中不足的行数具体为(K-V),该(K-V)行为0元素行,对应步骤3.2.3中得到的计算结果为直接赋值为全0元素构成的0向量;所述步骤3.2.2中,传入的所述卷积核数据矩阵具体与K*p阶矩阵进行矩阵乘法。
8.根据权利要求1所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤3.2.1中的数据缓冲区和/或步骤3.2.2中的数据缓冲区具体设置两个,两个所述数据缓冲区中当对其中一个数据缓冲区执行计算的同时,对另一个数据缓冲区进行数据传输。
9.根据权利要求1~4中任意一项所述的多样本多通道卷积神经网络Same卷积向量化实现方法,其特征在于,所述步骤4中,具体将所述输出特征矩阵计算结果按照样本维优先的方式存储在向量处理器的片外存储器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911000690.XA CN110807170B (zh) | 2019-10-21 | 2019-10-21 | 多样本多通道卷积神经网络Same卷积向量化实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911000690.XA CN110807170B (zh) | 2019-10-21 | 2019-10-21 | 多样本多通道卷积神经网络Same卷积向量化实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110807170A CN110807170A (zh) | 2020-02-18 |
CN110807170B true CN110807170B (zh) | 2023-06-27 |
Family
ID=69488692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911000690.XA Active CN110807170B (zh) | 2019-10-21 | 2019-10-21 | 多样本多通道卷积神经网络Same卷积向量化实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110807170B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111539526B (zh) * | 2020-04-24 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 一种神经网络卷积的方法和设备 |
CN113743602B (zh) * | 2020-05-27 | 2024-05-03 | 合肥君正科技有限公司 | 一种提高模型后处理速度的方法 |
CN112465932A (zh) * | 2020-12-10 | 2021-03-09 | 上海眼控科技股份有限公司 | 一种图像填充方法、装置、设备及存储介质 |
CN113469350B (zh) * | 2021-07-07 | 2023-03-24 | 武汉魅瞳科技有限公司 | 一种适于npu的深度卷积神经网络加速方法和*** |
CN114048839A (zh) * | 2021-10-28 | 2022-02-15 | 深圳云天励飞技术股份有限公司 | 卷积计算的加速方法、装置及终端设备 |
CN113722669B (zh) * | 2021-11-03 | 2022-01-21 | 海光信息技术股份有限公司 | 数据处理方法、装置、设备及存储介质 |
WO2023155136A1 (en) * | 2022-02-18 | 2023-08-24 | Intel Corporation | Dynamic triplet convolution for convolutional neural networks |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440121A (zh) * | 2013-08-20 | 2013-12-11 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
WO2019119301A1 (zh) * | 2017-12-20 | 2019-06-27 | 华为技术有限公司 | 在卷积神经网络模型中确定特征图像的方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860812B (zh) * | 2016-04-29 | 2024-03-01 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
CN106295678B (zh) * | 2016-07-27 | 2020-03-06 | 北京旷视科技有限公司 | 神经网络训练与构建方法和装置以及目标检测方法和装置 |
CN106970896B (zh) * | 2017-03-30 | 2020-05-12 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
CN109325589B (zh) * | 2017-07-31 | 2021-06-15 | 华为技术有限公司 | 卷积计算方法及装置 |
CN108205702B (zh) * | 2017-12-29 | 2020-12-01 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
KR102065672B1 (ko) * | 2018-03-27 | 2020-01-13 | 에스케이텔레콤 주식회사 | 합성곱 연산을 위한 장치 및 방법 |
CN108985450B (zh) * | 2018-06-28 | 2019-10-29 | 中国人民解放军国防科技大学 | 面向向量处理器的卷积神经网络运算向量化方法 |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
-
2019
- 2019-10-21 CN CN201911000690.XA patent/CN110807170B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440121A (zh) * | 2013-08-20 | 2013-12-11 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
WO2019119301A1 (zh) * | 2017-12-20 | 2019-06-27 | 华为技术有限公司 | 在卷积神经网络模型中确定特征图像的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110807170A (zh) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110807170B (zh) | 多样本多通道卷积神经网络Same卷积向量化实现方法 | |
CN110796235B (zh) | 卷积神经网络Valid卷积的向量化实现方法 | |
US10936937B2 (en) | Convolution operation device and convolution operation method | |
CN110796236B (zh) | 多样本多通道卷积神经网络池化的向量化实现方法 | |
US20180121388A1 (en) | Symmetric block sparse matrix-vector multiplication | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
US11983616B2 (en) | Methods and apparatus for constructing digital circuits for performing matrix operations | |
CN113076521B (zh) | 一种基于gpgpu可重构架构的方法及计算*** | |
US11188331B2 (en) | Processor instruction specifying indexed storage region holding control data for swizzle operation | |
US11164032B2 (en) | Method of performing data processing operation | |
EP3844610B1 (en) | Method and system for performing parallel computation | |
US20220004840A1 (en) | Convolutional neural network-based data processing method and device | |
US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
CN114491402A (zh) | 一种稀疏矩阵向量乘访存优化的计算方法 | |
GB2602708A (en) | Processing data of a neural network | |
CN112005251A (zh) | 运算处理装置 | |
CN110414672B (zh) | 卷积运算方法、装置及*** | |
KR20220134035A (ko) | 컨볼루션 연산을 위한 프로세싱 인 메모리 방법 | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN110766157B (zh) | 多样本神经网络前向传播向量化实现方法 | |
KR101672539B1 (ko) | 그래픽 처리 유닛 및 그 캐싱 방법 | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
CN114330687A (zh) | 数据处理方法及装置、神经网络处理装置 | |
CN113392959A (zh) | 一种在计算***中重构架构的方法及计算*** | |
CN112241509A (zh) | 图形处理器及其加速方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |