WO2020061924A1 - 运算加速器和数据处理方法 - Google Patents

运算加速器和数据处理方法 Download PDF

Info

Publication number
WO2020061924A1
WO2020061924A1 PCT/CN2018/108018 CN2018108018W WO2020061924A1 WO 2020061924 A1 WO2020061924 A1 WO 2020061924A1 CN 2018108018 W CN2018108018 W CN 2018108018W WO 2020061924 A1 WO2020061924 A1 WO 2020061924A1
Authority
WO
WIPO (PCT)
Prior art keywords
matrix
memory
convolution
converter
convolution kernel
Prior art date
Application number
PCT/CN2018/108018
Other languages
English (en)
French (fr)
Inventor
顾雄礼
李艳华
张惠敏
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to CN201880097652.8A priority Critical patent/CN112703511B/zh
Priority to PCT/CN2018/108018 priority patent/WO2020061924A1/zh
Publication of WO2020061924A1 publication Critical patent/WO2020061924A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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

Definitions

  • This application provides an operation accelerator, a data processing method, and an operation acceleration system.
  • the col2img operation can be avoided, and the calculation efficiency is high.
  • the matrix converter is specifically configured to zero-fill the second matrix when the step S1 of height sliding of the convolution kernel or the step S2 of width sliding of the convolution kernel is greater than 1.
  • zero padding the second matrix is to add (S1-1) rows of all 0 data before each row of the second matrix, in the Before each column of the second matrix, add (S2-1) rows of all 0 data, S1 and S2 are all integers greater than 0; or,
  • the matrix converter expands the fourth matrix before transposing and inverting the fourth matrix, so as to obtain the required partial derivative of the loss function on the input matrix.
  • Matrix easy to implement.
  • the arithmetic circuit obtains the first matrix from the first memory.
  • the convolution kernel can be initialized in the form of a random-sized matrix. During the training process of the convolutional neural network, the convolution kernel can obtain reasonable weights through learning. In addition, the direct benefit of sharing weights is to reduce the connections between the layers of the convolutional neural network, while reducing the risk of overfitting.
  • the above method is used to calculate the partial derivative of the loss function on the input matrix of the convolution layer.
  • the col2img operation needs to be used to process dE / dx ', which has a large time overhead and low calculation efficiency.
  • img2col (dE / dY) is a (H1 ⁇ W1) ⁇ (N ⁇ H ⁇ W) matrix.
  • img2col (dE / dY) is the first matrix mentioned below.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

一种运算加速器和数据处理方法,该运算加速器包括:第一存储器,用于存储第一矩阵,所述第一矩阵的每一行或每一列为第二矩阵的一个子矩阵转换的向量,所述第二矩阵为损失函数的输出值对卷积层输出的卷积结果的偏导数;第二存储器,用于存储第三矩阵,所述第三矩阵为第四矩阵经过转置和反向排列得到的矩阵,所述第四矩阵为在所述卷积层执行卷积运算得到所述卷积结果所使用的权重矩阵;分别与所述第一存储器、所述第二存储器连接的运算电路;所述运算电路,用于获取所述第一矩阵和所述第三矩阵,计算所述第一矩阵和所述第三矩阵的乘积,得到第五矩阵;不需要col2img操作,就可以计算出损失函数对输入矩阵的偏导数,计算效率高。

Description

