CN115221463A - 进行Winograd卷积的方法、可读存储介质及装置 - Google Patents
进行Winograd卷积的方法、可读存储介质及装置 Download PDFInfo
- Publication number
- CN115221463A CN115221463A CN202110420798.5A CN202110420798A CN115221463A CN 115221463 A CN115221463 A CN 115221463A CN 202110420798 A CN202110420798 A CN 202110420798A CN 115221463 A CN115221463 A CN 115221463A
- Authority
- CN
- China
- Prior art keywords
- convolution
- convolution kernel
- block
- splitting
- kernel
- 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
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012545 processing Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 7
- 239000011159 matrix material Substances 0.000 description 35
- 238000010586 diagram Methods 0.000 description 22
- 210000002569 neuron Anatomy 0.000 description 15
- 230000009466 transformation Effects 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 210000004205 output neuron Anatomy 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
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/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Algebra (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种将卷积核与输入图像进行Winograd卷积的方法、可读存储介质及装置。首先判断卷积步长是否等于1;如卷积步长不等于1,基于卷积步长将卷积核拆分成多步长块;将多步长块基于长度大于3的维度拆分成多个卷积核块;对应至每个卷积核块,将输入图像拆分成图块;将卷积核块与相对应的图块进行Winograd卷积,使得Winograd卷积不再受到特定应用场景的限制。
Description
技术领域
本发明一般地涉及神经网络领域。更具体地,本发明涉及将卷积核与输入图像进行Winograd卷积的方法、可读存储介质及装置。
背景技术
随着信息化时代的高速发展,人工智能与机器学习领域的研究炙手可热,相关产业蓬勃发展。卷积神经网络在计算机视觉、自动驾驶、机器翻译、语音识别、智能家居等各方面都有着广泛的作用。
卷积神经网络的参数量大、运算量大,使得卷积神经网络模型在便携移动终端有限面积和算力下被严重的限制其执行性能,同时非专用性设计的处理器在进行卷积运算时也会造成功耗的巨大开销。
Winograd卷积是一种基于多项式插值算法的卷积加速实现方式。它通过对卷积操作的两个输入:神经元及权值进行一定规模切分后,分别做线性变换,也就是Winograd正变换,再将变换后的神经元和权值进行对位乘法,把对位乘法结果再次进行线性变换,即Winograd逆变换,最后得到与原卷积操作等价的卷积结果。
由于在Winograd卷积操作的过程中,神经元和权值的正逆变换矩阵都由简单的固定数值构成,故而可以仅利用加法来实现Winograd神经元和权值的正逆变换过程。而Winograd算法中所需的乘法操作仅出现在对位乘过程中,此过程的乘法复杂度较原始卷积算法有相当程度缩减。由于硬件实现乘法运算的开销(时序、功耗、面积)比实现同位宽的加法要高很多,因此以Winograd卷积替代原始卷积操作能够带来硬件能效比和运算时间上的明显收益。
然而,针对不同大小的Winograd卷积需要搭配不同的变换矩阵,尤其是面对高维(高于二维)卷积计算时,神经元及权值的切分就会变得复杂,限制了Winograd卷积的应用场景。因此,一种适用于各种大小与维度的Winograd卷积方案是迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种将卷积核与输入图像进行Winograd卷积的方法、可读存储介质及装置。
在一个方面中,本发明揭露一种将卷积核与输入图像进行Winograd卷积的方法,所述卷积核与所述输入图像为N维。所述方法包括:判断卷积步长是否等于1;如卷积步长不等于1,基于卷积步长将所述卷积核拆分成多步长块;将所述多步长块基于长度大于3的维度拆分成多个卷积核块;对应至每个卷积核块,将所述输入图像拆分成图块;将所述卷积核块与相对应的图块进行Winograd卷积,以生成中间结果;以及将所述中间结果合并为卷积结果。
在另一个方面,本发明揭露一种计算机可读存储介质,其上存储有进行Winograd卷积的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行前述的方法。
在另一个方面,本发明揭露一种将卷积核与输入图像进行Winograd卷积的装置,卷积核与输入图像为N维。所述装置包括判断模块、拆分模块、卷积模块及合并模块。判断模块用以判断卷积步长是否等于1。拆分模块用以:如卷积步长不等于1,基于卷积步长将卷积核拆分成多步长块;将多步长块基于长度大于3的维度拆分成多个卷积核块;以及对应至每个卷积核块,将输入图像拆分成图块。卷积模块用以将卷积核块与相对应的图块进行Winograd卷积,以生成中间结果。合并模块用以将中间结果合并为卷积结果。
本发明可以基于不同的卷积步长、卷积核与输入图像、维度,提出一种标准化拆分卷积核与输入图像(神经元)的方案,特别是处理高维卷积计算时,神经元及权值能够轻易的被拆分,使得Winograd卷积不再受到特定应用场景的限制。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出卷积核与输入图像进行Winograd卷积运算的示意图;
图2是示出F(2×2,3×3)的原始卷积转换成Winograd卷积的示意图;
图3是示出本发明实施例的板卡结构示意图;
图4是示出本发明实施例的组合处理装置的结构图;
图5是示出本发明实施例将卷积核与输入图像进行Winograd卷积的流程图;
图6是示出5×5×5的卷积核进行拆分的示意图;
图7是示出本发明实施例基于卷积步长将卷积核拆分成多步长块的示意图;
图8是示出本发明实施例在步长为1时将输入图像拆分成图块的示意图;
图9是示出本发明实施例在步长为1时将输入图像拆分成图块的另一个示意图;
图10是示出本发明实施例在步长为2时将输入图像拆分成图块的示意图;
图11是示出本发明实施例在步长为2时将输入图像拆分成图块的另一个示意图;
图12是示出示例性的Winograd卷积运算的示意图;以及
图13是示出本发明另一个实施例的装置示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
Winograd卷积加速算法(以下简称Winograd算法或Winograd卷积)是利用对卷积运算中的操作数进行线性变换,进而找出需要乘法数最少的变换方法,再通过增加部分加法操作代替所需要的乘法操作。从硬件层面来说,乘法器的结构相比于加法器更加复杂,面积功耗更大,综合处理性能更差,实务上以加法取代乘法的Winograd算法在处理卷积运算时具有极大优势。
对于二维卷积来说,假设输入图像的大小为H×W(H为输入图像的高度,W为输入图像的宽度),权值的大小为r×s(r为权值的高度,s为权值的宽度),卷积结果可以表示为F(m×n,r×s),其中m×n为输出神经元图像的大小,m为输出神经元图像的高度,n为输出神经元图像的宽度。为了降低硬件涉及的复杂度、提高通用性,并实现良好的加速效果,通常在进行Winograd卷积时会设定不大于3×3的卷积核(即权值)作为基卷积单元,来组合进行任意规模且卷积操作步长(stride)为1的Winograd卷积运算,也就是将任意的F(m×n,r×s)拆解成运算规模为3×3、3×2(或2×3)、3×1(或1×3)、2×2、2×1(或1×2)等5种基卷积的计算,再进行组合。换言之,任意的F(m×n,r×s)将会被拆解成F(2×2,3×3)、F(2×2,3×2)、F(2×2,2×3)、F(2×2,3×1)、F(2×2,2×2)及F(2×2,2×1)的基卷积计算组合。需注意的是,由于1×1的卷积运算无法利用Winograd卷积来加速,故1×1的规模不属于本发明所述的基卷积单元。
以输入图像的大小为6×6,步长为1的F(2×2,5×5)为例,在进行Winograd卷积加速运算前,需先将6×6的输入图像和5×5的卷积核基于基卷积单元进行线性拆分,其拆分过程如图1所示。
图1示出一个5×5的卷积核101与一个6×6的输入图像102进行卷积运算,以获得2×2的卷积结果103。卷积核101需拆分成3×3、3×2(或2×3)、3×1(或1×3)、2×2、2×1(或1×2)等规模,通常较佳地优先选择3×3,3×2(或2×3)次之,3×1再次之,2×2再次之,最后为2×1。根据此规则,卷积核101被拆分为4个基卷积核:3×3的第一基卷积核104、3×2的第二基卷积核105、2×3的第三基卷积核106、2×2的第四基卷积核107,也就是F(2×2,5×5)会被拆解为一个F(2×2,3×3)、一个F(2×2,3×2)、一个F(2×2,2×3)及一个F(2×2,2×2)。输入图像102相应的也拆分为4个子神经元数据:4×4的第一子神经元数据108、4×3的第二子神经元数据109、3×4的第三子神经元数据110、3×3的第四子神经元数据111。
接着进行Winograd卷积运算,即:第一基卷积核104与第一子神经元数据108做卷积,以产生第一子卷积结果112;第二基卷积核105与第二子神经元数据109做卷积,以产生第二子卷积结果113;第三基卷积核106与第三子神经元数据110做卷积,以产生第三子卷积结果114;第四基卷积核107与第四子神经元数据111做卷积,以产生第四子卷积结果115。
最后将第一子卷积结果112、第二子卷积结果113、第三子卷积结果114及第四子卷积结果115相加,便获得卷积结果116,卷积结果116与卷积结果103相同。以上便是利用Winograd卷积算法来实现原始卷积运算的示例。
进一步来说,Winograd算法可以用以下式子来表示:
Y=AT[(GgGT)⊙(BTdB)]A (公式一)
其中,Y表示卷积操作的输出矩阵,AT为逆变换左乘常量矩阵,G为权值变换左乘常量矩阵,g为原始卷积的权值,GT为权值变换右乘常量矩阵,⊙表示按位乘法,BT为神经元变换左乘常量矩阵,d为神经元数据,B为神经元变换右乘常量矩阵,A为逆变换右乘常量矩阵。各变换的左乘矩阵和右乘矩阵仅为转置关系。
以F(2×2,3×3)为例,前述各常数矩阵如下所示:
图2示出F(2×2,3×3)的原始卷积转换成Winograd卷积的示意图。如图所示,神经元数据201与卷积核202进行卷积运算。计算时,将神经元数据201根据滑动窗口203中的元素按一行排列,滑动窗口203滑动4次形成4×9矩阵204,再将卷积核202的元素按一列排列,形成9×1矩阵205,4×9矩阵204与9×1矩阵205进行卷积运算,得到4×1卷积结果206。
再根据图中虚线进行切分,4×9矩阵204转变成2×3矩阵207,9×1矩阵205转变成3×1矩阵208,4×1卷积结果206转变成2×1卷积结果209。在线性变换后,2×1卷积结果209的第一个元素R0=M0+M1+M2,且R1=M1-M2-M3。而M0、M1、M2、M3可以用以下式子表示:
通过前述的切分与线性变换,原本卷积运算涉及36次乘法,而Winograd算法仅需执行16次乘法,降低了2.25倍的乘法计算复杂度。
本发明的一个实施例是一种进行Winograd卷积的装置,图3示出此述实施例以板卡形式呈现的结构示意图。如图3所示,板卡30包括芯片301,其是一种系统级芯片(Systemon Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡30适用在云端智能应用,具有庞大的片外存储、片上存储和大量的计算能力。
芯片301通过对外接口装置302与外部设备303相连接。外部设备303例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备303通过对外接口装置302传递至芯片301。芯片301的计算结果可以经由对外接口装置302传送回外部设备303。根据不同的应用场景,对外接口装置302可以具有不同的接口形式,例如PCIe接口等。
板卡30还包括用于存储数据的存储器件304,其包括一个或多个存储单元305。存储器件304通过总线与控制器件306和芯片301进行连接和数据传输。板卡30中的控制器件306配置用于对芯片301的状态进行调控。为此,在一个应用场景中,控制器件306可以包括单片机(Micro Controller Unit,MCU)。
图4是示出此实施例的芯片301中的组合处理装置的结构图。如图4中所示,组合处理装置40包括计算装置401、接口装置402、处理装置403和DRAM 404。
计算装置401配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,特别是Winograd卷积运算,其可以通过接口装置402与处理装置403进行交互,以共同完成用户指定的操作。
接口装置402用于在计算装置401与处理装置403间传输数据和控制指令。例如,计算装置401可以经由接口装置402从处理装置403中获取输入数据,写入计算装置401片上缓存。进一步,计算装置401可以经由接口装置402从处理装置403中获取控制指令,亦写入计算装置401片上缓存中。替代地或可选地,接口装置402也可以读取计算装置401的片上缓存中的数据并传输给处理装置403。
处理装置403作为通用的处理装置,执行包括但不限于数据搬运、对计算装置401的开启和/或停止等基本控制。根据实现方式的不同,处理装置403可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置401而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置401和处理装置403整合共同考虑时,二者视为形成异构多核结构。
DRAM 404用以存储待处理的数据,为片外内存,大小通常为16G或更大,用于保存计算装置401和/或处理装置403的数据,尤其是存储欲进行Winograd卷积运算的神经元数据及权值。
此实施例实施一种将卷积核与输入图像进行Winograd卷积的方法,更详细来说,此实施例能将欲进行常规卷积的任意大小/任意维度的卷积核与输入图像经过拆分,得到适用于Winograd卷积的卷积核块与图块,通过对这些卷积核块与图块进行Winograd卷积,最终获得等效于进行常规卷积的卷积结果。图5示出此实施例将卷积核与输入图像进行Winograd卷积的流程图。
在步骤501中,处理装置403判断卷积步长(stride)是否等于1。在进行卷积过程中,为了减少计算的开销,会在输出的每个方向上间隔特定数量的元素进行采样,这间隔便是步长。在此步骤中,处理装置403会判断卷积步长的数值,供后续处理。
如果卷积步长等于1,则执行步骤502,处理装置403基于卷积核第i维的长度将卷积核拆分成多个卷积核块。在此步骤中,卷积核将被拆分成个卷积核块,其中Di为卷积核第i维的长度,指的是向下取整。此外,处理装置403将卷积核拆分成卷积核块时,Di会被分配成个元素为3的区段,原因在于基卷积的长度不超过3,且长度为3的Winograd卷积效率最佳,故优先将各维度的长度以3为单位分割成区段。如有剩余元素未分配,剩余元素再配置为一个区段。举例来说,假设某个维度的长度Di为8,则即该维度可以拆分成2个元素为3的区段,剩余的2个元素配置为另一个区段,故处理装置403将长度Di为8的维度拆分成3个区段,分别包括3个元素、3个元素及2个元素。
综上所述,处理装置403针对卷积核的每个维度进行拆分后,使得卷积核块在每个维度的区段的长度不超过3,且优先以3个元素进行拆分。卷积核块则由每维取1个区段相乘而成。
图6示出一个5×5×5的卷积核进行拆分的示意图。卷积核60具有R、S、T等三个维度,处理装置403首先基于其中一个维度(如第R维度)进行拆分。第R维度一共有DR=5个元素,将DR分配成个元素为3的区段,还剩余2个元素未分配,剩余元素设定为另一个区段,故在第R维度上可以拆分为2个区段R1与R2,分别包括3个元素(长度为3)与2个元素(长度为2)。接着处理装置403再基于另一个维度(如第S维度)进行拆分,由于第S维度同样具有5个元素,因此亦拆分为分别包括3个元素与2个元素的2个区段S1与S2。最后处理装置403再基于第T维度拆分为分别包括3个元素与2个元素的2个区段T1与T2。
根据前述的拆分方式,卷积核60将被分解为个卷积核块,分别为R1×S1×T1的第一卷积核块601、R1×S1×T2的第二卷积核块602、R1×S2×T1的第三卷积核块603、R1×S2×T2的第四卷积核块604、R2×S1×T1的第五卷积核块605、R2×S1×T2的第六卷积核块606、R2×S2×T1的第七卷积核块607、R2×S2×T2的第八卷积核块608。由于每个区段的长度均不超过3,因此拆分后的卷积核块属于前述基卷积的范围内,分别进行Winograd卷积运算。
如果在步骤501中判断卷积步长不等于1,卷积核将分为2个阶段拆分成卷积核块。首先执行步骤503,处理装置403基于卷积步长将卷积核拆分成多步长块。在此实施例中,处理装置403将卷积核拆分成个步长块,其中Si为卷积步长,且步长块是在第i维每间隔(Si-1)个取一个元素。图7示出基于卷积步长将卷积核拆分成多步长块的示意图,同样以图6的卷积核60为例,如果沿着第T维度对卷积核60切片,会得到如图所示的5个二维矩阵,分别是T=1的二维矩阵701、T=2的二维矩阵702、T=3的二维矩阵703、T=4的二维矩阵704及T=5的二维矩阵705。
卷积核60将被分解为个步长块,每个步长块是在第i维每间隔1个元素取1个元素。第一步长块自R=1,S=1,T=1的元素A111起,在T=1的二维矩阵701中每间隔1个元素取1个元素,即A111、A131、A151、A311、A331、A351、A511、A531、A551。由于沿着T方向亦需要每间隔1个元素取1个元素,故T=2的元素全部不取,跳至T=3的二维矩阵703,并在T=3的二维矩阵703中每间隔1个元素取1个元素,即A113、A133、A153、A313、A333、A353、A513、A533、A553。T=4的元素全部不取,在T=5的二维矩阵705中每间隔1个元素取1个元素,即A115、A135、A155、A315、A335、A355、A515、A535、A555。因此,第一步长块包括元素A111、A131、A151、A311、A331、A351、A511、A531、A551、A113、A133、A153、A313、A333、A353、A513、A533、A553、A115、A135、A155、A315、A335、A355、A515、A535、A555。
在获得第二步长块时,由于A111已分配给第一步长块,故处理装置403自A121起,在T=1的二维矩阵701中每间隔1个元素取1个元素,即A121、A141、A321、A341、A521、A541。跳至T=3的二维矩阵703,并在T=3的二维矩阵703中每间隔1个元素取1个元素,即A123、A143、A323、A343、A523、A543。在T=5的二维矩阵705中每间隔1个元素取1个元素,即A125、A145、A325、A345、A525、A545。因此,第二步长块包括元素A121、A141、A321、A341、A521、A541、A123、A143、A323、A343、A523、A543、A125、A145、A325、A345、A525、A545。
在获得第三步长块时,由于A111至A151均已被分配,故处理装置403自A211起每间隔1个元素取1个元素;在获得第四步长块时,自A221起每间隔1个元素取1个元素,以此方式依序取得8个步长块。
在步骤504中,处理装置403将步长块基于长度大于3的维度拆分成多个卷积核块。在此步骤中,如果存在任意步长块的任一个维度的长度大于3,则处理装置403会进一步利用步骤502的方式进行拆分,使得每个拆分后的块的任一维度的长度不超过3,拆分后的块便是卷积核块。在此步骤中,步长块会被连续的拆分,而不需要间隔(Si-1)个取一个元素,例如,步长块的某个维度的长度为5,则前面连续3个元素视为1个区段,剩余2个元素视为另一个区段。
如果步长块的所有维度的长度均不超过3,则处理装置403不需要再利用步骤502的方式进行拆分,步长块直接视为是卷积核块。以卷积核60来说,所有的步长块的任一维度的长度均不超过3,故不需要再拆分,所有的步长块直接可以作为卷积核块。在步长为2的情况下,卷积核60同样拆分成8个卷积核块,但每个卷积核块的元素与步长为1的卷积核块的元素不同。
在步骤502或步骤504后,不论步长为何,卷积核块均已获得,接着执行步骤505,处理装置403对应至每个卷积核块,将输入图像拆分成图块。在此实施例中,输入图像的拆分规则与卷积核的拆分规则相同,不同处在于图块第i维的长度为相对应卷积核块第i维的长度加1。
图8示出步长为1的情况下,将输入图像拆分成图块的示意图。图中示例性的显示6×6×6的输入图像80,其将与图6的卷积核60进行卷积运算,如前所述,输入图像80的拆分规则与卷积核60的拆分规则相同,图块的各维度的长度会比相应的卷积核块的维度的长度多1。以R1×S1×T1的第一卷积核块601来说,其大小为3×3×3,相应位置的第一图块801的大小为(R1+1)×(S1+1)×(T1+1),即4×4×4。图9示出另一个例子的示意图。以R2×S1×T1的第五卷积核块605来说,其大小为2×3×3,相应位置的第五图块901的大小为(R2+1)×(S1+1)×(T1+1),即3×4×4。
如果步长大于1,输入图像的拆分规则与卷积核的拆分规则仍相同,即图块在第i维每间隔(Si-1)个取一个元素,且图块的各维度的长度会比相应的卷积核块的维度的长度多1。图10示出步长为2的情况下,将输入图像拆分成图块的示意图。在此示例性的说明中,输入图像的大小设定为7×7×7,其将与卷积核60进行卷积运算。以图7的二维矩阵701为例,如前所述,第一步长块在T=1的二维矩阵701中每间隔1个元素取1个元素,即A111、A131、A151、A311、A331、A351、A511、A531、A551共9个元素。由于第一步长块的各维度的长度不超过3,因此在步骤504中第一步长块直接视为第一卷积核块。
为方便说明,输入图像亦沿着第T维度的方向进行切片,在步骤505中,对应于第一步长块的第一图块在T=1的二维矩阵1001中每间隔1个元素取1个元素,即B111、B131、B151、B171、B311、B331、B351、B371、B511、B531、B551、B571、B711、B731、B751、B771共16个元素。由于沿着T方向同样每间隔1个元素取1个元素,故T=2的元素全部不取,跳至T=3的二维矩阵1002,并在T=3的二维矩阵1002中每间隔1个元素取1个元素,即B113、B133、B153、B173、B313、B333、B353、B373、B513、B533、B553、B573、B713、B733、B753、B773共16个元素。
如图11所示,处理装置403接着在T=5的二维矩阵1101中每间隔1个元素取1个元素,即B115、B135、B155、B175、B315、B335、B355、B375、B515、B535、B555、B575、B715、B735、B755、B775共16个元素。最后在T=7的二维矩阵1102中每间隔1个元素取1个元素,即B117、B137、B157、B177、B317、B337、B357、B377、B517、B537、B557、B577、B717、B737、B757、B777共16个元素。
前述64个元素的集合便是与第一卷积核块进行Winograd卷积运算的第一图块。其余图块依相同的规则来获得,故不赘述。在此步骤中,处理装置403将输入图像拆分成对应至每个卷积核块的图块。
接着执行步骤506,处理装置403将所有的卷积核块与图块存储至DRAM 404中。至此完成拆分三维卷积核与输入图像的任务。
在步骤507中,计算装置401自DRAM 404中依序取出卷积核块与相对应的图块,将每个卷积核块与相对应的图块进行Winograd卷积,以生成中间结果。图12示出示例性的Winograd卷积运算的示意图,图中以卷积核块601为例,与其相应的图块为图块801,图块801与卷积核块601进行如公式一所示的Winograd卷积,生成中间结果1201。由于处理装置403将卷积核与输入图像拆分成8组卷积核块与图块,故在此步骤中计算装置401将进行8次Winograd卷积运算,生成8个中间结果,每个中间结果的各维度的长度均为2。
在步骤508中,计算装置401将所有的中间结果合并为卷积结果。更详细来说,计算装置401将8个中间结果进行对位加运算,以生成卷积结果,卷积结果的各维度的长度亦均为2。
在步骤509中,计算装置401将卷积结果存储至DRAM 404中。至此,组合处理装置40完成将三维常规卷积转换成Winograd卷积运算的任务。
虽然此实施例以三维的卷积核与输入图像为例进行说明,本领域技术人员在没有创造性投入的前提下,可以轻易地理解本发明应用在N维(N大于3)的技术手段,故不赘述。
本发明的另一个实施例是一种将N维的卷积核与输入图像进行Winograd卷积的装置,此实施例能将欲进行常规卷积的任意大小/任意维度的卷积核与输入图像经过拆分,得到适用于Winograd卷积的卷积核块与图块,通过对这些卷积核块与图块进行Winograd卷积,最终获得等效于进行常规卷积的卷积结果。
图13示出此实施例的装置示意图,此装置包括判断模块1301、拆分模块1302、卷积模块1303、合并模块1304及存储模块1305。
判断模块1301判断卷积步长是否等于1。如果卷积步长等于1,则拆分模块1302基于卷积核第i维的长度将卷积核拆分成多个卷积核块。在此实施例中,卷积核将被拆分成个卷积核块,其中Di为卷积核第i维的长度,指的是向下取整。此外,拆分模块1302将卷积核拆分成卷积核块时,Di会被分配成个元素为3的区段。如有剩余元素未分配,剩余元素再配置为一个区段。换言之,拆分模块1302针对卷积核的每个维度进行拆分后,使得卷积核块在每个维度的区段的长度不超过3,且优先以3个元素进行拆分。卷积核块则由每维取1个区段相乘而成。
如果判断模块1301判断卷积步长不等于1,拆分模块1302会将卷积核分为2个阶段拆分成卷积核块。首先拆分模块1302基于卷积步长将卷积核拆分成多步长块。在此实施例中,拆分模块1302将卷积核拆分成个步长块,其中Si为卷积步长,且步长块是在第i维每间隔(Si-1)个取一个元素。
接着拆分模块1302将步长块基于长度大于3的维度拆分成多个卷积核块。在此实施例中,如果存在任意步长块的任一个维度的长度大于3,则拆分模块1302会进一步利用步长等于1的拆分方式再次拆分,使得每个拆分后的块的任一维度的长度不超过3,拆分后的块便是卷积核块。在此第二阶段中,步长块会被连续的拆分,而不需要间隔(Si-1)个取一个元素,例如,步长块的某个维度的长度为5,则前面连续3个元素视为1个区段,剩余2个元素视为另一个区段。
如果步长块的所有维度的长度均不超过3,则拆分模块1302将不会再利用步长等于1的拆分方式进行拆分,步长块直接视为是卷积核块。卷积核块存储在存储模块1305中。
接着拆分模块1302对应至每个卷积核块,将输入图像拆分成图块。在此实施例中,输入图像的拆分方式与前一个实施例相同,故不赘述。图块亦存储在存储模块1305中。至此完成拆分N维卷积核与输入图像的任务。
卷积模块1303自存储模块1305中依序取出卷积核块与相对应的图块,将每个卷积核块与相对应的图块进行Winograd卷积,以生成中间结果。每个图块与相对应的卷积核块进行如公式一所示的Winograd卷积,生成多个中间结果,每个中间结果的各维度的长度均为2。
合并模块1304将所有的中间结果合并为卷积结果。更详细来说,合并模块1304将所有的中间结果进行对位加运算,以生成卷积结果,卷积结果的各维度的长度亦均为2。卷积结果存储至存储模块1305中。至此,此实施例的装置完成将N维常规卷积转换成Winograd卷积运算的任务。
本发明另一个实施例为一种计算机可读存储介质,其上存储有根据进行Winograd卷积的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如前所述各实施例的方法。在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明可以基于不同的卷积步长、卷积核与输入图像、维度,利用一种标准化拆分卷积核与输入图像(神经元)的方案,特别是处理多维度卷积计算时,神经元及权值能够轻易的被拆分,以执行Winograd卷积运算来取代常规卷积,使得Winograd卷积不再受到特定应用场景的限制,进而达到节省运算资源的技术效果。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1、一种将卷积核与输入图像进行Winograd卷积的方法,所述卷积核与所述输入图像为N维,所述方法包括:判断卷积步长是否等于1;如卷积步长不等于1,基于所述卷积步长将所述卷积核拆分成多步长块;将所述多步长块基于长度大于3的维度拆分成多个卷积核块;对应至每个卷积核块,将所述输入图像拆分成图块;将所述卷积核块与相对应的图块进行Winograd卷积,以生成中间结果;以及将所述中间结果合并为卷积结果。
条款A2、根据条款A1所述的方法,还包括:如卷积步长等于1,基于卷积核第i维的长度将所述卷积核拆分成多个卷积核块。
条款A5、根据条款A4所述的方法,其中所述卷积核块由每维的区段相乘而成。
条款A7、根据条款A6所述的方法,其中所述步长块在第i维每间隔(Si-1)个取一个元素。
条款A8、根据条款A6所述的方法,其中所述图块在第i维每间隔(Si-1)个取一个元素。
条款A9、根据条款A1或2所述的方法,其中所述图块第i维的长度为相对应卷积核块第i维的长度加1。
条款A10、根据条款A1或2所述的方法,其中所述中间结果第i维的长度为2。
条款A11、根据条款A1或2所述的方法,其中所述卷积结果为将所有中间结果进行对位加运算的结果。
条款A12、一种计算机可读存储介质,其上存储有进行Winograd卷积的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行条款A1至11任一项所述的方法。
条款A13、一种将卷积核与输入图像进行Winograd卷积的装置,所述卷积核与所述输入图像为N维,所述装置包括:判断模块,用以判断卷积步长是否等于1;拆分模块,用以:如卷积步长不等于1,基于所述卷积步长将所述卷积核拆分成多步长块;将所述多步长块基于长度大于3的维度拆分成多个卷积核块;以及对应至每个卷积核块,将所述输入图像拆分成图块;卷积模块,用以将所述卷积核块与相对应的图块进行Winograd卷积,以生成中间结果;以及合并模块,用以将所述中间结果合并为卷积结果。
条款A14、根据条款A13所述的装置,其中如卷积步长等于1,所述拆分模块还用以基于卷积核第i维的长度将所述卷积核拆分成多个卷积核块。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种将卷积核与输入图像进行Winograd卷积的方法,所述卷积核与所述输入图像为N维,所述方法包括:
判断卷积步长是否等于1;
如卷积步长不等于1,基于所述卷积步长将所述卷积核拆分成多步长块;
将所述多步长块基于长度大于3的维度拆分成多个卷积核块;
对应至每个卷积核块,将所述输入图像拆分成图块;
将所述卷积核块与相对应的图块进行Winograd卷积,以生成中间结果;以及
将所述中间结果合并为卷积结果。
2.根据权利要求1所述的方法,还包括:
如卷积步长等于1,基于卷积核第i维的长度将所述卷积核拆分成多个卷积核块。
5.根据权利要求4所述的方法,其中所述卷积核块由每维的区段相乘而成。
7.根据权利要求6所述的方法,其中所述步长块在第i维每间隔(Si-1)个取一个元素。
8.根据权利要求6所述的方法,其中所述图块在第i维每间隔(Si-1)个取一个元素。
9.根据权利要求1或2所述的方法,其中所述图块第i维的长度为相对应卷积核块第i维的长度加1。
10.根据权利要求1或2所述的方法,其中所述中间结果第i维的长度为2。
11.根据权利要求1或2所述的方法,其中所述卷积结果为将所有中间结果进行对位加运算的结果。
12.一种计算机可读存储介质,其上存储有进行Winograd卷积的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求1至11任一项所述的方法。
13.一种将卷积核与输入图像进行Winograd卷积的装置,所述卷积核与所述输入图像为N维,所述装置包括:
判断模块,用以判断卷积步长是否等于1;
拆分模块,用以:
如卷积步长不等于1,基于所述卷积步长将所述卷积核拆分成多步长块;
将所述多步长块基于长度大于3的维度拆分成多个卷积核块;以及
对应至每个卷积核块,将所述输入图像拆分成图块;
卷积模块,用以将所述卷积核块与相对应的图块进行Winograd卷积,以生成中间结果;以及
合并模块,用以将所述中间结果合并为卷积结果。
14.根据权利要求13所述的装置,其中如卷积步长等于1,所述拆分模块还用以基于卷积核第i维的长度将所述卷积核拆分成多个卷积核块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110420798.5A CN115221463A (zh) | 2021-04-19 | 2021-04-19 | 进行Winograd卷积的方法、可读存储介质及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110420798.5A CN115221463A (zh) | 2021-04-19 | 2021-04-19 | 进行Winograd卷积的方法、可读存储介质及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115221463A true CN115221463A (zh) | 2022-10-21 |
Family
ID=83605867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110420798.5A Pending CN115221463A (zh) | 2021-04-19 | 2021-04-19 | 进行Winograd卷积的方法、可读存储介质及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221463A (zh) |
-
2021
- 2021-04-19 CN CN202110420798.5A patent/CN115221463A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN115221102B (zh) | 用于优化片上系统的卷积运算操作的方法和相关产品 | |
WO2021083101A1 (zh) | 数据处理方法、装置及相关产品 | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
WO2021082725A1 (zh) | Winograd卷积运算方法及相关产品 | |
CN114003198A (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
US11775808B2 (en) | Neural network computation device and method | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN111930681A (zh) | 一种计算装置及相关产品 | |
Li et al. | Enabling high performance deep learning networks on embedded systems | |
WO2021082747A1 (zh) | 运算装置及相关产品 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
TWI798591B (zh) | 卷積神經網路運算方法及裝置 | |
CN115221463A (zh) | 进行Winograd卷积的方法、可读存储介质及装置 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
CN113112009B (zh) | 用于神经网络数据量化的方法、装置和计算机可读存储介质 | |
CN111382835B (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN112766471A (zh) | 运算装置及相关产品 | |
CN113807489B (zh) | 用于执行反卷积操作的方法、板卡及其计算装置 | |
CN111047024A (zh) | 一种计算装置及相关产品 | |
CN114692847B (zh) | 数据处理电路、数据处理方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |