CN114819130B - 智慧处理单元与三维池化运算方法 - Google Patents
智慧处理单元与三维池化运算方法 Download PDFInfo
- Publication number
- CN114819130B CN114819130B CN202210589325.2A CN202210589325A CN114819130B CN 114819130 B CN114819130 B CN 114819130B CN 202210589325 A CN202210589325 A CN 202210589325A CN 114819130 B CN114819130 B CN 114819130B
- Authority
- CN
- China
- Prior art keywords
- tensor
- dimension
- sub
- dimensional
- input data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0464—Convolutional networks [CNN, ConvNet]
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)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Image Generation (AREA)
Abstract
本申请公开了一种智慧处理单元与三维池化运算方法,用于对输入张量进行运算以产生输出张量,输入张量包括复数个输入数据块,输出张量包括复数个输出数据块,该方法包括:从外部存储器读取复数个输入数据块中的一个以作为目标输入数据块,并将该目标输入数据块存入存储器;从存储器读取目标输入数据块;对目标输入数据块进行R次第一二维池化运算以产生中间张量,R为正整数;对中间张量进行一次第二二维池化运算以产生复数个输出数据块的目标输出数据块;以及,将目标输出数据块储存至存储器。通过执行两次二维池化运算以降低处理输出张量的数据量,提高了池化运算的效率,且具有低复杂度和低成本的优势。
Description
技术领域
本申请涉及人工智能(artificial intelligence,AI)技术领域,具体涉及一种智慧处理单元与三维池化运算方法。
背景技术
卷积神经网络为目前人工智能领域中常见的技术之一,卷积神经网络包括卷积运算(convolution operation)及池化运算。池化运算的主要目的是减少卷积运算的输出数据(张量(tensor))的数据量。对不包括智慧处理单元(intelligence processing unit,IPU)的电子装置(例如,影像处理芯片或电路)来说,池化运算通常是由中央处理单元(central processing unit,CPU)或图形处理单元(graphics processing unit,GPU)执行,但CPU与GPU并非专用于池化运算,所以效率不高。然而,在电子装置中实作IPU会提高电子装置的复杂度及成本。因此,设计一个低复杂度及/或低成本的IPU为本领域的一个重要的课题。
发明内容
本申请实施例提供一种智慧处理单元与三维池化运算方法,以提高池化运算的效率。
第一方面,本申请实施例提供一种三维池化运算方法,用于对输入张量进行运算以产生输出张量,输入张量包括复数个输入数据块,输出张量包括复数个输出数据块,方法包括:从外部存储器读取复数个输入数据块中的一个作为目标输入数据块,并将目标输入数据块存入存储器;从存储器读取目标输入数据块;对目标输入数据块进行R次第一二维池化运算以产生中间张量,R为正整数;对中间张量进行一次第二二维池化运算以产生复数个输出数据块的目标输出数据块;以及,将目标输出数据块储存至存储器。
第二方面,本申请实施例还提供一种智慧处理单元,用于处理输入张量并产生输出张量,输入张量包括复数个输入数据块,输出张量包括复数个输出数据块。智慧处理单元包括:存储器、直接存储器存取单元及计算电路。直接存储器存取单元用于从外部存储器读取复数个输入数据块中的一个作为目标输入数据块,并将目标输入数据块存入存储器。计算电路用于执行以下操作以对目标输入数据块进行三维池化运算,三维池化运算方法用于产生复数个输出数据块的目标输出数据块:从存储器读取目标输入数据块;对目标输入数据块进行R次第一二维池化运算以产生中间张量,R为正整数;以及,对中间张量进行一次第二二维池化运算以产生目标输出数据块。
本申请实施例中通过使用复杂度及成本皆较低的电路执行两次二维池化运算以等效实现三维池化运算,以此,能够提高池化运算的效率,且不大幅增加电子装置的复杂度及/或成本。
附图说明
有关本申请的特征、实作与功效,兹配合图式作实施例详细说明如下。
图1为本申请实施提供的电子装置的功能方块图;
图2为本申请实施提供的池化运算的输入数据、中间数据及输出数据的示意图;
图3为本申请实施提供的输入张量或输入数据块的示意图;
图4为本申请实施提供的三维池化运算的流程图;
图5为图4中步骤S440的细部流程图;
图6为图4中步骤S440的另一细部流程图;以及
图7为图4中步骤S450的细部流程图。
具体实施方式
以下说明内容的技术用语系参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释系以本说明书的说明或定义为准。
本申请揭露内容包括智慧处理单元与三维池化运算方法。由于本申请的智慧处理单元所包括的部分元件单独而言可能为已知元件,因此在不影响该装置发明的充分揭露及可实施性的前提下,以下说明对于已知元件的细节将予以节略。此外,本申请的三维池化运算方法的部分或全部流程可以是软件及/或韧体的形式,并且可藉由本申请的智慧处理单元或其等效装置来执行,在不影响该方法发明的充分揭露及可实施性的前提下,以下方法发明的说明将着重于步骤内容而非硬件。
图1为本申请实施提供的电子装置的功能方块图。电子装置100包含处理器110、存储器120及智慧处理单元130。处理器110、存储器120及智慧处理单元130互相耦接,处理器110及智慧处理单元130皆可存取存储器120。智慧处理单元130包含直接存储器存取单元(direct memory access,DMA)132、快取存储器134及计算电路136。计算电路136包含神经网络计算核心,神经网络计算核心包含用来执行卷积运算的卷积核心137(或称为卷积计算电路)及用来执行池化运算的矢量(vector)核心138(或称为矢量计算电路)。矢量核心138是针对二维池化运算(2D pooling)所设计,也就是说,矢量核心138是执行二维池化运算的二维矢量核心。
请继续参阅图1。存储器120储存智慧处理单元130之卷积运算的结果,该结果是卷积运算的输出张量,也是池化运算的输入张量TSR_in。智慧处理单元130对输入张量TSR_in进行池化运算的过程中会产生中间张量TSR_imt,中间张量TSR_imt储存在快取存储器134,而池化运算的结果(即,输出张量TSR_out)会先储存在快取存储器134,再由直接存储器存取单元132将输出张量TSR_out写入存储器120。在一些实施例中,处理器110可以从存储器120取得该输出张量TSR_out。
图2为本申请实施提供的池化运算的输入数据、中间数据及输出数据的示意图。输入数据210可以是前述的输入张量TSR_in或输入张量TSR_in的一部分(例如,一个输入数据块(tile));中间数据220是输入数据210经过一次或多次二维池化运算的结果,也就是前述的中间张量TSR_imt或中间张量TSR_imt的一部分,而输出数据230是中间数据220经过一次二维池化运算的结果。输出数据230可以是前述的输出张量TSR_out或输出张量TSR_out的一部分(例如,一个输出数据块)。
目前常见的三维池化运算包括最大池化法(max pooling)及平均池化法(averagepooling),分别如方程式(1)及(2)所示。
MaxPool3D_out(n,d,h,w,c)=maxl=0,...,Kd-1maxp=0,...,Kh-1maxq=0,...,Kw-1input(n,Sd×d+l,Sh×h+p,Sw×w+q,c)(1)
其中,五个参数(n,d,h,w,c)代表输出矢量中的一个点(「n」、「d」、「h」、「w」、「c」分别代表批号(batch number(N))、深度(depth(D))、高度(height(H))、宽度(width(W))及通道(channel(C))),Kd、Kh及Kw分别是滑动窗口在深度(D)、高度(H)及宽度(W)方向上的大小,Sd、Sh及Sw分别是滑动窗口在深度(D)、高度(H)及宽度(W)方向上的移动步长(stride)。方程式(1)及方程式(2)的原理为本领域技术人员所熟知,故不再赘述。
本申请对方程序(1)及方程式(2)进行分析,并将其分别调整为下方的方程式(3)及方程式(4)。由方程式(3)或方程式(4)可知,三维池化运算等效于二维池化运算加上一维池化运算,例如,先处理高度(H)维度及宽度(W)维度,再处理深度(D)维度。
MaxPool3D_out(n,d,h,w,c)=maxl=0,...,Kd-1(maxp=0,...,Kh-1maxq=0,...,Kw-1input(n,Sd×d+l,Sh×h+p,Sw×w+q,c)) (3)
请注意,以下的示例省略批号(N)维度,然而,本领域技术人员可以基于以下的示例将本申请应用于具有批号(N)维度的张量。
请继续参阅图2。图2显示数据的四个维度:深度(D)、高度(H)、宽度(W)及通道(C)。举例来说,举例来说,输入数据210在深度(D)维度上包含三个子张量(子张量212、子张量214及子张量216),每个子张量是一个三维的数据(高度(H)、宽度(W)及通道(C)的数值分别为H1、W1及C1)。如图2所示,经过二维池化运算后(例如,由输入数据210变为中间数据220,以及由中间数据220变为输出数据230),通道(C)维度的大小不变(皆为C1)。
在一些实施例中,快取存储器134的位宽(width)与通道(C)维度及张量(包含输入张量TSR_in、中间张量TSR_imt及输出张量TSR_out)的数据格式相关。举例来说,若快取存储器134的位宽为256位元且张量的数据格式为INT16(即,一个通道包含16位元的数据),则快取存储器134的每一行最多可以存放16个通道。在图2的例子中,快取存储器134的一行存放C1个通道;也就是说,如果H1xW1=10,则子张量212存放在快取存储器134的第n至第n+9行(n为整数),子张量214存放在快取存储器134的第n+10至第n+19行,以及子张量216存放在快取存储器134的第n+20至第n+29行。C1小于等于快取存储器134的位宽除以张量的数据格式。
图3为本申请实施提供的输入张量或输入数据块的示意图。如图3所示,输入数据310可以是一个三维的数据:高度(H)维度为H1,宽度(W)维度为W1,通道(C)维度为C2(=3xC1)。然而,因为通道的个数C2大于快取存储器134的位宽,所以输入数据310在快取存储器134中被安排成如图2所示的结构,即,子张量312(最前C1个通道的数据)、子张量314(中间C1个通道的数据)及子张量316(最后C1个通道的数据)分别被安排在子张量212、子张量214及子张量216的位置;换言之,在快取存储器134中,子张量314紧接于子张量312之后,且子张量316紧接于子张量314之后。在此情况下,计算电路136可以从指令的参数(包含高度(H)参数、宽度(W)参数、通道(C)参数)的数值得知输入数据310的尺寸是H1xW1x3C1,然后根据快取存储器134的位宽及张量的数据格式得知输入数据310包三个子张量(每个子张量的通道数各为C1)。如此一来,计算电路136可以基于一条指令来一次读取子张量312、子张量314及子张量316(相较于分三次读取,一次读取可以节省时间),并且并行处理子张量312、子张量314及子张量316(即,总共处理H1xW1x3C1的数据)。
请注意,在图3的例子中,目标通道数(即,3C1)大于子张量312之通道数与子张量314之通道数之和(即,2C1)。在其他的实施例中,如果输入数据310只包含子张量312及子张量314,但不包含子张量316,则目标通道数等于子张量312之通道数与子张量314之通道数之和(皆为2C1)。
根据上述之计算电路136的特性,计算电路136可以根据指令的参数个数,将输入数据210视为四维的数据进行处理(例如,当指令指示输入数据210的维度[D,H,W,C]=[3,H1,W1,C1]),或是将输入数据210视为三维的数据进行处理(当指令指示输入数据210的维度[H,W,C]=[H1,W1,3C1])。
在一些实施例中,当快取存储器134无法储存全部的输入张量TSR_in时,本申请事先根据快取存储器134的大小将输出张量TSR_out划分成复数个输出数据块(tile),然后根据每一输出数据块的位置及大小,找出对应的输入数据块的位置及大小。以下的方程式(3)~(6)显示输出数据块及输入数据块在深度方向上的对应关系。
DoHighest=DoLowest+min(tileDo,Do-DoLowest)-1 (3)
DiLowest=clip(DoLowest×Sd-padding_depth,0,Di-1) (4)
DiHighest=min(DoHighest×Sd-padding_depth+Kd-1,Di-1) (5)
tileDi=DiHighest-DiLowest+1 (6)
其中,DoLowest为输出数据块的起始位置、tileDo为输出数据块的长度、DoHighest为输出数据块的最终位置、DiLowest为输入数据块的起始位置、tileDi为输入数据块的长度,以及DiHighest为输入数据块的最终位置。本技术领域具有通常知识者可以基于方程式(3)~(6)推理出高度方向及宽度方向的方程式,故不再赘述。需注意的是,因为池化运算不改变通道方向上的维度值,因此输入张量在通道维度上的起始位置和大小均和输出张量相同。
实际操作时,直接存储器存取单元132将输入数据块依序从存储器120读入快取存储器134中,且计算电路136依序处理输入数据块。然而,在其他的实施例中,如果快取存储器134能够储存一整个输入张量TSR_in,则直接存储器存取单元132将一整个输入张量TSR_in从存储器120读入快取存储器134中,且计算电路136一次处理该整个输入张量TSR_in。图2之输入数据210可以代表一整个输入张量TSR_in(等效于视该输入张量TSR_in仅包含一个输入数据块)或该输入张量TSR_in之复数个输入数据块的其中之一。
请注意,本案并未限定输出张量TSR_out的划分方式。在一些实施例中,可以根据对整个输入张量TSR_in进行三维池化操作所需的存储器频宽(bandwidth)来决定划分方式。
请参阅图4,图4为本申请实施提供的三维池化运算的流程图。图4的流程由智慧处理单元130执行。以下配合图2说明图4的步骤。
步骤S410:选择输入张量或目标输入数据块。其中,智慧处理单元130选择输入张量或目标输入数据块。举例来说,输入张量或目标输入数据块可以是图2的输入数据210,输入数据210储存于图1的存储器120中。
步骤S420:利用直接存储器存取单元将输入张量或目标输入数据块从外部存储器读入内部存储器。其中,智慧处理单元130利用直接存储器存取单元132将该输入张量或该目标输入数据块从外部存储器(即,存储器120)读入内部存储器(即,快取存储器134)。
步骤S430:从内部存储器读取输入张量或目标输入数据块。其中,计算电路136的矢量核心138从快取存储器134读取该输入张量或该目标输入数据块。
步骤S440:执行第一指令,以对输入张量或目标输入数据块进行R次二维池化运算,而得到中间张量。其中,计算电路136的矢量核心138执行一第一指令,以对该输入张量或该目标输入数据块进行R次二维池化运算(R为正整数),而得到一中间张量(例如,图2的中间数据220)。若该第一指令指示该输入张量或该目标输入数据块的维度包含深度(D)维度、高度(H)维度及宽度(W)维度,则R=Kd(请参考方程式(3)或(4));若该第一指令指示该输入张量或该目标输入数据块的维度仅包含深度(D)维度、高度(H)维度及宽度(W)维度的其中两者(例如,仅包含高度(H)维度及宽度(W)但不包含深度(D)维度),则R=1。步骤S440的细节将于下方配合图5或图6详述。
步骤S450:执行第二指令,以对中间张量进行一次二维池化运算,而得到输出张量或输出数据块。其中,计算电路136的矢量核心138执行一第二指令,以对该输入张量或该目标输入数据块进行一次二维池化运算,而得到一输出张量或一输出数据块(例如,图2的输出数据230)。步骤S450的细节将于下方配合图7详述。
步骤S460:利用直接存储器存取单元将输出张量或输出数据块写到外部存储器。其中,智慧处理单元130利用直接存储器存取单元132将该输出张量或该输出数据块写到外部存储器。
步骤S470:判断是否仍有未处理的输入张量或目标输入数据块。其中,计算电路136的矢量核心138判断是否仍有未处理的输入张量或目标输入数据块。如果是,则回到步骤S410;如果否,则结束三维池化运算。
如图4所示,本申请并非对数据直接执行一次三维池化运算(需要复杂度及成本皆较高的硬件);相反的,本申请使用复杂度及成本皆较低电路(即,矢量核心138)来执行两次二维池化运算的指令(即,步骤S440及步骤S450,两步骤皆由矢量核心138执行),以等效实现三维池化运算。因此,本申请的计算电路136具有低成本、低复杂度且容易实作的优点,使智慧处理单元130更具竞争力。
图5为图4的步骤S440的细部流程图,包括步骤S510~S540。以下配合图2说明步骤S510~S540。
步骤S510:读取输入张量的子张量或目标输入数据块的子张量。其中,计算电路136的矢量核心138读取该输入张量的一子张量或该目标输入数据块的一子张量。以图2为例,输入数据210包含子张量212、子张量214及子张量216。计算电路136在此步骤中读取子张量212、子张量214及子张量216的其中一者。在一些实施例中,计算电路136依序处理子张量212、子张量214及子张量216。
步骤S520:对子张量进行二维池化运算以得到中间张量的一部分。其中,计算电路136的矢量核心138对该子张量进行二维池化运算以得到中间张量TSR_imt的一部分(即,中间张量TSR_imt的子张量)。以图2为例,中间数据220(即,中间张量TSR_imt)包含子张量222、子张量224及子张量226,分别对应于子张量212、214及216。也就是说,子张量222、224及226分别是子张量212、214及216的二维池化运算的结果。在图2的例子中,二维池化运算将H1xW1的子张量变为H2xW2的子张量;例如,若子张量212(214或216)的维度[D,H,W,C]=[3,5,2,16],滑动窗口的大小[Kd,Kh,Kw]=[3,3,2]且滑动窗口的移动步长[Sd,Sh,Sw]=[1,1,1],则子张量222(224或226)的维度[D,H,W,C]=[3,3,1,16](即,H2xW2=3x1=3)。
步骤S530:将此一部分中间张量储存至内部存储器。其中,计算电路136的矢量核心138将该中间张量的该部分储存至内部存储器。在图2的例子中,计算电路136于此步骤将子张量222(224或226)存入快取存储器134。
步骤S540:判断是否仍有未处理的子张量。其中,计算电路136的矢量核心138判断是否仍有未处理的子张量。如果是,则计算电路136执行步骤S510以读取下一个子张量;如果否,则结束步骤S440。
图6显示图4之步骤S440之另一实施例的细部流程图,包含步骤S610~S630。在图6的流程中,计算电路136根据指令将输入数据210视为一个三维的张量([H,W,DxC]),而非四维的张量([D,H,W,C])。以下配合图2说明步骤S610~S630。
步骤S610:根据一指令读取输入张量或目标输入数据块。其中,计算电路136的矢量核心138根据一指令从快取存储器134读取该输入张量或该目标输入数据块,该指令包含一目标通道数。在此步骤中,计算电路136所执行之指令指示待处理的数据(以图2之输入数据210为例)包含三个维度参数:高度H=H1、宽度W=W1及通道C=3C1,但不包含深度(D)参数,其中「3C1」即为本例中的目标通道数。在此情况下,计算电路136读取输入数据210之方式已于图3的说明中讨论过,故不再赘述。
步骤S620:对输入张量或目标输入数据块进行一次二维池化运算以得到中间张量。其中,计算电路136的矢量核心138对该输入张量或该目标输入数据块进行一次二维池化运算以得到中间张量TSR_imt。请注意,图5的流程对输入数据210执行三次二维池化运算(子张量212、子张量214及子张量216各一次)(即,R=Kd=3)才得到完整的中间数据220,而图6的流程只对输入数据210执行一次二维池化运算(即,R=1)就可以得到完整的中间数据220。也就是说,计算电路136的矢量核心138在步骤S620中对输入数据210执行一次二维池化运算就可得到完整的中间数据220,等效于并行处理输入数据210的所有子张量。
步骤S630:将中间张量储存至内部存储器。其中,计算电路136的矢量核心138将该中间张量储存至内部存储器。
图7为图4中步骤S450的细部流程图,包括步骤S710~S730。以下配合图2说明步骤S710~S730。
步骤S710:读取中间张量。计算电路136的矢量核心138从快取存储器134读取中间张量TSR_imt。
步骤S720:对中间张量进行二维池化运算以得到输出张量或输出数据块。计算电路136的矢量核心138对该中间张量进行二维池化运算以得到该输出张量或该输出数据块。需注意的是,此步骤是藉由执行二维池化运算来完成深度方向上的一维池化运算,细节包括以下的步骤S722~S726。
步骤S722:将维度H与维度W合并成新的维度。计算电路136的矢量核心138组合维度H与维度W以产生一个成新的维度,即以一个新的维度代表维度H与维度W的组合。以图2为例,中间张量TSR_imt的维度[D,H,W,C]=[3,H2,W2,C1](「3」代表三个子张量222、224及226)。
经过步骤S722之后,中间张量TSR_imt的新的维度[D,L,C]=[3,L2,C1],其中L2=H2xW2。换言之,步骤S722是对中间张量TSR_imt进行降低维度的操作。在实作上,可以藉由调整指令的参数来实现步骤S722,也就是说,藉由减少一个参数(即,以L维度的参数取代高度(H)维度的参数及宽度(W)维度的参数),矢量核心138便将中间张量TSR_imt视为少一个维度的数据。
步骤S724:设定对应于新的维度的滑动窗口的大小为1、设定对应于新的维度的滑动窗口的移动步长为1、设定对应于新的维度的填充量为0。计算电路136的矢量核心138令对应于该新的维度的滑动窗口的大小为1、设定对应于该新的维度的滑动窗口的移动步长为1、设定对应于该新的维度的填充量(padding)为0(即,无填充量),如此一来,矢量核心138实际上便不会对新的维度(即,维度L)进行处理。
步骤S726:对中间张量进行二维池化运算。计算电路136的矢量核心138对中间张量TSR_imt进行二维池化运算,以得到该输出张量或该输出数据块。虽然在此步骤中矢量核心138对中间张量TSR_imt进行二维池化运算,但因为矢量核心138实际上不会对新的维度(即,维度L)进行处理,所以矢量核心138等效于对中间张量TSR_imt进行一维池化运算。
步骤S730:将输出张量或输出数据块储存至内部存储器。计算电路136的矢量核心138将该输出张量或该输出数据块储存至内部存储器。以图2为例,矢量核心138于此步骤中将输出数据230储存至快取存储器134。
需注意的是,在后续的处理中,输出数据230的形状(或维度)可以由[D,L,C]=[1,3,C1]被重整形(reshape)为[D,H,W,C]=[1,3,1,C1],也就是将输出数据230提升一个维度。
虽然方程式(3)或方程式(4)显示三维池化运算等效于二维池化运算加上一维池化运算(理论上分别由一个二维矢量核心及一个一维矢量核心来执行),但本申请使用同一个矢量核心138来执行两次二维池化运算(即,步骤S440及步骤S450,其中步骤S450等效于一维池化运算,请参阅上方关于步骤S720的说明),所以本申请的智慧处理单元130具有低成本及低复杂度的优势(即,省去一个一维矢量核心)。
在其他的实施例中,若计算电路136包含用来执行一维池化运算之一维矢量核心,则在步骤S450中,计算电路136可以改为使用该一维矢量核心来对中间数据220执行一维池化运算。
综上所述,本申请巧妙地运用一次二维池化运算来等效一维池化运算,进而巧妙地运用两次二维池化运算来等效三维池化运算。由于二维池化运算核心(即,二维矢量核心)比三维池化运算核心(即,三维矢量核心)具有更低的电路成本及复杂度,且本申请不需要额外的一维池化运算核心(即,一维矢量核心),所以使用本申请之IPU的电子装置可以提升效率,且不会大幅增加复杂度及/或成本。
本领域技术人员可以根据以上的揭露内容来设计计算电路136,也就是说,计算电路136可以是特殊应用集成电路(Application Specific Integrated Circuit,ASIC),例如前述的神经网络计算核心。
虽然本申请的实施例如上所述,然而该些实施例并非用来限定本申请,本领域技术人员可依据本申请的明示或隐含的内容对本申请的技术特征施以变化,凡此种种变化均可能属于本申请所寻求的专利保护范畴,换言之,本申请的专利保护范围须视本说明书的申请专利范围所界定者为准。
【符号说明】
100:电子装置;
110:处理器;
120:存储器;
130:智慧处理单元;
132:直接存储器存取单元;
134:快取存储器;
136:计算电路;
137:卷积核心;
138:矢量核心;
TSR_in:输入张量;
TSR_imt:中间张量;
TSR_out:输出张量;
210,310:输入数据;
212,214,216,312,314,316,222,224,226:子张量;
220:中间数据;
230:输出数据;
S410,S420,S430,S440,S450,S460,S470,S510,S520,S530,S540,S610,S620,S630,S710,S720,S722,S724,S726,S730:步骤。
Claims (16)
1.一种三维池化运算方法,用于对输入张量进行运算以产生输出张量,所述输入张量包括复数个输入数据块,所述输出张量包括复数个输出数据块,所述方法包括:
(A)从外部存储器读取所述复数个输入数据块中的一个作为目标输入数据块,并将所述目标输入数据块存入存储器;
(B)从所述存储器读取所述目标输入数据块;
(C)响应一指令,对所述目标输入数据块进行R次第一二维池化运算以产生中间张量,R为正整数;
(D)对所述中间张量进行一次第二二维池化运算以产生所述复数个输出数据块的目标输出数据块;以及
(E)将所述目标输出数据块储存至所述存储器;
其中,若所述指令指示所述目标输入数据块的维度包含深度维度、高度维度及宽度维度,则R=Kd;若所述指令指示所述目标输入数据块的维度仅包含深度维度、高度维度及宽度维度的其中两者,则R=1,其中,Kd为一第一滑动窗口在深度方向上的大小。
2.根据权利要求1所述的三维池化运算方法,其特征在于,所述中间张量具有第一维度参数及第二维度参数,所述步骤(D)包括:
以第三维度参数代表所述第一维度参数及所述第二维度参数的组合;以及
设定对应于所述第三维度参数的一第二滑动窗口的大小为1、设定对应于所述第三维度参数的所述第二滑动窗口的移动步长为1,以及设定对应于所述第三维度参数的填充量为0。
3.根据权利要求2所述的三维池化运算方法,其特征在于,所述第一维度参数及所述第二维度参数的乘积等于所述第三维度参数。
4.根据权利要求1所述的方法,其特征在于,所述存储器储存所述目标输入数据块的第一子张量及第二子张量,所述第二子张量紧邻所述第一子张量,所述步骤(C)用于处理所述第一子张量及所述第二子张量。
5.根据权利要求4所述的三维池化运算方法,其特征在于,所述第一子张量具有第一通道维度,所述第二子张量具有第二通道维度,所述步骤(B)用于响应于所述指令读取所述第一子张量及所述第二子张量,所述指令的目标通道数系大于或等于所述第一通道维度与所述第二通道维度之和。
6.根据权利要求5所述的三维池化运算方法,其特征在于,所述第一通道维度等于所述第二通道维度。
7.根据权利要求5所述的三维池化运算方法,其特征在于,所述第一通道维度及所述第二通道维度皆等于所述存储器的位宽除以所述输入张量的数据格式。
8.根据权利要求1所述的三维池化运算方法,其特征在于,所述步骤(C)系由二维矢量核心执行,且所述步骤(D)由所述二维矢量核心执行。
9.一种智慧处理单元,其特征在于,用于处理输入张量并产生输出张量,所述输入张量包括复数个输入数据块,所述输出张量包括复数个输出数据块,所述智慧处理单元包括:
存储器;
直接存储器存取单元,用来从外部存储器读取所述复数个输入数据块中的一个作为目标输入数据块,并将所述目标输入数据块存入所述存储器;以及
计算电路,用于执行以下操作以对所述目标输入数据块进行三维池化运算,所述三维池化运算用于产生所述复数个输出数据块的目标输出数据块:
(A)从所述存储器读取所述目标输入数据块;
(B)响应一指令,对所述目标输入数据块进行R次第一二维池化运算以产生中间张量,R为正整数;以及
(C)对所述中间张量进行一次第二二维池化运算以产生所述目标输出数据块;
其中,若所述指令指示所述目标输入数据块的维度包含深度维度、高度维度及宽度维度,则R=Kd;若所述指令指示所述目标输入数据块的维度仅包含深度维度、高度维度及宽度维度的其中两者,则R=1,其中,Kd为一第一滑动窗口在深度方向上的大小。
10.根据权利要求9所述的智慧处理单元,其特征在于,所述中间张量具有第一维度参数及第二维度参数,所述步骤(C)包括:
以第三维度参数代表所述第一维度参数及所述第二维度参数的组合;以及
设定对应于所述第三维度参数的一第二滑动窗口的大小为1、设定对应于所述第三维度参数的所述第二滑动窗口的移动步长为1,以及设定对应于所述第三维度参数的填充量为0。
11.根据权利要求10所述的智慧处理单元,其特征在于,所述第一维度参数及所述第二维度参数的乘积等于所述第三维度参数。
12.根据权利要求9所述的智慧处理单元,其特征在于,所述存储器储存所述目标输入数据块的第一子张量及第二子张量,所述第二子张量紧邻所述第一子张量,计算电路于所述步骤(B)中处理所述第一子张量及所述第二子张量。
13.根据权利要求12所述的智慧处理单元,其特征在于,所述第一子张量具有第一通道维度,所述第二子张量具有第二通道维度,所述计算电路在所述步骤(A)中用于响应于一指令读取所述第一子张量及所述第二子张量,所述指令的目标通道数大于或等于所述第一通道维度与所述第二通道维度之和。
14.根据权利要求13所述的智慧处理单元,其特征在于,所述第一通道维度等于所述第二通道维度。
15.根据权利要求13所述的智慧处理单元,其特征在于,所述第一通道维度及所述第二通道维度皆等于所述存储器的位宽除以所述输入张量的数据格式。
16.根据权利要求9所述的智慧处理单元,其特征在于,所述计算电路包括二维矢量核心,且所述步骤(B)及所述步骤(C)由所述二维矢量核心执行。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210589325.2A CN114819130B (zh) | 2022-05-26 | 2022-05-26 | 智慧处理单元与三维池化运算方法 |
| US18/087,210 US20230385609A1 (en) | 2022-05-26 | 2022-12-22 | Intelligence processing unit and 3-dimensional pooling operation |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210589325.2A CN114819130B (zh) | 2022-05-26 | 2022-05-26 | 智慧处理单元与三维池化运算方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN114819130A CN114819130A (zh) | 2022-07-29 |
| CN114819130B true CN114819130B (zh) | 2025-04-25 |
Family
ID=82520011
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210589325.2A Active CN114819130B (zh) | 2022-05-26 | 2022-05-26 | 智慧处理单元与三维池化运算方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20230385609A1 (zh) |
| CN (1) | CN114819130B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102868048B1 (ko) * | 2019-09-26 | 2025-10-10 | 삼성전자주식회사 | 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법 |
| CN115423074A (zh) * | 2022-08-10 | 2022-12-02 | 安谋科技(中国)有限公司 | 一种数据处理方法、电子设备及存储介质 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110728351A (zh) * | 2018-07-17 | 2020-01-24 | 华为技术有限公司 | 数据处理方法、相关设备及计算机存储介质 |
| CN110738103A (zh) * | 2019-09-04 | 2020-01-31 | 北京奇艺世纪科技有限公司 | 活体检测方法、装置、计算机设备和存储介质 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108229654B (zh) * | 2016-12-14 | 2020-08-14 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
| US10776694B2 (en) * | 2017-05-16 | 2020-09-15 | Samsung Electronics Co., Ltd. | Optimized neural network input stride method and apparatus |
| US11436483B2 (en) * | 2018-01-17 | 2022-09-06 | Mediatek Inc. | Neural network engine with tile-based execution |
| US11204976B2 (en) * | 2018-11-19 | 2021-12-21 | Groq, Inc. | Expanded kernel generation |
| CN110473137B (zh) * | 2019-04-24 | 2021-09-14 | 华为技术有限公司 | 图像处理方法和装置 |
| CN112348162B (zh) * | 2019-08-12 | 2024-03-08 | 北京沃东天骏信息技术有限公司 | 用于生成识别模型的方法和装置 |
| JP7493414B2 (ja) * | 2020-08-25 | 2024-05-31 | 株式会社荏原製作所 | 渦電流センサの出力信号処理装置 |
| EP3985570A1 (en) * | 2020-10-13 | 2022-04-20 | Imagination Technologies Limited | Implementation of a neural network in multicore hardware |
| US12159223B2 (en) * | 2020-10-29 | 2024-12-03 | Arm Limited | Processing data of a neural network |
| US11270124B1 (en) * | 2020-11-16 | 2022-03-08 | Branded Entertainment Network, Inc. | Temporal bottleneck attention architecture for video action recognition |
| CN114003859A (zh) * | 2021-11-10 | 2022-02-01 | 安谋科技(中国)有限公司 | 卷积运算方法、可读介质和电子设备 |
-
2022
- 2022-05-26 CN CN202210589325.2A patent/CN114819130B/zh active Active
- 2022-12-22 US US18/087,210 patent/US20230385609A1/en active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110728351A (zh) * | 2018-07-17 | 2020-01-24 | 华为技术有限公司 | 数据处理方法、相关设备及计算机存储介质 |
| CN110738103A (zh) * | 2019-09-04 | 2020-01-31 | 北京奇艺世纪科技有限公司 | 活体检测方法、装置、计算机设备和存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN114819130A (zh) | 2022-07-29 |
| US20230385609A1 (en) | 2023-11-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114819130B (zh) | 智慧处理单元与三维池化运算方法 | |
| US20240160689A1 (en) | Method for optimizing convolution operation of system on chip and related product | |
| WO2022206556A1 (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
| CN110083969B (zh) | 基于离散优化的数字集成电路布局方法及终端设备 | |
| CN114359662B (zh) | 一种基于异构fpga和融合多分辨率的卷积神经网络的实现方法 | |
| GB2599053A (en) | Manipulation of data in a memory | |
| KR20060025582A (ko) | 화상 처리를 위한 가변 탭 필터 아키텍처 | |
| CN110414672B (zh) | 卷积运算方法、装置及系统 | |
| CN113222104A (zh) | 神经处理系统 | |
| CN109447239B (zh) | 一种基于arm的嵌入式卷积神经网络加速方法 | |
| CN111950587A (zh) | 帧内编码块划分处理方法和硬件装置 | |
| CN112001492B (zh) | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 | |
| CN101267565A (zh) | 一种视频编码中运动矢量搜索方法及装置 | |
| CN118520831A (zh) | 一种基于强化学习和宏合法化的混合尺寸宏布局方法、设备及存储介质 | |
| CN116415641A (zh) | 一种基于神经网络的点云数据的处理方法和系统 | |
| CN118259975A (zh) | 模型的处理方法、模型的运行方法、装置、设备及介质 | |
| CN112905526B (zh) | 一种多种类型卷积的fpga实现方法 | |
| TWI812255B (zh) | 智慧處理單元與三維池化運算方法 | |
| CN114998164A (zh) | 基于自适应成对误差扩展和嵌入回补的可逆数据隐藏算法 | |
| CN117934576A (zh) | 基于fpga加速的低比特光场图像深度估计网络及方法 | |
| CN111191780A (zh) | 均值池化累加电路、装置以及方法 | |
| CN111953862A (zh) | 图像处理装置、图像处理方法及程序 | |
| CN119180753B (zh) | 特征强化的跨窗口轻量级超分辨率方法、系统及电子设备 | |
| Wang et al. | Multi-scale progressive feedback based on a self-attentive mechanism image super-resolution reconstruction | |
| CN111080508A (zh) | 一种基于dma的gpu子图像处理方法 |
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 |