运算加速器和数据处理方法 技术领域
本申请涉及人工智能领域的数据处理技术,尤其涉及一种运算加速器、数据处理方法及运算加速系统。
背景技术
卷积是卷积神经网络(Convolutional Neural Network,CNN)中最重要的一个算子。其中,输入包括输入特征图X、权重矩阵W、偏置b,输出为输出特征图Y,数学关系可表示为Y=Conv(X,W)+b,Conv(X,W)表示X和W卷积运算的结果。卷积计算的计算过程如下:首先,采用img2col操作将输入特征图X转换为X’,X’的每一行或每一列为X中根据卷积核(权重矩阵)一次卷积的图像区域转换的向量;其次,计算权重矩阵W和X’的矩阵乘法,得到输出结果Y0;随后,在Y0的基础上增加偏置项b,得到输出特征图Y;最后,经过可选的激活(Activation)操作,计算输出特征图Y中每个元素的激活值,得到最后的结果。img2col操作是指按照卷积核的大小将一个大矩阵(X),重叠地划分为多个子矩阵,将每个子矩阵序列化成向量,最后得到另外一个矩阵X’。总体来说,卷积的数学表示为:Y=act(Conv(X,W)+b)。其中,act()表示激活函数,用于计算输出Y中每个元素的激活值。
在卷积神经网络(CNN)的训练过程中,卷积层的运算主要包括三个部分,即正向的卷积运算、反向误差传播的dE/dW以及dE/dX的运算。其中,dE/dW表示损失函数E对卷积核W的偏导数,dE/dX表示损失函数E对输入特征图X的偏导数,dE/dX将作为该卷积层下一层的偏导输入,实现误差的反向传递。这三个部分计算时间基本相当,也就是说,dE/dX计算量占CNN训练中卷积层总计算量的1/3左右。以业界和学术界广泛应用的Resnet系列网络中的Resnet50为例,训练一个Resnet50网络,卷积层的计算量占总计算量的90%以上,dE/dX的计算占卷积层计算量的1/3。而一个网络的训练计算量是巨大的,通常都需要几天到几个月的连续运算,提高dE/dX的计算效率,能够显著提高整个网络的计算效率,节约时间成本和能耗成本。
目前,在CNN的训练过程中,通过计算dE/dY与卷积核W的转置的矩阵乘法得到dE/dX’,再对dE/dX’进行col2img操作得到dE/dX。数学表示为:dE/dX=col2img(dE/dX’)=col2img(dE/dY×W T)。其中,dE/dY是指损失函数E对输出特征图Y的偏导数,col2img(dE/dX’)表示对dE/dX’执行col2img操作。col2img操作相当于img2col操作的反过程,即把每个行向量填充到卷积核一次卷积所在的图像区域,两次卷积所在图像区域的重叠区域按对应位置进行累加。在CNN的训练过程中,col2img操作通常由向量计算单元实现,时间开销很大,严重影响整个网络的训练效率。目前正在研究如何减少col2img操作所花费的时间的方案,以便于提高训练CNN的效率。
发明内容
本申请提供了一种运算加速器、数据处理方法及运算加速系统,在计算损失函数对卷 积层的输入矩阵的偏导数时,可以避免col2img操作,计算效率高。
第一方面本申请实施例提供了一种运算加速器,该运算加速器包括:
第一存储器,用于存储第一矩阵,所述第一矩阵的每一行或每一列为第二矩阵的一个子矩阵转换的向量,所述第二矩阵为损失函数的输出值对卷积层输出的卷积结果的偏导数,所述损失函数为所述卷积层所属的卷积神经网络的损失函数,所述子矩阵包括(H×W×N)个元素,H、W和N均为大于0的整数,N为在所述卷积层执行卷积运算得到所述卷积结果所用到的卷积核的数量,H为所述卷积核的长度,W为所述卷积核的宽度;
第二存储器,用于存储第三矩阵,所述第三矩阵为第四矩阵经过转置和反向排列得到的矩阵,所述第四矩阵为在所述卷积层执行卷积运算得到所述卷积结果所使用的权重矩阵,所述第四矩阵包括所述卷积核;
分别与所述第一存储器、所述第二存储器连接的运算电路;
所述运算电路,用于获取所述第一矩阵和所述第三矩阵,计算所述第一矩阵和所述第三矩阵的乘积,得到第五矩阵,所述第五矩阵为所述损失函数对第六矩阵的偏导数,所述第六矩阵为所述运算电路在所述卷积层执行卷积运算得到所述卷积结果所使用的输入矩阵。
本申请实施例中,运算电路计算第一矩阵和第三矩阵的乘积,得到损失函数对卷积层的输入矩阵的偏导数,不需要col2img操作,计算效率高。
在一个可选的实现方式中,所述运算加速器还包括:
第三存储器,用于存储所述第二矩阵;
与所述第三存储器和矩阵转换器连接的直接内存访问控制器DMAC,所述矩阵转换器与所述第一存储器连接;
所述DMAC,用于将所述第二矩阵从所述第三存储器传输至所述矩阵转换器;
所述矩阵转换器,用于采用img2col操作处理所述第二矩阵得到所述第一矩阵,将所述第一矩阵发送至所述第一存储器。
img2col操作可以是按照卷积核的大小将一个大矩阵(X),重叠地划分为多个子矩阵,并将每个子矩阵序列化成向量,最后得到另外一个矩阵X’。
在该实现方式中,采用img2col操作处理第二矩阵得到第一矩阵,并存储该第一矩阵,以便于计算损失函数对卷积层的输入矩阵的偏导数,实现简单。
在一个可选的实现方式中,所述运算加速器还包括:
第三存储器,用于存储所述第二矩阵;
与所述第三存储器和矩阵转换器连接的直接内存访问控制器DMAC,所述矩阵转换器与所述第一存储器连接;
所述DMAC,用于将所述第二矩阵从所述第三存储器传输至所述矩阵转换器;
所述矩阵转换器,用于在采用img2col操作处理所述第二矩阵的过程中,将得到的行向量或列向量发送至所述第一存储器。
在采用img2col操作处理所述第二矩阵的过程中,可以依次得到多个行向量或列向量。每得到一个或几个行向量就将得到的行向量存储至所述第一存储器,或者,每得到一个或几个列向量就将得到的列向量存储至所述第一存储器,而不是等到采用img2col操作处理完整个第二矩阵后,再将得到的全部行向量或全部列向量进行存储。
在该实现方式中,在采用img2col操作处理第二矩阵的过程中,将得到的行向量或列向量存储至第一存储器,可以同时执行img2col操作和存储操作,提高处理效率。
在一个可选的实现方式中,所述矩阵转换器,具体用于在所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充所述第二矩阵,采用img2col操作处理零填充后的所述第二矩阵,其中,零填充所述第二矩阵是在所述第二矩阵的每一行之前增加(S1-1)行全0的数据,在所述第二矩阵的每一列之前增加(S2-1)行全0的数据,S1、S2均为大于0的整数;或者,
所述矩阵转换器,具体用于在所述卷积核高度滑动的步长S1和宽度滑动的步长S2均不大于1的情况下,采用img2col操作处理所述第二矩阵。
在所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,采用img2col操作处理所述第二矩阵,不能得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵。在所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,采用img2col操作处理零填充后的所述第二矩阵,可以得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵。在所述卷积核高度滑动的步长S1和宽度滑动的步长S2均不大于1的情况下,采用img2col操作处理所述第二矩阵,能够得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵。因此,在采用img2col操作处理所述第二矩阵之前,需要卷积核高度滑动的步长S1或宽度滑动的步长确定是否对所述第二矩阵进行零填充。
在该实现方式中,在卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充第二矩阵,以便于采用img2col操作处理该零填充后的第二矩阵,得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵,适用于不同步长的网络,应用范围广、实现简单。
在一个可选的实现方式中,所述运算加速器还包括:
与所述DMAC连接的控制单元;
所述控制单元,用于在确定所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,控制所述矩阵转换器零填充所述第二矩阵。
在该实现方式中,控制单元在卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,控制矩阵转换器零填充第二矩阵,以便得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵,实现简单。
在一个可选的实现方式中,所述运算加速器还包括:
第四存储器,用于存储所述第四矩阵,所述第四矩阵为(H×W×C)×N矩阵,所述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为所述第四矩阵的一行;
与所述第四存储器和矩阵转换器连接的直接内存访问控制器DMAC,所述矩阵转换器与所述第二存储器连接;
所述DMAC,用于将所述第四矩阵从所述第四存储器传输至所述矩阵转换器;
所述矩阵转换器,用于将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵,将得到的所述第三矩阵发送至所述第二存储器,所述第三矩阵为(H×W×N)×C矩阵,C为大于0的整数,C为所述卷积核的深度。
在该实现方式中,对第四矩阵包含的(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵,得到第三矩阵,以便于计算损失函数对卷积层的输入矩阵的偏导数,实现简单。
在一个可选的实现方式中,所述运算加速器还包括:
第四存储器,用于存储所述第四矩阵,所述第四矩阵为(H×W×C)×N矩阵,所述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为所述第四矩阵的一行;
与所述第四存储器和矩阵转换器连接的直接内存访问控制器DMAC,所述矩阵转换器与所述第二存储器连接;
所述DMAC,用于将所述第四矩阵从所述第四存储器传输至所述矩阵转换器;
所述矩阵转换器,用于在将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵的过程中,将完成转置和反向排列的参数子矩阵发送至所述第二存储器,所述第三矩阵为(H×W×N)×C矩阵,C为大于0的整数,C为所述卷积核的深度。
在该实现方式中,在转置和反向排列参考子矩阵的同时,将完成转置和反向排列的参考子矩阵进行存储,可以减少存储所需的时间,提高处理效率。
在一个可选的实现方式中,所述控制单元,还用于判断膨胀系数是否大于1;在判断膨胀系数大于1后,指示所述矩阵转换器扩展第四矩阵,其中,膨胀系数为dilation=[d1,d2];
所述矩阵转换器,还用于在第四矩阵的第2行至最后一行的每行前面填充(d1-1)行0,在第四矩阵的第2列至最后一列的每列前面填充(d2-1)列0。
矩阵转换器在接收到控制单元的指示后,扩展所述第四矩阵。控制单元判断膨胀系数是否大于1可以是判断d1或d2是否大于1。
在该实现方式中,在膨胀系数大于1的情况下,矩阵转换器在转置和反向排列第四矩阵之前,扩展第四矩阵,以便于得到计算损失函数对输入矩阵的偏导数所需的矩阵,实现简单。
在一个可选的实现方式中,所述第一矩阵为(H1×W1)×(H×W×N)矩阵,所述第二矩阵为H1×W1×N矩阵,所述第三矩阵为(H×W×N)×C矩阵,其中,H1、W1和C均为大于0的整数,H1和W1分别为所述第二矩阵的长度和宽度,C为所述卷积核的深度。
第二方面本申请实施例提供了一种数据处理方法,应用于运算加速器,所述运算加速器包括运算电路,该方法包括:
所述运算电路获取第一矩阵和第三矩阵;所述第一矩阵的每一行或每一列为第二矩阵的一个子矩阵转换的向量,所述第二矩阵为损失函数的输出值对卷积层输出的卷积结果的偏导数,所述损失函数为所述卷积层所属的卷积神经网络的损失函数,所述子矩阵包括(H×W×N)个元素,H、W和N均为大于0的整数,N为在所述卷积层执行卷积运算得到所述卷积结果所用到的卷积核的数量,H为所述卷积核的长度,W为所述卷积核的宽度;所述第三矩阵为第四矩阵经过转置和反向排列得到的矩阵,所述第四矩阵为在所述卷积层执行卷积运算得到所述卷积结果所使用的权重矩阵,所述第四矩阵包括所述卷积核;
所述运算电路计算所述第一矩阵和所述第三矩阵的乘积,得到第五矩阵,所述第五矩 阵为所述损失函数对第六矩阵的偏导数,所述第六矩阵为所述运算电路在所述卷积层执行卷积运算得到所述卷积结果所使用的输入矩阵。
本申请实施例中,控制单元控制运算电路计算第一矩阵和第二矩阵的乘积,得到损失函数对卷积层的输入矩阵的偏导数,不需要col2img操作,计算效率高。
在一个可选的实现方式中,所述运算加速器还包括第一存储器、第三存储器、矩阵转换器以及直接内存访问控制器DMAC,所述运算电路获取第一矩阵和第三矩阵之前,所述方法还包括:
所述DMAC将所述第二矩阵从所述第三存储器传输至所述矩阵转换器;
所述矩阵转换器采用img2col操作处理所述第二矩阵得到所述第一矩阵,将所述第一矩阵发送至所述第一存储器;
所述运算电路获取第一矩阵和第三矩阵包括:
所述运算电路从所述第一存储器获取所述第一矩阵。
在该实现方式中,采用img2col操作处理第二矩阵得到第一矩阵,并存储该第一矩阵,以便于计算损失函数对卷积层的输入矩阵的偏导数,实现简单。
在一个可选的实现方式中,所述运算加速器还包括第一存储器、第三存储器、矩阵转换器以及直接内存访问控制器DMAC,所述运算电路获取第一矩阵和第三矩阵之前,所述方法还包括:
所述DMAC将所述第二矩阵从所述第三存储器传输至所述矩阵转换器;
所述矩阵转换器在采用img2col操作处理所述第二矩阵的过程中,将得到的行向量或列向量发送至所述第一存储器;
所述运算电路获取第一矩阵和第三矩阵包括:
所述运算电路从所述第一存储器获取所述第一矩阵。
在该实现方式中,在采用img2col操作处理第二矩阵的过程中,将得到的行向量或列向量存储至第一存储器,可以同时执行img2col操作和存储操作,提高处理效率。
在一个可选的实现方式中,所述矩阵转换器采用img2col操作处理所述第二矩阵得到所述第一矩阵,将所述第一矩阵发送至所述第一存储器包括:
所述矩阵转换器在所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充所述第二矩阵,采用img2col操作处理零填充后的所述第二矩阵,其中,零填充所述第二矩阵是在所述第二矩阵的每一行之前增加(S1-1)行全0的数据,在所述第二矩阵的每一列之前增加(S2-1)行全0的数据,S1、S2均为大于0的整数;或者,
所述矩阵转换器在所述卷积核高度滑动的步长S1和宽度滑动的步长S2均不大于1的情况下,采用img2col操作处理所述第二矩阵。
在该实现方式中,在卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充第二矩阵,以便于采用img2col操作处理该零填充后的第二矩阵,得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵,适用于不同步长的卷积核,实现简单。
在一个可选的实现方式中,所述运算加速器还包括与所述矩阵转换器连接的控制单元,所述零填充所述第二矩阵包括:
所述控制单元在确定所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情 况下,控制所述矩阵转换器零填充所述第二矩阵。
在该实现方式中,控制单元在卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,控制矩阵转换器零填充第二矩阵,以便得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵,实现简单。
在一个可选的实现方式中,所述运算加速器还包括第二存储器、第四存储器、矩阵转换器以及直接内存访问控制器DMAC,所述运算电路获取第一矩阵和第三矩阵之前,所述方法还包括:
所述DMAC将所述第四矩阵从所述第四存储器传输至所述矩阵转换器,所述第四矩阵为(H×W×C)×N矩阵,所述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为所述第四矩阵的一行;
所述矩阵转换器将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵,将得到的所述第三矩阵发送至所述第二存储器,所述第三矩阵为(H×W×N)×C矩阵,C为大于0的整数,C为所述卷积核的深度;
所述运算电路获取第一矩阵和第三矩阵包括:
所述运算电路从所述第二存储器获得所述第三矩阵。
在该实现方式中,对第四矩阵包含的(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵,得到第三矩阵,以便于计算损失函数对卷积层的输入矩阵的偏导数,实现简单。
在一个可选的实现方式中,所述运算加速器还包括第二存储器、第四存储器、矩阵转换器以及直接内存访问控制器DMAC,所述运算电路获取第一矩阵和第三矩阵之前,所述方法还包括:
所述DMAC将所述第四矩阵从所述第四存储器传输至所述矩阵转换器,所述第四矩阵为(H×W×C)×N矩阵,所述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为所述第四矩阵的一行;
所述矩阵转换器在将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵的过程中,将完成转置和反向排列的参数子矩阵发送至所述第二存储器,所述第三矩阵为(H×W×N)×C矩阵,C为大于0的整数,C为所述卷积核的深度;
所述运算电路获取第一矩阵和第三矩阵包括:
所述运算电路从所述第二存储器获得所述第三矩阵。
在该实现方式中,通过访存指令对第四矩阵进行转置和反向排列,可以提高处理效率。
在一个可选的实现方式中,所述运算加速器还包括与所述矩阵转换器连接的控制单元,所述矩阵转换器将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵之前,所述方法还包括:
所述控制单元在判断膨胀系数大于1后,指示所述矩阵转换器扩展所述第四矩阵,其中,膨胀系数为dilation=[d1,d2];
所述矩阵转换器在所述第四矩阵的第2行至最后一行的每行前面填充(d1-1)行0,在所述第四矩阵的第2列至最后一列的每列前面填充(d2-1)列0。
在该实现方式中,在膨胀系数大于1的情况下,矩阵转换器在转置和反向排列第四矩 阵之前,扩展第四矩阵,以便于得到计算损失函数对输入矩阵的偏导数所需的矩阵,实现简单。
在一个可选的实现方式中,所述第一矩阵为(H1×W1)×(H×W×N)矩阵,所述第二矩阵为H1×W1×N矩阵,所述第三矩阵为(H×W×N)×C矩阵,其中,H1、W1和C均为大于0的整数,H1和W1分别为所述第二矩阵的长度和宽度,C为所述卷积核的深度。
在一个可选的实现方式中,所述控制单元控制所述运算电路计算所述第一矩阵和所述第三矩阵的乘积,得到第五矩阵之后,所述方法还包括:
利用所述第五矩阵更新所述第四矩阵。
在该实现方式中,通过第五矩阵更新第四矩阵,实现简单、更新效率高。
第三方面,本申请实施例提供了一种运算加速系统,所述运算加速系统包括处理器、运算加速器以及存储器,所述运算加速器在所述处理器的控制下调用所述存储器中的数据执行上述第二方面以及任意一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为本申请提供的一种卷积运算过程的示意图;
图2为本申请提供的一种采用img2col操作转换矩阵的流程示意图;
图3为本申请提供的一种img2col操作的示意图;
图4为本申请提供的一种col2img操作的示意图;
图5为本申请提供的一种卷积核膨胀示意图;
图6为本申请提供的一种卷积运算的正向计算流程图;
图7为本申请实施例提供的一种更新输入矩阵的方法流程图;
图8为本申请实施例提供的一种计算损失函数对卷积层的输入矩阵的偏导数的示意图;
图9为本申请实施例提供的另一种计算损失函数对卷积层的输入矩阵的偏导数的示意图;
图10A为本申请实施例提供的一种运算加速器的硬件结构图;
图10B为本申请实施例提供的一种矩阵转换器的结构示意图;
图11为本申请实施例提供的一种矩阵对比示意图;
图12为本申请实施例提供了一种数据处理方法流程图。
具体实施方式
下面首先介绍一下本申请涉及的一些术语以及相关知识。
卷积神经网络(Convosutionas Neuras Network,CNN)是一种带有卷积结构的神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积 层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。这其中隐含的原理是:图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,我们都能使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。
卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。
权重矩阵的格式包括四个维度:卷积核高度、卷积核宽度、输入通道数(卷积核深度)、输出通道数(卷积核个数)。在卷积层仅使用一个卷积核进行卷积时,权重矩阵就是卷积核。在卷积层使用两个或两个以上卷积核进行卷积时,权重矩阵可以是卷积层进行卷积所使用的各卷积核组成的矩阵。
卷积就是卷积核跟图像矩阵(卷积层的输入矩阵)的运算。通常输入矩阵是卷积时根据卷积核的步长(stride)从输入数据提取出来的输入矩阵(input matrix)。卷积核是一个小窗口,记录的是权重。卷积核在输入矩阵上按步长滑动,每次滑动卷积核对应输入矩阵的一个子矩阵,将卷积核中的权值和该子矩阵包含的值相乘再相加,赋给卷积核当前在输出特征图(输出矩阵)对应的一个元素。图1为本申请提供的一种卷积运算过程的示意图。如图1所示,卷积核为3×3矩阵,输入矩阵为5×5矩阵,卷积核当前与输入矩阵中灰色区域的子矩阵相对应,卷积核当前对应输出矩阵中位置为(1,1)的元素,该元素的值为i*A(0,0)+h*A(1,0)+g*A(2,0)+f*A(0,1)+e*A(1,1)+d*A(2,1)+c*A(0,2)+b*A(1,2)+a*A(2,2)。其中,A(0,0)表示输入矩阵为位置为(0,0)的元素的值,依次类推。
卷积核沿图像矩阵的高度方向移动一次的步长为卷积核高度滑动的步长,卷积核沿图像矩阵的宽度方向移动一次的步长为卷积核宽度滑动的步长。卷积核的滑动步长用参数stride表示。通常输入矩阵是卷积时根据卷积核的步长(stride)从输入数据提取出来的。举例来说,stride=[s1,s2],s1表示卷积核高度滑动的步长,s2表示卷积核宽度滑动的步长。
img2col操作是指按照卷积核的大小将一个卷积层的输入矩阵X,划分为多个子矩阵,并将每个子矩阵序列化成向量,最后得到另外一个矩阵X’。可以理解,img2col操作做的事情可以是对于卷积核每一次要处理的小窗(输入矩阵的子矩阵),将其展开到新矩阵的一行(列),新矩阵的行(列)数就是卷积运算的次数(卷积核滑动的次数)。
图2为本申请提供的一种采用img2col操作转换矩阵的流程示意图,如图2所示,输入矩阵大小为3×3,卷积核大小为2×2,步长为1。图2中,3×3矩阵为输入矩阵,4×4 矩阵为采用img2col操作处理该输入矩阵得到的新矩阵,具体操作流程如下:将椭圆区域201包含的子矩阵
Figure PCTCN2018108018-appb-000001
展开为行向量[1 2 1 1],作为新矩阵的第一行;卷积核滑动一个步长后,将椭圆区域202包含的子矩阵
Figure PCTCN2018108018-appb-000002
展开为行向量[2 0 1 3],作为新矩阵的第二行。同理,将子矩阵
Figure PCTCN2018108018-appb-000003
展开为行向量[1 1 0 2],作为新矩阵的第三行;将子矩阵
Figure PCTCN2018108018-appb-000004
展开为行向量[1 3 2 2],作为新矩阵的第四行。图3为本申请提供的一种img2col操作的示意图。如图3所示,输入图像(输入矩阵)是一个3维图像,每一个Patch表示一个子图像块,采用img2col操作处理该输入图像就是将每一个Patch转换为一个行向量,并依次作为新矩阵的行向量。例如,图中的块1(Patch1)转换的行向量为新矩阵的第一行,块2(Patch2)转换的行向量作为新矩阵的第二行。举例来说,一个3维输入图像的大小为C×H1×W1,一个卷积核的大小为C×H×W,C表示输入图像以及卷积核的通道数,即深度,按照该卷积核采用img2col操作处理该输入图像得到的矩阵的大小为(H1×W1)×(H×W×C)。img2col操作可以写为im2col操作。也就是说,im2col与img2col的含义相同。图3中的im2col表示img2col操作。
col2img操作相当于img2col操作的反过程,即把每个行向量填充到卷积核一次卷积所在的图像区域,两次卷积所在图像区域的重叠区域按对应位置进行累加。col2img操作在向量计算单元中处理,开销很大。图4为本申请提供的一种col2img操作的示意图。如图4所示,采用col2img操作可以将(H1×W1)×(H×W×C)矩阵,转换为C×H1×W1矩阵。col2img操作可以写为col2im操作。也就是说,col2img和col2im的含义相同。
卷积核膨胀是将卷积核扩张到膨胀尺度约束的尺度中,并将原卷积核没有占用的区域填充零。卷积核膨胀对应一个膨胀系数dilation。膨胀的卷积核尺寸=膨胀系数*(原始卷积核尺寸-1)+1。可以理解,当膨胀系数dilation=1时,卷积核没有变化。假设卷积核为3×3矩阵,膨胀系数为2,则卷积核膨胀之后,卷积核的单边尺寸就变成了2×(3-1)+1,即卷积核的尺寸变成了5×5。图5为本申请提供的一种卷积核膨胀示意图,膨胀系数dilation=[d1,d2],d1=2,d2=3,卷积核由3×3膨胀到了5×7。从图5可以看出,原卷积核从第2行至第3行每行前面填充(d1-1)行0,从第2列至第3列的每列前面填充(d2-1)列0。
卷积运算是卷积神经网络中最重要的一个算子。图6为一种卷积运算的正向计算流程图,如图6所示,X表示输入特征图(卷积层的输入矩阵),X’表示采用img2col操作处理X得到的矩阵,W表示权重矩阵,b表示偏置,Y 0表示X’和W矩阵乘积的结果,Y表示输出特征图(卷积层的输出矩阵)。图6中,601表示采用img2col操作处理X,得到X’;602表示计算X’和W的乘积,得到Y 0;603表示在Y 0的基础上增加偏置b,得到输入特征图Y。可选的,经过可选的Activation操作,计算输出Y中每个元素的激活值,得到最后的结果。
下面以卷积神经网络中一个卷积层的计算过程为例,说明卷积层的输入如何进行更新。图7为本申请实施例提供的一种更新输入矩阵的方法流程图。如图7所示,X表示卷积层 的输入矩阵,Label表示真实值,即向卷积层输入X期望得到的值,卷积层的输入为X和Label,输出为经过卷积层处理得到的Y。X可以是根据卷积核的步长(stride)从输入数据提取出来的输入矩阵,也可以是其他层(卷积层、池化层、神经网络层)输出的特征矩阵。具体计算过程如下:向卷积层输入Label和X;卷积层计算X和卷积核(权重矩阵)的卷积,输出卷积结果Y;计算卷积结果Y和Label之差,得到反向的输入dE/dY;经过反向网络计算得到dE/dX;将卷积层的输入矩阵X调整为X’,X’=X-dE/dX;重复上述操作直至dE/dY满足要求或者达到训练次数。其中,从向卷积层输入X和Label至输出Y的过程为正向计算过程;计算Y和Label之差至得到dE/dX的过程为反向过程。图7只是提供一种计算dE/dY的具体举例,并不是限于这一种方式。
下面介绍计算损失函数对卷积层的输入矩阵的偏导数的方法。图8为本申请实施例提供的一种计算损失函数对卷积层的输入矩阵的偏导数的示意图。如图8所示,输入矩阵X为C×H1×W1矩阵,H1、W1和C依次为该输入矩阵的高度、宽度和深度;一个卷积核为C×H×W矩阵,权重矩阵W包括N个卷积核,即为(C×H×W)×N矩阵,H、W分别为卷积核的高度和宽度;输出矩阵Y为H×W×N矩阵。具体的计算过程如下:
(1)、从存储器中获取dE/dY和权重矩阵W。
存储器可以是双倍速率同步动态随机存储器(Double Data Rate,DDR)、高带宽存储器(High Bandwidth Memory,HBM)等。dE/dY是指损失函数对卷积层输出的卷积结果的偏导数。dE/dY的计算是本领域常用的一种手段,前述实施例已介绍一种计算dE/dY的方法,本申请实施例不再详述。
(2)、对权重矩阵W进行转置得到W T
W T为N×(C×H×W)矩阵。
(3)、计算dE/dY和W T的卷积,得到dE/dx’。
dE/dx’为(H1×W1)×(C×H×W)矩阵。
(4)、采用col2img操作处理dE/dx’,得到最终的dE/dX。
dE/dX为H1×W1×C矩阵。col2img操作在向量计算单元中处理,开销很大。
采用上述方法计算损失函数对卷积层的输入矩阵的偏导数,需要采用col2img操作处理dE/dx’,时间开销较大,计算效率低。
图9为本申请实施例提供的另一种计算损失函数对卷积层的输入矩阵的偏导数的示意图。如图9所示,输入矩阵X为C×H1×W1矩阵,H1、W1和C依次为该输入矩阵的高度、宽度和深度;一个卷积核为C×H×W矩阵,权重矩阵W包括N个卷积核,即为(C×H×W)×N矩阵,H、W分别为卷积核的高度和宽度;输出矩阵Y为H×W×N矩阵。具体的计算过程如下:
(1)、从存储器中获取dE/dY和权重矩阵W。
存储器可以是双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM)、高带宽存储器(High Bandwidth Memory,HBM)等。dE/dY是指损失函数对卷积层输出的卷积结果的偏导数。dE/dY的计算是本领域常用的一种手段,前述实施例已介绍一种计算dE/dY的方法,本申请实施例不再详述。
(2)、将权重矩阵W包括的(H×W)个参考子矩阵分别进行转置,并按行反向排列 上述(H×W)个参考子矩阵,得到W’。
W’为(N×H×W)×C矩阵。W’为下文提到的第三矩阵。
(3)、采用img2col操作处理dE/dY,得到img2col(dE/dY)。
img2col(dE/dY)为(H1×W1)×(N×H×W)矩阵。img2col(dE/dY)为下文提到的第一矩阵。
(4)、计算img2col(dE/dY)和W’的乘积,得到dE/dX。
dE/dX为H1×W1×C矩阵。
采用上述方法计算损失函数对卷积层的输入矩阵的偏导数,不需要采用col2img操作处理dE/dx’,计算效率高。
图10A为本申请实施例提供的一种运算加速器的硬件结构图。运算加速器可以是神经网络处理器(Neural Network Processing Unit,NPU)或者其他处理器,可以应用到手机、平板电脑、服务器、可穿戴设备等可执行卷积运算的设备中。如图10A所示,运算加速器100作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。运算加速器的核心部分为运算电路1003,通过控制单元1009控制运算电路1003提取存储器中的矩阵数据并进行乘法运算。运算加速器100也可以与CPU集成在一起。图10A中的CPU、运算加速器以及外部存储器(图中的DDR/HBM)可以构成一个运算加速系统。具体的,运算加速器在CPU的控制下调用所述外部存储器中的数据执行本申请任意实施例中的数据处理方法。图10A中的DDR是指DDR SDRAM。
在一些实现中,运算电路1003内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路1003是二维脉动阵列。运算电路1003还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1003是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路1003从权重存储器1002中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路1003从输入存储器1001中取矩阵A数据与矩阵B进行矩阵运算,然后在累加器1005 accumulator中进行加法操作,得到的矩阵的部分结果或最终结果,保存在统一存储器1006。
统一存储器1006用于存放输入数据以及输出数据。权重数据(权重矩阵)通过直接内存访问控制器(Direct Memory Access Controller,DMAC)1005被搬运到权重存储器1002中。输入数据(输入矩阵)也通过DMAC被搬运到统一存储器1006或输入存储器1001中。
DMAC1008主要用于将外部存储器DDR或HBM中的输入数据(输入矩阵)搬运到统一存储器1006或矩阵转换器1007,或者,将统一存储器1006中的输出数据搬运到DDR或HBM。
向量计算单元1004包括多个运算处理单元,在需要的情况下,对运算电路1003的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/非FC层网络计算,如Pooling(池化),Batch Normalization(批归一化),Local Response Normalization(局部响应归一化)等。
在一些实现中,向量计算单元1004能将经处理的输出的向量存储到统一存储器1006。例如,向量计算单元1004可以将非线性函数应用到运算电路1003的输出,例如累加值的 向量,用以生成激活值。在一些实现中,向量计算单元1004生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1003的激活输入,例如用于在神经网络中的后续层中的使用。
矩阵转换器1007用于采用img2col操作处理DMAC搬运来的输入数据(输入矩阵),并将得到的矩阵发送至输入存储器;实现DMAC搬运来的权重矩阵的转置,并将转置后的权重矩阵发送至权重存储器1002。矩阵转换器1007可以是一个独立的硬件,也可以与其他元器件集成在一起,例如集成在DMAC中。
控制单元1009,用于控制运算加速器中处理流程以及数据读取。也就是说,控制单元1009可以控制运算加速器中的各部件,例如控制矩阵转换器1007、DMAC1008等。
统一存储器1006,输入存储器1001,权重存储器1002均为On-Chip存储器。外部存储器,即DDR/HBM可以私有于该运算加速器硬件架构,也可以作为该运算加速器的一部分。
图10A中介绍矩阵转换器的结构,下面介绍一下矩阵转换器的结构以及如何实现img2col操作。图10B为本申请实施例提供的一种矩阵转换器的结构示意图,如图10B所示,矩阵转换器可包括:
逻辑控制器,用于解析控制单元1009发送的指令或CPU发送的指令;
地址生成器,用于根据逻辑控制器的解析结果确定待从存储器1获取的数据的地址以及待向存储器2发送的数据在存储器待占用的地址;
缓存器,用于在逻辑控制器的控制下存储来自存储器1的数据以及向存储器2发送数据。
所述解析结果可以包括卷积核的步长(srtide)、存储器1中输入矩阵的大小、该输入矩阵在存储器1中的存储信息等。图10B中的存储器1可以是图10A中的DMAC,图10B中的存储器1可以是图10A中的输入存储器1001或权重存储器1002。
矩阵转换器实现img2col操作的过程如下:逻辑控制器接收控制单元或CPU发送的指令,解析该指令得到实现img2col操作所需的目标参数(解析结果);逻辑控制器将上述目标参数发送给地址生成器;地址生成器根据上述目标参数生成第一地址和第二地址;将存储器1中第一地址对应的数据写入缓存器;缓存器按照逻辑控制器的指示存储来自存储器1的数据,并按照逻辑控制器的指示将其存储的数据写入到存储器2中的第二地址。
基于图10A提供的运算加速器的硬件结构图,下面具体介绍在计算损失函数对输入矩阵的偏导数过程中,各元器件所起的作用。
输入存储器1001,用于存储第一矩阵,上述第一矩阵的每一行或每一列为第二矩阵的一个子矩阵转换的向量,上述第二矩阵为损失函数的输出值对卷积层输出的卷积结果的偏导数,上述损失函数为上述卷积层所属的卷积神经网络的损失函数,上述子矩阵包括(H×W×N)个元素,H、W和N均为大于0的整数,N为在上述卷积层执行卷积运算得到上述卷积结果所用到的卷积核的数量,H为上述卷积核的长度,W为上述卷积核的宽度;
权重存储器1002,用于存储第三矩阵,上述第三矩阵为第四矩阵经过转置和反向排列得到的矩阵,上述第四矩阵为在上述卷积层执行卷积运算得到上述卷积结果所使用的权重矩阵,上述第四矩阵包括上述卷积核;
分别与上述输入存储器1001、上述权重存储器1002连接的运算电路1003;
上述运算电路1003,用于获取上述第一矩阵和上述第三矩阵,计算上述第一矩阵和上述第三矩阵的乘积,得到第五矩阵,上述第五矩阵为上述损失函数对第六矩阵的偏导数,上述第六矩阵为上述运算电路在上述卷积层执行卷积运算得到上述卷积结果所使用的输入矩阵。
本申请实施例中,第一存储器可以输入存储器1001,第二存储器可以是权重存储器1002。也就是说,第一存储器用于存储第一矩阵,第二存储器用于存储第二矩阵。本申请实施例中,可以仅限定运算加速器中权重存储器1002、输入存储器1001以及运算电路1003的功能,不对其它元器件的功能作限定。
本申请实施例中,运算电路计算第一矩阵和第二矩阵的乘积,得到损失函数对卷积层的输入矩阵的偏导数,不需要col2img操作,计算效率高。
前述实施例未详述如何得到第一矩阵的方法,下面介绍与得到第一矩阵相关的元器件的作用。
在一个可选的实现方式中,DDR/HBM,用于存储上述第二矩阵;
DMAC1008,用于将上述第二矩阵从DDR/HBM传输至矩阵转换器1007;
矩阵转换器1007,用于采用img2col操作处理上述第二矩阵得到上述第一矩阵,将上述第一矩阵发送至输入存储器1001。可选的,统一存储器1006,用于存储上述第二矩阵。DDR/HBM是指DDR或者HBM。
上述第一矩阵可以是整个上述第二矩阵转换的矩阵,也可以是上述第二矩阵的一部分转换的矩阵。可选的,矩阵转换器1007在采用img2col操作处理上述第二矩阵的过程中,可以依次得到多个行向量或列向量。每得到一个或几个行向量(第一矩阵)就将得到的行向量存储至上述第一存储器,或者,每得到一个或几个列向量(第一矩阵)就将得到的列向量存储至上述第一存储器,而不是等到采用img2col操作处理完整个第二矩阵后,再将得到的全部行向量或全部列向量进行存储。可选的,将整个上述第二矩阵完成转换后,再将转换得到的矩阵发送至输入存储器1001。
本申请实施例中,第三存储器可以是图10A中的DDR/HBM。也就是说,硬件加速器中的第三存储器存储上述第二矩阵。从图10A可看出,DMAC1008分别与DDR/HBM和矩阵转换器1007连接,矩阵转换器1007与输入存储器1001和权重存储器1002分别连接。
可选的,上述第一矩阵为(H1×W1)×(H×W×N)矩阵,上述第二矩阵为H1×W1×N矩阵,上述第三矩阵为(H×W×N)×C矩阵,其中,H1、W1和C均为大于0的整数,H1和W1分别为上述第二矩阵的长度和宽度,C为上述卷积核的深度。img2col操作可以是按照卷积核的大小将一个大矩阵(X),重叠地划分为多个子矩阵,并将每个子矩阵序列化成向量,最后得到另外一个矩阵X’。如图3所示,左边表示第二矩阵,右边表示第一矩阵,每个Pitch对应该第二矩阵的一个子矩阵,每个子矩阵的大小为H×W×N,每个子矩阵(Pitch)展开为该第一矩阵中的一个行向量。其中,H、W和N依次为卷积核的高度、宽度和个数。例如第二矩阵中的Pitch1展开为第一矩阵中的第一行。在实际应用中,矩阵转换器1007可以采用img2col操作处理上述第二矩阵,得到上述第一矩阵。
在该实现方式中,采用img2col操作处理第二矩阵得到第一矩阵,并存储该第一矩阵, 以便于计算损失函数对卷积层的输入矩阵的偏导数,实现简单。
在一个可选的实现方式中,矩阵转换器1007,具体用于在上述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充上述第二矩阵,采用img2col操作处理零填充后的上述第二矩阵,其中,零填充上述第二矩阵是在上述第二矩阵的每一行之前增加(S1-1)行全0的数据,在上述第二矩阵的每一列之前增加(S2-1)行全0的数据,S1、S2均为大于0的整数;或者,
矩阵转换器1007,具体用于在上述卷积核高度滑动的步长S1和宽度滑动的步长S2均不大于1的情况下,采用img2col操作处理上述第二矩阵。
可选的,控制单元1009,用于在确定上述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,控制矩阵转换器1007零填充上述第二矩阵。
在该实现方式中,在卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充第二矩阵,以便于采用img2col操作处理该零填充后的第二矩阵,得到计算损失函数对卷积层的输入矩阵的偏导数所需的矩阵,适用于不同步长的网络,应用范围广、实现简单。
前述实施例未详述如何得到第三矩阵的方法,下面介绍与得到第三矩阵相关的元器件的作用。
在一个可选的实现方式中,DDR/HBM,用于存储上述第四矩阵,上述第四矩阵为(H×W×C)×N矩阵,上述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为上述第四矩阵的一行;
DMAC1008,用于将上述四矩阵从DDR/HBM传输至矩阵转换器1007;
矩阵转换器1007,用于将上述(H×W)个参考子矩阵分别进行转置,并按行反向排列上述(H×W)个参考子矩阵,将得到的上述第三矩阵发送至权重存储器1002,上述第三矩阵为(H×W×N)×C矩阵,C为大于0的整数,C为上述卷积核的深度。可选的,统一存储器1006,用于存储上述第四矩阵。
上述第三矩阵可以是将上述(H×W)个参考子矩阵转置分别,并按行反向排列得到的矩阵,也可以是上述(H×W)个参考子矩阵中的一部分参考子矩阵分别转置,并按行反向排列得到的矩阵。可选的,在将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵的过程中,将完成转置和反向排列的参数子矩阵发送至所述第二存储器。
在一个可选的实现方式中,控制单元1009,还用于判断膨胀系数是否大于1;在判断膨胀系数大于1后,指示矩阵转换器1007扩展第四矩阵;
矩阵转换器1007,还用于在第四矩阵的第2行至最后一行的每行前面填充(d1-1)行0,在第四矩阵的第2列至最后一列的每列前面填充(d2-1)列0,其中膨胀系数为dilation=[d1,d2]。
矩阵转换器在接收到控制单元的指示后,扩展所述第四矩阵。具体的扩展方式可参见图5。
在该实现方式中,在膨胀系数大于1的情况下,矩阵转换器在转置和反向排列第四矩阵之前,扩展第四矩阵,以便于得到计算损失函数对输入矩阵的偏导数所需的矩阵,实现 简单。
图11为本申请实施例提供的一种矩阵对比示意图。如图11所示,左边为第四矩阵,右边为第三矩阵,底纹相同的区域对应一个子矩阵,该第四矩阵为(H×W×C)×N矩阵,该第四矩阵的每一列对应一个卷积核,该第三矩阵为(H×W×N)×C矩阵。图11中第三矩阵中的子矩阵为C×N矩阵,该第三矩阵中的每个子矩阵转置后变为N×C矩阵,即第四矩阵中的子矩阵为N×C矩阵。如图11所示,第三矩阵中每个子矩阵的排序与第四矩阵中每一个子矩阵的排序相反。例如图11中的子矩阵00作为第三矩阵的第一行,该子矩阵转置和反向排列后的子矩阵作为第四矩阵的最后一行。
本申请实施例中,第四存储器可以是图10A中的DDR/HBM。也就是说,硬件加速器中的第四存储器存储上述第二矩阵。上述第三存储器和上述第四存储器是同一存储器。从图10A可看出,DMAC1008分别与DDR/HBM和矩阵转换器1007连接,矩阵转换器1007与输入存储器1001和权重存储器1002分别连接。
在该实现方式中,对第四矩阵包含的(H×W)个参考子矩阵分别进行转置,并按行反向排列上述(H×W)个参考子矩阵,得到第三矩阵,以便于计算损失函数对卷积层的输入矩阵的偏导数,实现简单。
基于图10A中的运算加速器的硬件结构图,本申请实施例提供了一种数据处理方法流程图,如图12所示,该方法可包括:
1201、DMAC将第四矩阵从DDR/HBM/统一存储器传输至矩阵转换器。
上述第四矩阵为(H×W×C)×N矩阵,上述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为上述第四矩阵的一行。图12中,控制单元1009,用于控制运算加速器中各部件的处理流程。
1202、矩阵转换器将上述第四矩阵包括的(H×W)个参考子矩阵分别进行转置,并按行反向排列上述(H×W)个参考子矩阵,将得到的第三矩阵存储至权重存储器。
权重存储器1002可以是本申请实施例中的第二存储器。可选的,矩阵转换器在将上述第四矩阵包括的(H×W)个参考子矩阵分别进行转置,并按行反向排列上述(H×W)个参考子矩阵的过程中,将得到的行向量或列向量发送至权重存储器,上述行向量或列向量为上述第三矩阵的一部分。可以理解,矩阵转换器向权重存储器发送的行向量或列向量可以组成上述第三矩阵。可选的,控制单元,还用于判断膨胀系数是否大于1。假定膨胀系数dilation=[d1,d2],控制单元判断d1或d2是否大于1。控制单元,还用于在判断膨胀系数大于1后,指示矩阵转换器扩展第四矩阵,即在第四矩阵的第2行至最后一行的每行前面填充(d1-1)行0,在第四矩阵的第2列至最后一列的每列前面填充(d2-1)列0。具体的扩展方式可参见图5。可选的,矩阵转换器在执行1202之前,扩展所述第四矩阵。矩阵转换器在1202中处理扩展后的第四矩阵。
1203、控制单元判断卷积核高度滑动的步长或宽度滑动的步长是否大于1。
若是,执行1205;否则,执行1204。可以理解,控制单元可以判断当前网络的stride参数,即判断卷积核高度滑动的步长或宽度滑动的步长是否大于1。
1204、DMAC将第二矩阵从DDR/HBM/统一存储器传输至矩阵转换器,矩阵转换器采用img2col操作处理第二矩阵,将得到的第一矩阵存储至输入存储器。
输入存储器1001可以是本申请实施例中的第一存储器。可选的,矩阵转换器在采用img2col操作处理第二矩阵的过程中,将得到的行向量或列向量发送至输入存储器,上述行向量或列向量为上述第一矩阵的一部分。可以理解,矩阵转换器向输入存储器发送的行向量或列向量可以组成上述第一矩阵。
1205、DMAC将第二矩阵从DDR/HBM/统一存储器传输至矩阵转换器,矩阵转换器零填充第二矩阵,采用img2col操作处理零填充后的第二矩阵,将得到的第一矩阵存储至输入存储器。
可选的,矩阵转换器在采用img2col操作处理零填充后的第二矩阵的过程中,将得到的行向量或列向量发送至输入存储器,上述行向量或列向量为上述第一矩阵的一部分。可以理解,矩阵转换器向输入存储器发送的行向量或列向量可以组成上述第一矩阵。
1206、运算电路获取第一矩阵和第三矩阵,并计算上述第一矩阵和上述第三矩阵的乘积,得到第五矩阵。
上述第五矩阵为上述损失函数对第六矩阵的偏导数,上述第六矩阵为上述卷积层执行卷积运算得到上述卷积结果的输入矩阵。可选的,控制单元控制上述运算电路从输入存储器获取上述第一矩阵,从权重存储器获取上述第二矩阵。
1207、将第五矩阵存储至统一存储器。
可选的,利用第五矩阵调整第一矩阵。具体实现方式与图7中的方法相同。
本申请实施例中,控制单元控制运算电路计算第一矩阵和第二矩阵的乘积,得到损失函数对卷积层的输入矩阵的偏导数,不需要col2img操作,计算效率高。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在运算加速器上加载或执行上述计算机程序指令时,全部或部分地产生按照本申请实施例上述的流程或功能。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state Drive,SSD)。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (15)

  1. 一种运算加速器,其特征在于,包括:
    第一存储器,用于存储第一矩阵,所述第一矩阵的每一行或每一列为第二矩阵的一个子矩阵转换的向量,所述第二矩阵为损失函数的输出值对卷积层输出的卷积结果的偏导数,所述损失函数为所述卷积层所属的卷积神经网络的损失函数,所述子矩阵包括(H×W×N)个元素,H、W和N均为大于0的整数,N为在所述卷积层执行卷积运算得到所述卷积结果所用到的卷积核的数量,H为所述卷积核的长度,W为所述卷积核的宽度;
    第二存储器,用于存储第三矩阵,所述第三矩阵为第四矩阵经过转置和反向排列得到的矩阵,所述第四矩阵为在所述卷积层执行卷积运算得到所述卷积结果所使用的权重矩阵,所述第四矩阵包括所述卷积核;
    分别与所述第一存储器、所述第二存储器连接的运算电路;
    所述运算电路,用于获取所述第一矩阵和所述第三矩阵,计算所述第一矩阵和所述第三矩阵的乘积,得到第五矩阵,所述第五矩阵为所述损失函数对第六矩阵的偏导数,所述第六矩阵为所述运算电路在所述卷积层执行卷积运算得到所述卷积结果所使用的输入矩阵。
  2. 根据权利要求1所述的运算加速器,其特征在于,所述运算加速器还包括:
    第三存储器,用于存储所述第二矩阵;
    与所述第三存储器和矩阵转换器连接的直接内存访问控制器DMAC,所述矩阵转换器与所述第一存储器连接;
    所述DMAC,用于将所述第二矩阵从所述第三存储器传输至所述矩阵转换器;
    所述矩阵转换器,用于采用img2col操作处理所述第二矩阵得到所述第一矩阵,将所述第一矩阵发送至所述第一存储器。
  3. 根据权利要求2所述的运算加速器,其特征在于,
    所述矩阵转换器,具体用于在所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充所述第二矩阵,采用img2col操作处理零填充后的所述第二矩阵,其中,零填充所述第二矩阵是在所述第二矩阵的每一行之前增加(S1-1)行全0的数据,在所述第二矩阵的每一列之前增加(S2-1)行全0的数据,S1、S2均为大于0的整数;或者,
    所述矩阵转换器,具体用于在所述卷积核高度滑动的步长S1和宽度滑动的步长S2均不大于1的情况下,采用img2col操作处理所述第二矩阵。
  4. 根据权利要求2或3所述的运算加速器,其特征在于,所述运算加速器还包括:
    与所述DMAC连接的控制单元;
    所述控制单元,用于在确定所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,控制所述矩阵转换器零填充所述第二矩阵。
  5. 根据权利要求1所述的运算加速器,其特征在于,所述运算加速器还包括:
    第四存储器,用于存储所述第四矩阵,所述第四矩阵为(H×W×C)×N矩阵,所述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为所述第四矩阵的一行;
    与所述第四存储器和矩阵转换器连接的直接内存访问控制器DMAC,所述矩阵转换器与所述第二存储器连接;
    所述DMAC,用于将所述第四矩阵从所述第四存储器传输至所述矩阵转换器;
    所述矩阵转换器,用于将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵,将得到的所述第三矩阵发送至所述第二存储器,所述第三矩阵为(H×W×N)×C矩阵,C为大于0的整数,C为所述卷积核的深度。
  6. 根据权利要求5所述的运算加速器,其特征在于,所述运算加速器还包括:
    与所述矩阵转换器连接的控制单元;
    所述控制单元,用于判断膨胀系数是否大于1;在判断膨胀系数大于1后,指示所述矩阵转换器扩展所述第四矩阵,其中,膨胀系数为dilation=[d1,d2];
    所述矩阵转换器,还用于在所述第四矩阵的第2行至最后一行的每行前面填充(d1-1)行0,在所述第四矩阵的第2列至最后一列的每列前面填充(d2-1)列0。
  7. 根据权利要求1至6任意一项所述的运算加速器,其特征在于,所述第一矩阵为(H1×W1)×(H×W×N)矩阵,所述第二矩阵为H1×W1×N矩阵,所述第三矩阵为(H×W×N)×C矩阵,其中,H1、W1和C均为大于0的整数,H1和W1分别为所述第二矩阵的长度和宽度,C为所述卷积核的深度。
  8. 一种数据处理方法,应用于运算加速器,所述运算加速器包括运算电路,其特征在于,包括:
    所述运算电路获取第一矩阵和第三矩阵;所述第一矩阵的每一行或每一列为第二矩阵的一个子矩阵转换的向量,所述第二矩阵为损失函数的输出值对卷积层输出的卷积结果的偏导数,所述损失函数为所述卷积层所属的卷积神经网络的损失函数,所述子矩阵包括(H×W×N)个元素,H、W和N均为大于0的整数,N为在所述卷积层执行卷积运算得到所述卷积结果所用到的卷积核的数量,H为所述卷积核的长度,W为所述卷积核的宽度;所述第三矩阵为第四矩阵经过转置和反向排列得到的矩阵,所述第四矩阵为在所述卷积层执行卷积运算得到所述卷积结果所使用的权重矩阵,所述第四矩阵包括所述卷积核;
    所述运算电路计算所述第一矩阵和所述第三矩阵的乘积,得到第五矩阵,所述第五矩阵为所述损失函数对第六矩阵的偏导数,所述第六矩阵为所述运算电路在所述卷积层执行卷积运算得到所述卷积结果所使用的输入矩阵。
  9. 根据权利要求8所述的数据处理方法,其特征在于,所述运算加速器还包括第一存储器、第三存储器、矩阵转换器以及直接内存访问控制器DMAC,所述运算电路获取第一矩阵和第三矩阵之前,所述方法还包括:
    所述DMAC将所述第二矩阵从所述第三存储器传输至所述矩阵转换器;
    所述矩阵转换器采用img2col操作处理所述第二矩阵得到所述第一矩阵,将所述第一矩阵发送至所述第一存储器;
    所述运算电路获取第一矩阵和第三矩阵包括:
    所述运算电路从所述第一存储器获取所述第一矩阵。
  10. 根据权利要求9所述的数据处理方法,其特征在于,所述矩阵转换器采用img2col操作处理所述第二矩阵得到所述第一矩阵,将所述第一矩阵发送至所述第一存储器包括:
    所述矩阵转换器在所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,零填充所述第二矩阵,采用img2col操作处理零填充后的所述第二矩阵,其中,零填充所述第二矩阵是在所述第二矩阵的每一行之前增加(S1-1)行全0的数据,在所述第二矩阵的每一列之前增加(S2-1)行全0的数据,S1、S2均为大于0的整数;或者,
    所述矩阵转换器在所述卷积核高度滑动的步长S1和宽度滑动的步长S2均不大于1的情况下,采用img2col操作处理所述第二矩阵。
  11. 根据权利要求9或10所述的数据处理方法,其特征在于,所述运算加速器还包括与所述矩阵转换器连接的控制单元,所述零填充所述第二矩阵包括:
    所述控制单元在确定所述卷积核高度滑动的步长S1或宽度滑动的步长S2大于1的情况下,控制所述矩阵转换器零填充所述第二矩阵。
  12. 根据权利要求8所述的数据处理方法,其特征在于,所述运算加速器还包括第二存储器、第四存储器、矩阵转换器以及直接内存访问控制器DMAC,所述运算电路获取第一矩阵和第三矩阵之前,所述方法还包括:
    所述DMAC将所述第四矩阵从所述第四存储器传输至所述矩阵转换器,所述第四矩阵为(H×W×C)×N矩阵,所述第四矩阵包括(H×W)个参考子矩阵,每个参考子矩阵为C×N矩阵且作为所述第四矩阵的一行;
    所述矩阵转换器将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵,将得到的所述第三矩阵发送至所述第二存储器,所述第三矩阵为(H×W×N)×C矩阵,C为大于0的整数,C为所述卷积核的深度;
    所述运算电路获取第一矩阵和第三矩阵包括:
    所述运算电路从所述第二存储器获得所述第三矩阵。
  13. 根据权利要求12所述的数据处理方法,其特征在于,所述运算加速器还包括与所述矩阵转换器连接的控制单元,所述矩阵转换器将所述(H×W)个参考子矩阵分别进行转置,并按行反向排列所述(H×W)个参考子矩阵之前,所述方法还包括:
    所述控制单元在判断膨胀系数大于1后,指示所述矩阵转换器扩展所述第四矩阵,其中,膨胀系数为dilation=[d1,d2];
    所述矩阵转换器在所述第四矩阵的第2行至最后一行的每行前面填充(d1-1)行0,在 所述第四矩阵的第2列至最后一列的每列前面填充(d2-1)列0。
  14. 根据权利要求8至13任意一项所述的数据处理方法,其特征在于,所述第一矩阵为(H1×W1)×(H×W×N)矩阵,所述第二矩阵为H1×W1×N矩阵,所述第三矩阵为(H×W×N)×C矩阵,其中,H1、W1和C均为大于0的整数,H1和W1分别为所述第二矩阵的长度和宽度,C为所述卷积核的深度。
  15. 一种运算加速系统,其特征在于,所述运算加速系统包括处理器、运算加速器以及存储器,所述运算加速器在所述处理器的控制下调用所述存储器中的数据执行如权利要求8-14任一项所述的方法。
