CN116348882A - 一种卷积神经网络数据处理方法及其相关设备 - Google Patents
一种卷积神经网络数据处理方法及其相关设备 Download PDFInfo
- Publication number
- CN116348882A CN116348882A CN202080102553.1A CN202080102553A CN116348882A CN 116348882 A CN116348882 A CN 116348882A CN 202080102553 A CN202080102553 A CN 202080102553A CN 116348882 A CN116348882 A CN 116348882A
- Authority
- CN
- China
- Prior art keywords
- sub
- matrix
- convolution kernel
- elements
- result
- 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.)
- Pending
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
一种卷积神经网络数据处理方法及相关设备,具体用于卷积神经网络领域,该方法包括获取输入矩阵,所述输入矩阵的元素为损失函数对卷积神经网络正向获得的输出特征图的偏导数;获取所述卷积神经网络的第一卷积核;其中,所述第一卷积核的尺寸为n*n,所述第一卷积核的移动步长为m;根据所述移动步长m,对所述第一卷积核进行拆分,得到多个子卷积核;将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行卷积乘运算,获得多个子结果矩阵;根据所述移动步长m,对所述多个子结果矩阵中的元素进行组合,得到输出结果;这样,可以高效的求取反向运输的输出结果,实现损失值的反向传递。
Description
本申请实施例涉及卷积神经网络(convolution neural network,CNN),尤其涉及一种卷积神经网络数据处理方法及其相关设备。
在人工智能领域,CNN广泛应用于图像分类、图像识别、特征提取以及其他方面,其中卷积算子是卷积神经网络的核心,决定着卷积神经网络的功能和性能;卷积算子的输入主要由三部分构成,分别是输入特征图X、权重矩阵W(卷积核)和偏置项b,输出为输出特征图Y;其中,卷积计算方式为,先通过图像到矩阵(image-to-column,img2col)算法对特征图X进行数据展开,将其转换为二维的数据矩阵X’,然后将数据矩阵X’与卷积核进行矩阵乘(general matrix multiplication,GEMM),最后和偏置项b做偏置项加法,得到输出特征图Y。
要实现卷积神经网络的自主学习,就需要通过损失函数对输出的特征图Y进行评价;卷积神经网络的反向过程中,损失函数对输出特征图Y的偏导dE/dY为输入,然后对dE/dY进行反向运算,得到输出dE/dX,从而实现损失函数的反向传递,最终,根据dE/dX、dE/dW和dE/db,利用各种优化器算法对卷积核W和偏置项b进行迭代更新,完成神经网络自主学习过程。
正向卷积的计算方式中,会通过img2col算法对特征图X进行数据展开,则反向运算自然需要img2col算法的逆过程来进行还原,即将二维展开数据通过对应位置累加,重构与原特征图X尺寸相同的偏导数据特征图dE/dX;在img2col算法中,卷积核在特征图上移动的过程中,重叠区域比重非常大,导致输出特征图Y中有大量数据冗余;因此逆过程中,将存在大量的重叠位置数据的累加计算才能重构与原特征图X尺寸的偏导数据特征图,这将导致累加计算开销很大,严重影响芯片计算性能。
发明内容
本申请实施例提供了一种卷积神经网络数据处理方法及其相关设备,用于根据dE/dY高效求取dE/dX,实现损失值的反向传递。
本申请实施例的第一方面提供一种卷积神经网络数据处理方法,包括:
在卷积神经网络的反向传递过程中,卷积神经网络的某一层网络结构对应的输入为输入矩阵,该输入矩阵可以是损失函数对卷积神经网络正向获得的输出特征图的偏导数,在对输入矩阵进行反向运算时,需要获取该层网络结构对应的第一卷积核,其中第一卷积核的尺寸为n*n,移动步长为m;首先根据移动步长m,对所述第一卷积核进行拆分,将其拆分为多个子卷积核;然后将每个子卷积核都分别对输入矩阵进行卷积乘运算,这样就可以获得多个子结果矩阵;最后再根据移动步长m,把多个子结果矩阵中的元素进行重组,得到输出结果;输出结果作为下一层网络结构的输入继续执行反向运算,最终完成损失值的反向传递。
对卷积核进行拆分,再分别与输入矩阵进行卷积运算,最后将得到的子结果进行重组, 可以使得卷积神经网络的反向传递过程中,无需col2img过程且无冗余计算就可高效求取dE/dX,减少了计算开销,提高了AI芯片的计算性能。
结合本申请实施例的第一方面,在本申请实施例的第一方面的第一种实施方式中:
卷积神经网络的正向传递过程,首先将输入特征图X进行二维数据展开得到矩阵X’,然后将矩阵X’与第二卷积核进行矩阵乘运算,最终得到输出特征图Y;所以在反向传递过程中,要根据dE/dY得到dE/dX,根据数学运算就需要dE/dY与第二卷积核的转置矩阵进行卷积运算,因此,正向运算对应的第二卷积核沿副对角线做转置即可得到该层网络结构在反向传递中对应的第一卷积核。
结合本申请实施例的第一方面至第一方面的第一种实施方式,在本申请实施例的第一方面的第二种实施方式中:
在对第一卷积核进行拆分时,可以按照卷积核的移动步长m进行拆分,将第一卷积核拆分为m*m个子卷积核;每个子卷积核中相邻的两个元素在原来的第一卷积核中的位置都相距一个移动步长m。
结合本申请实施例的第一方面的第二种实施方式,在本申请实施例的第一方面的第三种实施方式中:
具体的拆分步骤可以为:首先,先将第一卷积核左上角位置的数据确定为第一个元素;然后,在横/纵方向以移动步长m为步长,确定下一个位置;并将该位置处的数据确定为第二个元素;接着,再以第二个元素的位置为起点,以移动步长m为步长,确定第三个位置,并将第三个位置处的元素确定为第三个元素......循环该步骤,直到移动完整个第一卷积核,使得第一卷积核的横和纵方向都没有元素可以再取;然后将取得的元素按照其在第一卷积核的位置依次重排,进行组合,得到第一个子卷积核;接下来,再确定第一卷积核的最左上方向剩下的位置中的元素作为第二个子卷积核的第一个元素;也按照移动步长m进行整个卷积核的取数,得到第二个子卷积核;最后,重复取数的步骤,知道将第一卷积核完全拆分,得到多个子卷积核。
结合本申请实施例的第一方面的第三种实施方式,在本申请实施例的第一方面的第四种实施方式中:
将第一卷积核拆分为多个子卷积核之后,就可以将每个子卷积核分别对输入矩阵进行移动步长为1的卷积乘运算,获得多个子结果矩阵。
当第一卷积核被拆分为多个子卷积核时,子卷积核的尺寸将会变小,同时与输入矩阵做移动步长为1的卷积乘运算,将会大大减少运算复杂度,确保了矩阵计算没有任何冗余计算的存在,同时矩阵乘法的特性,将会把矩阵加法融合进来,无须相同位置元素的累加,彻底消除了VCU的计算任务,提高AI芯片的计算能力。
结合本申请实施例的第一方面的第四种实施方式,在本申请实施例的第一方面的第五种实施方式中:
得到多个子结果矩阵后,需要将多个子结果矩阵的元素重排,获得组合矩阵,首先可以根据子结果矩阵的尺寸,来确定组合矩阵的尺寸;然后将多个子结果矩阵中的所有元素在所述组合矩阵中进行重排,每个子结果矩阵中在横向/纵向相邻的两个元素在组合矩阵的 横向/纵向相距一个移动步长m;然后再根据组合矩阵得到最后的输出结果。
结合本申请实施例的第一方面的第五种实施方式,在本申请实施例的第一方面的第六种实施方式中:
重排的步骤可以为:首先从组合矩阵左上角的位置开始排元素,把左上角的位置确定为第一位置,在第一位置处填入第一个子结果矩阵的左上角元素;可以理解的,第一个子结果矩阵就是第一个子卷积核与输入矩阵卷积得到的;然后在横/纵方向以所述移动步长m为步长确定第一位置的下一个位置,并在该位置填入第一个子结果矩阵中与左上角元素在横/纵方向相邻的第二个元素,依次按顺序进行填数,直到将第一个子结果矩阵的所有元素填入到组合矩阵中;然后填入第二个子结果矩阵中的元素,可以理解的,第二个子结果矩阵就是第二个子卷积核与输入矩阵卷积得到的;将左上方向未填入元素的位置确定为第二位置,并在第二位置填入第二个子结果矩阵的左上角元素;然后在横/纵方向以所述移动步长m为步长确定第二位置的下一个位置,并在该位置填入第二个子结果矩阵中与左上角元素在横/纵方向相邻的第二个元素,依次按顺序进行填数,直到将第二个子结果矩阵的所有元素填入到组合矩阵中,最后重复上述步骤,直到将所有子结果矩阵的所有元素填入到组合矩阵中。
结合本申请实施例的第一方面的第五种实施方式至第一方面的第六种实施方式,在本申请实施例的第一方面的第七种实施方式中:
将多个子结果矩阵进行重组之后,就需要根据正向传递中输入特征图X的维度对组合矩阵中的元素进行筛选,再根据筛选后的元素,得到最终的输出结果dE/dX,可以理解的,最终的dE/dX和正向传递中输入特征图X的维度相同。
本申请实施例的第二方面提供一种卷积神经网络数据处理装置,包括:
获取单元,用于获取输入矩阵,所述输入矩阵的元素为损失函数对卷积神经网络正向获得的输出特征图的偏导数;
所述获取单元,还用于获取所述卷积神经网络的第一卷积核;其中,所述第一卷积核的尺寸为n*n,所述第一卷积核的移动步长为m;
处理单元,用于根据所述移动步长m,对所述第一卷积核进行拆分,得到多个子卷积核;
计算单元,用于将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行卷积乘运算,获得多个子结果矩阵;
排列单元,用于根据所述移动步长m,对所述多个子结果矩阵中的元素进行组合,得到输出结果。
结合本申请实施例的第二方面,在本申请实施例的第二方面的第一种实施方式中:
所述第一卷积核为所述卷积神经网络反向运算对应的卷积核,所述卷积神经网络正向运算对应的卷积核为第二卷积核;其中,所述第一卷积核由所述第二卷积核中的元素沿副对角线做转置获得。
结合本申请实施例的第二方面至第二方面的第一种实施方式,在本申请实施例的第二方面的第二种实施方式中:
所述处理单元具体用于将所述第一卷积核拆分为m*m个子卷积核;其中,在所述m*m个子卷积核中的每个子卷积核中,横向/纵向相邻的两个元素在所述第一卷积核的横向/纵向相距一个移动步长m。
结合本申请实施例的第二方面的第二种实施方式,在本申请实施例的第二方面的第三种实施方式中:
所述处理单元具体用于:将所述第一卷积核左上角的元素确定为第一个元素;在横纵两个方向以所述移动步长m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第一个子卷积核;将左上方向未取过的元素确定为第二个子卷积核中的第一个元素;在横纵两个方向以所述移动步长m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第二个子卷积核;重复上述步骤,以得到m*m个子卷积核。
结合本申请实施例的第二方面的第三种实施方式,在本申请实施例的第二方面的第四种实施方式中:
所述计算单元具体用于将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行移动步长为1的卷积乘运算,获得多个子结果矩阵。
结合本申请实施例的第二方面的第四种实施方式,在本申请实施例的第二方面的第五种实施方式中:
所述排列单元具体用于根据所述多个子结果矩阵的尺寸,确定组合矩阵的尺寸;将所述多个子结果矩阵中的所有元素在所述组合矩阵中进行重排,以使得每个子结果矩阵中在横向/纵向相邻的两个元素在所述组合矩阵的横向/纵向相距一个移动步长m;根据所述组合矩阵得到输出结果。
结合本申请实施例的第二方面的第五种实施方式,在本申请实施例的第二方面的第六种实施方式中:
所述排列单元具体用于:将所述组合矩阵左上角的位置确定为第一位置,并在第一位置填入第一个子结果矩阵的左上角元素;所述第一个子结果矩阵与所述第一个子卷积核对应;在所述组合矩阵的横/纵方向以所述m为步长确定所述第一位置的下一个位置,并在所述第一位置的下一个位置填入所述第一个子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第一个子结果矩阵的所有元素填入所述组合矩阵中;将左上方向未填入元素的位置确定为第二位置,并在所述第二位置填入第二个子结果矩阵的左上角元素;所述第二个子结果矩阵与所述第二个子卷积核对应;在所述组合矩阵的横/纵方向以所述m为步长确定所述第二位置的下一个位置,并在所述第二位置的下一个位置填入所述第二子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第二个子结果矩阵的所有元素填入所述组合矩阵中;重复上述步骤,直到将所有子结果矩阵的所有元素填入所述组合矩阵中。
结合本申请实施例的第二方面的第五种实施方式至第二方面的第六种实施方式,在本申请实施例的第二方面的第七种实施方式中:
所述排列单元具体用于根据所述第一卷积核的尺寸n*n,对所述组合矩阵中的元素进 行筛选;根据筛选后的组合矩阵的元素,得到所述输出结果。
本申请实施例的第三方面提供了一种执行设备,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面所述的卷积神经网络数据处理方法。对于处理器执行第一方面的各个可能实现方式中执行设备执行的步骤,具体均可以参阅第一方面,此处不再赘述。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上行驶时,使得计算机执行上述第一方面所述的卷积神经网络数据处理方法。
本申请实施例的第五方面提供了一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行上述第一方面所述的卷积神经网络数据处理方法。
本申请实施例的第六方面提供了一种计算机程序,当其在计算机上行驶时,使得计算机执行上述第一方面所述的卷积神经网络数据处理方法。
本申请实施例的第七方面提供了一种芯片系统,该芯片系统包括处理器,用于支持执行设备实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存服务器或通信设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
本申请实施例提供的技术方案中,卷积神经网络的反向传递过程无需col2img过程且无冗余计算即可高效求取dE/dX,通过对反向传递过程中的卷积核进行拆分,然后利用多个子卷积核分别对输入矩阵进行简单卷积计算,最后通过重排数据即可获得最终的dE/dX结果,减少了计算开销,提高了AI芯片的计算性能。
图1为本申请实施例提供的一种卷积神经网络计算模型的结构示意图;
图2为本申请实施例提供的一种利用img2col算法对特征图X进行数据展开的结构示意图;
图3为本申请实施例提供的一种卷积核进行二维数据展开的结构示意图;
图4为本申请实施例提供的另一种卷积神经网络计算模型的结构示意图;
图5为本申请实施例提供的一种利用col2img算法对dE/dX’数据进行位置还原的结构示意图;
图6为本申请实施例提供的AI芯片的结构示意图;
图7为本申请实施例提供的卷积神经网络数据处理方法的流程示意图;
图8为本申请实施例提供的卷积核转置重排的结构示意图;
图9为本申请实施例提供的3*3结构卷积核拆分的结构示意图;
图10为本申请实施例提供的5*5结构卷积核拆分的结构示意图;
图11为本申请实施例提供的子结果矩阵重排的结构示意图;
图12为本申请实施提供的一个具体反向卷积运算的结构示意图;
图13为本申请实施例提供的卷积神经网络数据处理装置的结构示意图。
本申请实施例提供了一种卷积神经网络数据处理方法及其相关设备,用于卷积神经网络的反向计算过程;根据dE/dY高效求取dE/dX,从而实现损失函数的反向传递。
在如今的人工智能领域,卷积神经网络广泛应用于图像分类、图像识别、特征提取等多个领域,得到了学术界和工业界的广泛关注和应用。卷积算子是卷积神经网络的核心,其功能都主要由卷积算子决定;卷积算子的输入可以由三部分构成,分别是输入特征图X、权重矩阵W(卷积核)、以及偏置项b,输出为输出特征图Y。其中,卷积算子的数学关系可表示为Y=Conv(X,W)+b。
一般的,卷积神经网络最常见的计算方式为,先根据图像到矩阵(image-to-column,img2col)算法对特征图X进行数据展开,然后对卷积核W也进行矩阵展开,随后进行矩阵乘(general matrix multiplication,GEMM),最后再与偏置项b做加法。最后进行处理得到输出特征图Y。图1为本申请实施例提供的一种卷积神经网络计算模型的结构示意图,如图1所示,首先,输入特征图X,根据img2col算法对X进行数据展开,展开后的数据为X’。然后将数据矩阵X’与卷积核进行矩阵乘得到Y
0;最后执行AddBias操作,即在Y
0的基础上加上偏置项b,得到最终的输出特征图Y。综上所述,卷积的计算过程可以通过以下数学公式表示:
Y=img 2col(X)*W+P*b
在图1中,P为单位向量,输入特征图X的尺寸为[N、Hi、Wi、Ci],即特征图X的数量为N,每个特征图的长为Hi,宽为Wi,通道数为Ci;其中,通道数Ci用于指示特征图X的结构,当Ci>1时,表明输入特征图是三维(3 dimensional,3D)的,需要用3D的卷积核进行卷积,且卷积核通道数与输入特征图的通道数相同。在进行GEMM之前,首先需要将3D的特征图X和卷积核进行二维化展开,将其转换为二维矩阵进行矩阵乘运算。
在对特征图X进行矩阵展开时,采用img2col算法,根据卷积核规格对特征图X进行矩阵展开;图2为本申请实施例提供的一种利用img2col算法对特征图X进行数据展开的结构示意图;如图2所示,特征图X是数量为N,在每个特征图X中,特征图的长为Hi,宽为Wi,通道数为Ci,具体的,Ci的取值为3,因此,特征图X对应的卷积核的通道数也为3;卷积核在特征图X上进行滑动,每滑动一次,就在特征图X对应的位置上取特征值,然后按照通道将每一层特征图取得的特征值从左到右依次排列为一行;然后卷积核在特征图X上再次滑动,进行第二次取值,并将第二次取值在第二行进行记录,循环取特征值的步骤,最后将N个特征图展开为转化为[N*Ho*Wo,Ci*Hk*Wk]的特征矩阵X’,完成特征图X的二维数据展开。
可以理解的,特征矩阵X’的长为Ci*Hk*Wk,Ci与原特征图X的通道数相同,Hk*Wk则与卷积核的尺寸相同,即在特征矩阵X’中,每一行数据的个数为卷积核移动一个位置后,在该位置取得的特征图X所有通道中的特征值;特征矩阵X’的宽为N*Ho*Wo,即表示卷积核在一个特征图中改变了Ho*Wo次位置,如果卷积核在原特征图X的移动步长为1,即卷积核在原特征图上的滑动间隔为1,那么Ho和Wo就与特征图X长Hi、宽Wi相同;但是,卷积核在滑动过程中,并不是按照滑动间隔为1的方式进行取值的,相邻两个时刻卷积核 所覆盖的特征图的区域存在重叠。因此,img2col过程包含大量数据的重复读取,展开后的X’中包含了很多重复的数据,Ho和Wo并不等于Hi和Wi,但存在线性对应关系。
同样的,需要将卷积核也进行二维化展开,图3为本申请实施例提供的一种卷积核进行二维数据展开的结构示意图;如图3所示,卷积核的个数为Nk,每个卷积核的通道数为Ci,具体的Ci为3,卷积核的长为Hk,宽为Wk,将卷积核展开为[Ci*Hk*Wk,Nk]的权重矩阵W,再跟特征矩阵X’进行卷积乘运算。
因此,卷积神经网络的正向计算过程就可以表示为:
Y=img 2col(X)*W+P*b=X'*W+P*b
卷积神经网络需要不断进行训练,根据给定的训练样本,调整神经网络的各项参数,使得神经网络模型更加优化;神经网络模型的训练主要包括正向传播和反向传播两个过程,正向传播即上述正向计算过程,通过多层神经网络和多次计算,最终得到输出特征图Y并且根据特征图得到损失值;而反向传播则是根据损失值得到梯度,再将该梯度在多层神经网络中反向传递,通过梯度值完成神经网络的各项参数的更新,卷积神经网络的反向计算过程即是以损失函数对特征图Y的偏导数dE/dY为输入,计算出损失函数对输入特征图X的偏导数dE/dX,对卷积核W的偏导数dE/dW,对偏置项b的偏导数dE/db;其中,一层神经网络计算出的损失函数对输入特征图X的偏导数dE/dX,将会作为下一层神经网络的输入进行新一轮的求取偏导,最终实现损失值的反向传递。
在反向计算dE/dX时,其与正向计算输出特征图Y的路径相同,方向相反。图4为本申请实施例提供的另一种卷积神经网络计算模型的结构示意图,如图4所示,在该计算模型的正向传播过程中,输入特征图X,根据img2col算法对X进行数据展开得到X’,然后X’与展开后的卷积核,即权重矩阵W进行卷积乘运算得到Y
0;最后执行AddBias操作,即在Y
0的基础上加上偏置项b,得到最终的输出特征图Y;同理该计算模型的反向传播过程与正向对应,输出偏导数dE/dY与特征图Y的维度相同,然后与偏置向量运算得到dE/dY
0,然后再与权重矩阵W的转置矩阵进行卷积乘运算,得到dE/dX’,其中,dE/dX’的维度与X’相同,要使其还原为维度与X相同的dE/dX,就需要进行img2col的反向过程,即矩阵到图像(column-to-image,col2img)过程,即卷积神经网络的反向计算过程就可以表示为:
dE/dX=col2img(dE/dX')=col2img(dE/dY*W
T)
图5为本申请实施例提供的一种利用col2img算法对dE/dX’数据进行位置还原的结构示意图;如图5所示,当得到dE/dX’后,就根据正向运算过程中卷积核的移动步长进行数据填充,根据X’数据与X的位置对应关系,把与X’对应的dE/dX’数据中的行向量填充卷积核所覆盖的特征图区域中,即将dE/dX’数据进行累加然后填充到对应位置,最终得到与特征图X维度相同的dE/dX数据。
由于col2img过程是正向计算过程中img2col过程的逆过程,在img2col过程中,卷积核在特征图上的移动步长并不是1,当卷积核的尺寸较大时,在特征图X上滑动所导致的重叠区域比重非常大,即一个位置将会被多次取特征值,因此反向的col2img过程,将存在大量重叠位置数据的累加计算,这会导致计算开销很大,严重影响AI芯片的计算性能。
本申请实施例提供了一种新的计算dE/dX的方法,无需col2img过程且如无冗余计算即可高效求取dE/dX。具体的,就是将转置重排的卷积核进行拆分,然后利用用拆分后的卷积核分别对dE/dY特征图进行卷积计算,最后重排数据得到最终的dE/dX结果。
图6为本申请实施例提供的AI芯片的结构示意图,如图6所示,AI芯片主体主要由矩阵计算单元(matrix computing unit,MCU)和向量计算单元(vector computing unit,VCU)构成,MCU主要负责矩阵乘运算,VCU负责对数据做矢量处理,如矢量乘、加、指数运算、对数运算、比较等,具体的,还可以实现本申请其他实施例中介绍的对矩阵进行拆分和组合等功能,此处对矩阵进行拆分和组合等具体实现不做进一步描述,可参考其他实施例,左矩阵缓冲器(left matrix buffer)、右矩阵缓冲器(left matrix buffer)以及结果缓冲器(result buffer)用于存放与AI芯片运算相关的输入、输出数据;片上存储(on chip memory,OCM)用于数据缓存;内存传输引擎(memory transfer engine,MTE)主要用于完成AI芯片与片外DDR/HBM存储器的数据交互,以及片内各buffer的数据搬运;具体的,左矩阵缓冲器获取DDR/HBM存储器传输的左矩阵数据,并将其传输至MCU中,右矩阵缓冲器获取DDR/HBM存储器传输的右矩阵数据,也将其传输至MCU中,MCU对左矩阵和右矩阵进行矩阵乘运算,将结果输入至结果缓冲器中,结果缓冲器与VCU进行数据交换,对其进行矢量处理,并传递结果至OCM中,OCM与MTE进行数据传输,最终通过MTE与外界进行数据交换。
图7为本申请实施例提供的卷积神经网络数据处理方法的流程示意图,如图7所示,卷积神经网络数据处理方法包括:
701、获取输入矩阵和第二卷积核。
在卷积神经网络的反向传递过程中,需要将梯度在多层神经网络中反向传递;可以理解的,先要确定某层神经网络结构正向运算获得的输出特征图Y,然后根据损失函数得到损失值对特征图Y的偏导数dE/dY,然后根据偏导数dE/dY得到输入矩阵;可以理解的,dE/dY数据的维度与输出特征图Y是相同的;示例型的,可以将dE/dY进行二维数据展开得到输入矩阵,该输入矩阵的尺寸与正向传播过程中,X’与卷积核卷积乘之后得到的矩阵的尺寸相同。
其中,第二卷积核则为该层网络结构正向传递过程中的卷积核,由于输出特征图Y是由X’与第二卷积核卷积乘之后得到的,想要反向还原,那么就需要根据第二卷积核来进行运算,使得dE/dY还原为输入特征图X的维度。
702、将第二卷积核沿副对角线做转置,得到第一卷积核。
根据矩阵乘运算原理,需要将正向传递过程中,与X’进行卷积乘的第二卷积核沿着第二卷积核的副对角线进行转置重排获得第一卷积核,这样输入矩阵与第一卷积核的卷积运算才能还原为输入特征图X的维度。示例性的,第二卷积核在长和宽的二维平面上沿副对角线做转置,若第二卷积核的尺寸为n*n,那么转置重排后得到的第一卷积核与第二卷积核的形状维度是不变的。
图8为本实施例提供的卷积核转置重排的结构示意图,如图8所示,若卷积核的尺寸为 3*3结构,那么该卷积核的副对角线上的元素即为编号为3、5和7位置上的元素;然后沿着该副对角线将各元素进行位置调换,得到转置后的第一卷积核,示例性的,在该卷积核中,编号为1的位置的元素转置后将在原来编号为9的位置上,可以理解的,转置重排后的卷积核与原卷积核的尺寸相同,仍然为3*3结构。
同理,若卷积核的尺寸为5*5结构,那么该卷积核的副对角线上的元素即为编号为5、9、13、17和21位置上的元素;然后沿着该副对角线将各元素进行位置调换,得到转置后的第一卷积核,示例性的,在该卷积核中,编号为1的位置的元素转置后将在原来编号为25的位置上,编号为7的位置的元素转置后将在原来编号为19的位置上,可以理解的,转置重排后的卷积核与原卷积核的尺寸也相同,仍然为5*5结构。
703、对第一卷积核进行拆分,得到多个子卷积核。
对正向传输的原卷积核进行转置得到新的第一卷积核后,就需要根据卷积核的移动步长m对其进行拆分,具体的,先要确定第一卷积核的尺寸,将其分为m*m个子卷积核;示例性的,如果第一卷积核的移动步长为2,就需要将第一卷积核拆成4个子卷积核,如果第一卷积核的移动步长为3,就需要将第一卷积核拆成9个子卷积核,其中,每个子卷积核中,相邻位置的两个元素在原来的卷积核中,位置相距一个移动步长m。
可选的,具体的拆分方法可以分为以下几个步骤:
1)首先,先将第一卷积核左上角位置的数据确定为第一个元素;
2)然后,在横/纵方向以m为步长,确定下一个位置;并将该位置处的数据确定为第二个元素;
3)接着,再以第二个元素的位置为起点,以m为步长,确定第三个位置,并将第三个位置处的元素确定为第三个元素......循环该步骤,直到移动完整个第一卷积核,使得第一卷积核的横和纵方向都没有元素可以再取;
4)然后将取得的元素按照其在第一卷积核的位置依次重排,进行组合,得到第一个子卷积核;
5)接下来,再确定第一卷积核的最左上方向剩下的位置中的元素作为第二个子卷积核的第一个元素;也按m进行整个卷积核的取数,得到第二个子卷积核;
6)最后,重复取数的步骤,直到将第一卷积核完全拆分,得到多个子卷积核。
示例性的,如图9所示,卷积核的尺寸为3*3结构,移动步长为2,那么就需要将其拆分为4个子卷积核,可以理解的,卷积核上的数字仅代表取数的位置,每隔一个移动步长的两个位置属于同一次取数,因此卷积核可以将左上角的第一个元素位置标记为1,每经过一个移动步长,需要取一次数,因此也将该位置标记为1,最后将标记为1的位置上的元素确定为第一子卷积核的元素,并且按顺序进行组合;然后将剩余元素中左上角的位置标记为2,同样的道理进行位置标记,最后将标记为2的位置上的元素确定为第二子卷积核的元素,直到拆分为4个子卷积核。
示例性的,如图10所示,卷积核的尺寸为5*5结构,移动步长为3,那么就需要将其拆分为9个子卷积核,可以理解的,卷积核上的数字仅代表取数的位置,每隔一个移动步长的 两个位置属于同一次取数;因此卷积核可以将左上角的第一个元素位置标记为1,每经过一个移动步长,标记一次位置,将该位置也标记为1,最后将标记为1的位置上的元素确定为第一子卷积核的元素,并且按顺序进行组合;然后将剩余元素中左上角的位置标记为2,同样的道理进行位置标记,最后将标记为2的位置上的元素确定为第二子卷积核的元素,直到拆分为9个子卷积核。
704、将多个子卷积核中的每个子卷积核分别与输入矩阵进行卷积乘运算,获得多个子结果矩阵。
当拆分完子卷积核后,由于是按照移动步长m进行的拆分,因此,只需要将每个子卷积核分别对输入矩阵进行移动步长为1的卷积乘运算即可,这样可以获得多个子结果矩阵。
当第一卷积核被拆分为多个子卷积核时,子卷积核的尺寸将会变小,同时与输入矩阵做移动步长为1的卷积乘运算,将会大大减少运算复杂度,确保了矩阵计算没有任何冗余计算的存在,同时矩阵乘法的特性,将会把矩阵加法融合进来,无须相同位置元素的累加,彻底消除了VCU的计算任务,提高AI芯片的计算能力。
705、对多个子结果矩阵中的元素进行重组,得到输出结果。
获得多个子结果矩阵后,只需要将子结果矩阵进行重排,即可获得输出dE/dX;具体的,可以根据多个子结果矩阵的尺寸,确定组合矩阵的尺寸;然后把多个子结果矩阵中的所有元素在组合矩阵中进行重排,可以理解的,每两个在子结果矩阵中相邻的元素重排之后,在组合矩阵的相距一个移动步长m;最后再根据重排后的组合矩阵得到最终的输出结果。
可选的,具体的重排的步骤为:
1)首先从组合矩阵左上角的位置开始拍元素,把左上角的位置确定为第一位置,在第一位置处填入第一个子结果矩阵的左上角元素;可以理解的,第一个子结果矩阵就是第一个子卷积核与输入矩阵卷积得到的;
2)然后在横/纵方向以所述m为步长确定第一位置的下一个位置,并在该位置填入第一个子结果矩阵中与左上角元素在横/纵方向相邻的第二个元素,依次按顺序进行填数,直到将第一个子结果矩阵的所有元素填入到组合矩阵中;
3)然后填入第二个子结果矩阵中的元素,可以理解的,第二个子结果矩阵就是第二个子卷积核与输入矩阵卷积得到的;将左上方向未填入元素的位置确定为第二位置,并在第二位置填入第二个子结果矩阵的左上角元素。
4)然后在横/纵方向以所述m为步长确定第二位置的下一个位置,并在该位置填入第二个子结果矩阵中与左上角元素在横/纵方向相邻的第二个元素,依次按顺序进行填数,直到将第二个子结果矩阵的所有元素填入到组合矩阵中。
5)重复上述步骤,直到将所有子结果矩阵的所有元素填入到组合矩阵中。
示例性的,如图11所示,第一个子结果矩阵的尺寸为4*4,第二个子结果矩阵的尺寸为3*4,第三个子结果矩阵的尺寸为4*3,第四个子结果矩阵的尺寸为3*3;那么可以确定重排后的组合矩阵尺寸为7*7;然后在组合矩阵左上角第一个位置填入第一个子结果矩阵中左上角的第一个元素,然后隔一个移动步长就填入第一个子结果矩阵中的下一个元素, 直到将第一个子结果矩阵中的所有元素都填完,接着填入第二个子结果矩阵的元素,最后将四个子结果矩阵中的所有元素都填完。可以理解的,填完后的组合矩阵中,标记为1的第一子结果矩阵的元素之间相互间隔一个移动步长,标记为2的第二子结果矩阵的元素之间相互之间也间隔一个移动步长,标记为3和标记为4的元素也相同。
将多个子结果矩阵进行重组之后,就需要根据正向传递中输入特征图X的维度对组合矩阵中的元素进行筛选,再根据筛选后的元素,得到最终的输出结果dE/dX,可以理解的,最终的dE/dX和正向传递中输入特征图X的维度相同。
其中,对组合矩阵中的元素进行筛选与正向传递的计算过程有关,为了保持边界信息,在对输入特征值X进行卷积操作时,需要对特征图X进行padding操作,示例性的,当padding方式为same时,卷积核在特征图X上滑动,当剩余块不足卷积核大小时,就需要对特征图X进行补零操作;所以在反向传递过程中,对组合矩阵中的元素进行筛选,则需要看正向传递过程中对特征图X的补零操作,确定补零的位置,并且按照该位置对组合矩阵中对应位置的元素进行删除,使得dE/dX和X的维度相同,元素位置对应。
如图12所示,为本申请实施提供的一个具体反向卷积运算的结构示意图,正向传递对应的第二卷积核W的结构为3*3,从左到右依次包含的元素为1、0、2、-1、1、0、0、2、-1;先对W沿副对角线进行转置,转置后的第一卷积核为W’,再对W’进行拆分,由于卷积核的移动步长为2,因此将其拆分为4个子卷积核,其中第一卷积核包含的元素依次为-1、2、0、1,第二卷积核包含的元素依次为0和-1,第三卷积核包含的元素依次为2和0,第三卷积核包含的元素为1,然后每个子卷积核分别与输入矩阵dE/dY进行卷积乘运算,得到四个子结果矩阵,再将子结果矩阵的元素依次重排,得到组合矩阵,最后按照正向传递中的X的维度,对组合矩阵的元素进行筛选,然后根据筛选后的组合矩阵得到最后结果。
使用本实施提供的方法,卷积神经网络的反向传递过程无需col2img过程且无冗余计算即可高效求取dE/dX,通过对转置重排的卷积核进行拆分,然后利用多个子卷积核分别对输入矩阵进行移动步长为1的简单卷积计算,最后通过重排数据即可获得最终的dE/dX结果,减少了计算开销,提高了AI芯片的计算性能。
在图1至图12所对应的实施例的基础上,为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体参阅图13,图13为本申请实施例提供的一种卷积神经网络数据处理装置的结构示意图。卷积神经网络数据处理装置1300包括:获取单元1301、处理单元1302、计算单元1303、排列单元1304。
获取单元1301用于获取输入矩阵,所述输入矩阵的元素为损失函数对卷积神经网络正向获得的输出特征图的偏导数;
获取单元1301还用于获取所述卷积神经网络的第一卷积核;其中,所述第一卷积核的尺寸为n*n,所述第一卷积核的移动步长为m;
处理单元1302用于根据所述移动步长m,对所述第一卷积核进行拆分,得到多个子卷积核;
计算单元1303用于将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行卷积乘运算,获得多个子结果矩阵;
排列单元1304用于根据所述移动步长m,对所述多个子结果矩阵中的元素进行组合,得到输出结果;所述输出结果为所述第一层网络结构反向相邻的下一层网络结构的输入。
在一个可选的实施方式中,所述第一卷积核为所述卷积神经网络反向运算对应的卷积核,所述卷积神经网络正向运算对应的卷积核为第二卷积核;其中,所述第一卷积核由所述第二卷积核中的元素沿副对角线做转置获得。
在一个可选的实施方式中,处理单元1302具体用于将所述第一卷积核拆分为m*m个子卷积核;其中,在所述m*m个子卷积核中的每个子卷积核中,横向/纵向相邻的两个元素在所述第一卷积核的横向/纵向相距一个移动步长m。
在一个可选的实施方式中,处理单元1302具体用于:
将所述第一卷积核左上角的元素确定为第一个元素;在横纵两个方向以所述m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第一个子卷积核;将左上方向未取过的元素确定为第二个子卷积核中的第一个元素;在横纵两个方向以所述m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第二个子卷积核;重复上述步骤,以得到m*m个子卷积核。
在一个可选的实施方式中,计算单元1303具体用于将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行移动步长为1的卷积乘运算,获得多个子结果矩阵。
在一个可选的实施方式中,排列单元1304具体用于根据所述多个子结果矩阵的尺寸,确定组合矩阵的尺寸;将所述多个子结果矩阵中的所有元素在所述组合矩阵中进行重排,以使得每个子结果矩阵中在横向/纵向相邻的两个元素在所述组合矩阵的横向/纵向相距一个移动步长m;根据所述组合矩阵得到输出结果。
在一个可选的实施方式中,排列单元1304具体用于:
将所述组合矩阵左上角的位置确定为第一位置,并在第一位置填入第一个子结果矩阵的左上角元素;所述第一个子结果矩阵与所述第一个子卷积核对应;在所述组合矩阵的横/纵方向以所述m为步长确定所述第一位置的下一个位置,并在所述第一位置的下一个位置填入所述第一个子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第一个子结果矩阵的所有元素填入所述组合矩阵中;将左上方向未填入元素的位置确定为第二位置,并在所述第二位置填入第二个子结果矩阵的左上角元素;所述第二个子结果矩阵与所述第二个子卷积核对应;在所述组合矩阵的横/纵方向以所述m为步长确定所述第二位置的下一个位置,并在所述第二位置的下一个位置填入所述第二子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第二个子结果矩阵的所有元素填入所述组合矩阵中;重复上述步骤,直到将所有子结果矩阵的所有元素填入所述组合矩阵中。
在一个可选的实施方式中,排列单元1304具体用于根据所述第一卷积核的尺寸n*n,对所述组合矩阵中的元素进行筛选;根据筛选后的组合矩阵的元素,得到所述输出结果。
上述本申请实施例揭示的方法可以应用于卷积神经网络数据处理装置1300中,需要说明的是,卷积神经网络数据处理装置1300中各模块/单元之间的信息交互、执行过程等内容,以及带来的有益效果,与本申请中图1至图12对应的各个方法实施例基于同一构思,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
本申请实施例还提供了一种执行设备,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时与本申请中图1至图12对应的各个方法实施例中包括的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储程序,使得计算机执行如前述图1至图12所示实施例描述的方法中执行设备所执行的步骤。
本申请实施例中还提供一种包括计算机程序产品,使得计算机执行如前述图1至图12所示实施例描述的方法中执行设备所执行的步骤。
本申请实施例中还提供一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行如前述图1至图12所示实施例描述的方法中执行设备所执行的步骤。
本申请实施例提供的执行设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使执行设备内的芯片执行上述图1至图12所示实施例描述的卷积神经网络数据处理方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述第一方面方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CLU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机 程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (18)
- 一种卷积神经网络数据处理方法,其特征在于,所述方法包括:获取输入矩阵,所述输入矩阵的元素为损失函数对卷积神经网络正向获得的输出特征图的偏导数;获取所述卷积神经网络的第一卷积核;其中,所述第一卷积核的尺寸为n*n,所述第一卷积核的移动步长为m;根据所述移动步长m,对所述第一卷积核进行拆分,得到多个子卷积核;将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行卷积乘运算,获得多个子结果矩阵;根据所述移动步长m,对所述多个子结果矩阵中的元素进行组合,得到输出结果。
- 根据权利要求1所述的方法,其特征在于,所述所述第一卷积核为所述卷积神经网络反向运算对应的卷积核,所述卷积神经网络正向运算对应的卷积核为第二卷积核;其中,所述第一卷积核由所述第二卷积核中的元素沿副对角线做转置获得。
- 根据权利要求1至2任一项所述的方法,其特征在于,所述根据所述移动步长m,对所述第一卷积核进行拆分,得到多个子卷积核,包括:将所述第一卷积核拆分为m*m个子卷积核;其中,在所述m*m个子卷积核中的每个子卷积核中,横向/纵向相邻的两个元素在所述第一卷积核的横向/纵向相距一个移动步长m。
- 根据权利要求3所述的方法,其特征在于,所述根据所述移动步长m,对所述第一卷积核进行拆分,得到多个子卷积核,包括:将所述第一卷积核左上角的元素确定为第一个元素;在横纵两个方向以所述m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第一个子卷积核;将左上方向未取过的元素确定为第二个子卷积核中的第一个元素;在横纵两个方向以所述m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第二个子卷积核;重复上述步骤,以得到m*m个子卷积核。
- 根据权利要求4所述的方法,其特征在于,将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行卷积乘运算,获得多个子结果矩阵,包括:将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行移动步长为1的卷积乘运算,获得多个子结果矩阵。
- 根据权利要求5所述的方法,其特征在于,根据所述移动步长m,对所述多个子结果矩阵中的元素进行组合,得到输出结果,包括:根据所述多个子结果矩阵的尺寸,确定组合矩阵的尺寸;将所述多个子结果矩阵中的所有元素在所述组合矩阵中进行重排,以使得每个子结果矩阵中在横向/纵向相邻的两个元素在所述组合矩阵的横向/纵向相距一个移动步长m;根据所述组合矩阵得到输出结果。
- 根据权利要求6所述的方法,其特征在于,将所述多个子结果矩阵中的所有元素在 所述组合矩阵中进行重排,包括:将所述组合矩阵左上角的位置确定为第一位置,并在第一位置填入第一个子结果矩阵的左上角元素;所述第一个子结果矩阵与所述第一个子卷积核对应;在所述组合矩阵的横/纵方向以所述m为步长确定所述第一位置的下一个位置,并在所述第一位置的下一个位置填入所述第一个子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第一个子结果矩阵的所有元素填入所述组合矩阵中;将左上方向未填入元素的位置确定为第二位置,并在所述第二位置填入第二个子结果矩阵的左上角元素;所述第二个子结果矩阵与所述第二个子卷积核对应;在所述组合矩阵的横/纵方向以所述移动步长m为步长确定所述第二位置的下一个位置,并在所述第二位置的下一个位置填入所述第二子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第二个子结果矩阵的所有元素填入所述组合矩阵中;重复上述步骤,直到将所有子结果矩阵的所有元素填入所述组合矩阵中。
- 根据权利要求6至7任一项所述的方法,其特征在于,根据所述移动步长m,对所述多个子结果矩阵中的元素进行组合,得到输出结果,包括:根据所述第一卷积核的尺寸n*n,对所述组合矩阵中的元素进行筛选;根据筛选后的组合矩阵的元素,得到所述输出结果。
- 一种卷积神经网络数据处理装置,其特征在于,所述处理装置包括:获取单元,用于获取输入矩阵,所述输入矩阵的元素为损失函数对卷积神经网络正向获得的输出特征图的偏导数;所述获取单元,还用于获取所述卷积神经网络的第一卷积核;其中,所述第一卷积核的尺寸为n*n,所述第一卷积核的移动步长为m;处理单元,用于根据所述移动步长m,对所述第一卷积核进行拆分,得到多个子卷积核;计算单元,用于将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行卷积乘运算,获得多个子结果矩阵;排列单元,用于根据所述移动步长m,对所述多个子结果矩阵中的元素进行组合,得到输出结果。
- 根据权利要求9所述的处理装置,其特征在于,所述第一卷积核为所述卷积神经网络反向运算对应的卷积核,所述卷积神经网络正向运算对应的卷积核为第二卷积核;其中,所述第一卷积核由所述第二卷积核中的元素沿副对角线做转置获得。
- 根据权利要求9至10任一项所述的处理装置,其特征在于,所述处理单元具体用于将所述第一卷积核拆分为m*m个子卷积核;其中,在所述m*m个子卷积核中的每个子卷积核中,横向/纵向相邻的两个元素在所述第一卷积核的横向/纵向相距一个移动步长m。
- 根据权利要求11所述的处理装置,其特征在于,所述处理单元具体用于:将所述第一卷积核左上角的元素确定为第一个元素;在横纵两个方向以所述移动步长m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第一个子卷积核;将左上方向未取过的元素确定为第二个子卷积核中的第一个元素;在横纵两个方向以所述移动步长m为步长取下一个元素;将取得的所有元素按照在所述第一卷积核中的位置进行组合,得到第二个子卷积核;重复上述步骤,以得到m*m个子卷积核。
- 根据权利要求12所述的处理装置,其特征在于,所述计算单元具体用于将所述多个子卷积核中的每个子卷积核分别对所述输入矩阵进行移动步长为1的卷积乘运算,获得多个子结果矩阵。
- 根据权利要求13所述的处理装置,其特征在于,所述排列单元具体用于根据所述多个子结果矩阵的尺寸,确定组合矩阵的尺寸;将所述多个子结果矩阵中的所有元素在所述组合矩阵中进行重排,以使得每个子结果矩阵中在横向/纵向相邻的两个元素在所述组合矩阵的横向/纵向相距一个移动步长m;根据所述组合矩阵得到输出结果。
- 根据权利要求14所述的处理装置,其特征在于,所述排列单元具体用于:将所述组合矩阵左上角的位置确定为第一位置,并在第一位置填入第一个子结果矩阵的左上角元素;所述第一个子结果矩阵与所述第一个子卷积核对应;在所述组合矩阵的横/纵方向以所述m为步长确定所述第一位置的下一个位置,并在所述第一位置的下一个位置填入所述第一个子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第一个子结果矩阵的所有元素填入所述组合矩阵中;将左上方向未填入元素的位置确定为第二位置,并在所述第二位置填入第二个子结果矩阵的左上角元素;所述第二个子结果矩阵与所述第二个子卷积核对应;在所述组合矩阵的横/纵方向以所述m为步长确定所述第二位置的下一个位置,并在所述第二位置的下一个位置填入所述第二子结果矩阵中与左上角元素在横/纵方向相邻的元素,直到将所述第二个子结果矩阵的所有元素填入所述组合矩阵中;重复上述步骤,直到将所有子结果矩阵的所有元素填入所述组合矩阵中。
- 根据权利要求14至15任一项所述的处理装置,其特征在于,所述排列单元具体用于根据所述第一卷积核的尺寸n*n,对所述组合矩阵中的元素进行筛选;根据筛选后的组合矩阵的元素,得到所述输出结果。
- 一种计算机可读存储介质,其特征在于,包括程序,当其在计算机上运行时,使得计算机执行如权利要求1至8中任一项所述的方法。
- 一种执行设备,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至8中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/099111 WO2022000225A1 (zh) | 2020-06-30 | 2020-06-30 | 一种卷积神经网络数据处理方法及其相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116348882A true CN116348882A (zh) | 2023-06-27 |
Family
ID=79317668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080102553.1A Pending CN116348882A (zh) | 2020-06-30 | 2020-06-30 | 一种卷积神经网络数据处理方法及其相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116348882A (zh) |
WO (1) | WO2022000225A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116980277A (zh) * | 2023-09-18 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116051506B (zh) * | 2023-01-28 | 2023-06-16 | 东莞市言科新能源有限公司 | 聚合物锂离子电池的智能化生产系统及其方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017181419A1 (zh) * | 2016-04-22 | 2017-10-26 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
CN110928576A (zh) * | 2018-09-20 | 2020-03-27 | 中兴通讯股份有限公司 | 一种卷积神经网络的卷积处理方法、装置及存储介质 |
CN110097172B (zh) * | 2019-03-18 | 2021-10-29 | 中国科学院计算技术研究所 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
CN110689115B (zh) * | 2019-09-24 | 2023-03-31 | 安徽寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
-
2020
- 2020-06-30 CN CN202080102553.1A patent/CN116348882A/zh active Pending
- 2020-06-30 WO PCT/CN2020/099111 patent/WO2022000225A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116980277A (zh) * | 2023-09-18 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN116980277B (zh) * | 2023-09-18 | 2024-01-12 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022000225A1 (zh) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102649482B1 (ko) | 뉴럴 프로세싱 가속기 | |
EP3373210B1 (en) | Transposing neural network matrices in hardware | |
US11645529B2 (en) | Sparsifying neural network models | |
KR102415576B1 (ko) | 컨벌루션 뉴럴 네트워크의 계산 복잡성을 감소시키기 위한 방법 및 시스템 | |
US10970819B2 (en) | Image processing device, image processing method, and image processing program | |
KR20200037748A (ko) | 칩 장치 및 관련 제품 | |
US20220360428A1 (en) | Method and Apparatus for Configuring a Reduced Instruction Set Computer Processor Architecture to Execute a Fully Homomorphic Encryption Algorithm | |
CN116348882A (zh) | 一种卷积神经网络数据处理方法及其相关设备 | |
CN112703511B (zh) | 运算加速器和数据处理方法 | |
US11164032B2 (en) | Method of performing data processing operation | |
US20210312270A1 (en) | Highly Parallel Convolutional Neural Network | |
CN113344172A (zh) | 将卷积映射到通道卷积引擎 | |
CN115186802A (zh) | 基于卷积神经网络的块稀疏方法、装置及处理单元 | |
KR20230081697A (ko) | 팽창 컨볼루션 계산 가속화 방법 및 장치 | |
CN114764615A (zh) | 卷积运算的实现方法、数据处理方法及装置 | |
CN114792124A (zh) | 在硬件中实施扩张卷积 | |
JP6357345B2 (ja) | ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法 | |
CN112836823B (zh) | 基于循环重组和分块的卷积神经网络反向传播映射方法 | |
JP6663372B2 (ja) | 埋め込みグラフ単純化装置、埋め込みグラフ単純化方法、及びコンピュータプログラム | |
CN111047025B (zh) | 一种卷积计算方法及装置 | |
Pavel et al. | Efficient algorithms for the Euclidean distance transform | |
JP6906622B2 (ja) | 演算回路および演算方法 | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
JP7251354B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
EP0438119A2 (en) | Numerical processing of optical wavefront data |
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 |