PCT/CN2018/108018 2018-09-27 2018-09-27 运算加速器和数据处理方法 WO2020061924A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201880097652.8A CN112703511B (zh) 2018-09-27 2018-09-27 运算加速器和数据处理方法
PCT/CN2018/108018 WO2020061924A1 (zh) 2018-09-27 2018-09-27 运算加速器和数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/108018 WO2020061924A1 (zh) 2018-09-27 2018-09-27 运算加速器和数据处理方法

Publications (1)

Publication Number Publication Date
WO2020061924A1 true WO2020061924A1 (zh) 2020-04-02

Family

ID=69950853

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2018/108018 WO2020061924A1 (zh) 2018-09-27 2018-09-27 运算加速器和数据处理方法

Country Status (2)

Country Link
CN (1) CN112703511B (zh)
WO (1) WO2020061924A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113610221A (zh) * 2021-06-29 2021-11-05 西安电子科技大学 一种基于fpga的可变膨胀卷积运算硬件系统
CN116108902A (zh) * 2023-02-22 2023-05-12 成都登临科技有限公司 采样操作实现系统、方法、电子设备及存储介质
CN117291240A (zh) * 2023-11-24 2023-12-26 芯来智融半导体科技(上海)有限公司 卷积神经网络加速器及电子设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114936633B (zh) * 2022-06-15 2023-06-30 北京爱芯科技有限公司 用于转置运算的数据处理单元及图像转置运算方法
CN116861149B (zh) * 2023-09-05 2024-01-09 之江实验室 卷积运算的优化方法、装置及处理器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892989A (zh) * 2016-03-28 2016-08-24 中国科学院计算技术研究所 一种神经网络加速器及其运算方法
US20170200078A1 (en) * 2014-08-28 2017-07-13 Commissariat A L'energie Atomique Et Aux Energies Alternatives Convolutional neural network
CN107665365A (zh) * 2016-07-27 2018-02-06 三星电子株式会社 卷积神经网络中的加速器及其操作方法
CN108241484A (zh) * 2016-12-26 2018-07-03 上海寒武纪信息科技有限公司 基于高带宽存储器的神经网络计算装置和方法
CN108416433A (zh) * 2018-01-22 2018-08-17 上海熠知电子科技有限公司 一种基于异步事件的神经网络异构加速方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
CN108320026B (zh) * 2017-05-16 2022-02-11 腾讯科技(深圳)有限公司 机器学习模型训练方法和装置
CN108205687B (zh) * 2018-02-01 2022-04-01 通号通信信息集团有限公司 目标检测系统中基于注意力机制定位损失计算方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170200078A1 (en) * 2014-08-28 2017-07-13 Commissariat A L'energie Atomique Et Aux Energies Alternatives Convolutional neural network
CN105892989A (zh) * 2016-03-28 2016-08-24 中国科学院计算技术研究所 一种神经网络加速器及其运算方法
CN107665365A (zh) * 2016-07-27 2018-02-06 三星电子株式会社 卷积神经网络中的加速器及其操作方法
CN108241484A (zh) * 2016-12-26 2018-07-03 上海寒武纪信息科技有限公司 基于高带宽存储器的神经网络计算装置和方法
CN108416433A (zh) * 2018-01-22 2018-08-17 上海熠知电子科技有限公司 一种基于异步事件的神经网络异构加速方法和系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113610221A (zh) * 2021-06-29 2021-11-05 西安电子科技大学 一种基于fpga的可变膨胀卷积运算硬件系统
CN113610221B (zh) * 2021-06-29 2024-02-13 西安电子科技大学 一种基于fpga的可变膨胀卷积运算硬件系统
CN116108902A (zh) * 2023-02-22 2023-05-12 成都登临科技有限公司 采样操作实现系统、方法、电子设备及存储介质
CN116108902B (zh) * 2023-02-22 2024-01-05 成都登临科技有限公司 采样操作实现系统、方法、电子设备及存储介质
CN117291240A (zh) * 2023-11-24 2023-12-26 芯来智融半导体科技(上海)有限公司 卷积神经网络加速器及电子设备
CN117291240B (zh) * 2023-11-24 2024-03-15 芯来智融半导体科技(上海)有限公司 卷积神经网络加速器及电子设备

Also Published As

Publication number Publication date
CN112703511A (zh) 2021-04-23
CN112703511B (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
WO2020061924A1 (zh) 运算加速器和数据处理方法
US11645529B2 (en) Sparsifying neural network models
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
JP2019527420A (ja) 畳み込みニューラルネットワークのためのスーパーピクセル法
WO2019127838A1 (zh) 卷积神经网络实现方法及装置、终端、存储介质
CN107239824A (zh) 用于实现稀疏卷积神经网络加速器的装置和方法
WO2018139196A1 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
CN111461311B (zh) 基于众核处理器的卷积神经网络运算加速方法及装置
CN108629406B (zh) 用于卷积神经网络的运算装置
US11120101B2 (en) Matrix multiplication system and method
WO2022067508A1 (zh) 一种神经网络加速器、加速方法以及装置
JP2020126597A (ja) 計算装置と計算方法
CN113222101A (zh) 深度学习处理装置、方法、设备和存储介质
WO2024027039A1 (zh) 数据处理方法、装置、设备和可读存储介质
WO2022111002A1 (zh) 用于训练神经网络的方法、设备和计算机可读存储介质
WO2023010244A1 (zh) 神经网络加速器及神经网络加速器的数据处理方法
US20220108150A1 (en) Method and apparatus for processing data, and related products
US11822900B2 (en) Filter processing device and method of performing convolution operation at filter processing device
CN111028136B (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
WO2022151779A1 (zh) 卷积运算的实现方法、数据处理方法及装置
WO2020062299A1 (zh) 一种神经网络处理器、数据处理方法及相关设备
WO2022007265A1 (zh) 一种膨胀卷积加速计算方法及装置
WO2021082725A1 (zh) Winograd卷积运算方法及相关产品
CN112559952B (zh) 基于序列分层的异构众核快速傅里叶变换方法
KR20220028899A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18935355

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18935355

Country of ref document: EP

Kind code of ref document: A1