CN115034360A - 三维卷积神经网络卷积层的处理方法和处理装置 - Google Patents
三维卷积神经网络卷积层的处理方法和处理装置 Download PDFInfo
- Publication number
- CN115034360A CN115034360A CN202210580197.5A CN202210580197A CN115034360A CN 115034360 A CN115034360 A CN 115034360A CN 202210580197 A CN202210580197 A CN 202210580197A CN 115034360 A CN115034360 A CN 115034360A
- Authority
- CN
- China
- Prior art keywords
- convolution
- calculation
- neural network
- dimensional
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供一种三维卷积神经网络卷积层的处理方法,用于三维卷积神经网络卷积层的处理装置,所述处理装置包括乘加计算阵列、累加器,所述处理方法包括:配置所述三维卷积神经网络中卷积核的个数为K;配置所述三维卷积神经网络中卷积核和输入特征图的通道数均为C;展开所述卷积核/输入特征图的通道维度以及卷积核的数量维度,完成三维卷积神经网络中卷积层的计算。
Description
技术领域
本申请涉及神经网络领域,具体涉及一种三维卷积神经网络卷积层的处理方法和处理装置。
背景技术
随着深度学习领域研究的深入,其相关算法在数字图像处理、语音识别、自然语言处理等诸多领域日益蓬勃。三维卷积神经网络是深度神经网络的一个分支,相比于二维的神经网络,它可以适应更高维度、更复杂的数据处理,譬如视频分类、医疗图像分割、点云数据处理等。
三维卷积神经网络的优秀性已经逐步得到认可,但其巨大的计算量和数据量也限制了它的应用,因此有效地在硬件端映射三维卷积网络成为了三维卷积神经网络的研究趋势之一。其中,由于卷积层占据了整个三维卷积网络百分之九十以上的计算,因此高效地处理卷积层尤为重要。
发明内容
本申请旨在提供一种三维卷积神经网络卷积层的处理方法和处理装置,通过减少卷积核和输入特征图平铺维度的数量,仅在装置上平铺映射了卷积核和输入特征图的通道维度和卷积核的数量维度,相对于全维度的平铺映射,提高了卷积核数据的重用性,从而降低了从内存中读取数据的功耗开销,因此大大降低了整体硬件面积的开销和功耗。
根据本申请的一方面,提供一种三维卷积神经网络卷积层的处理方法,用于三维卷积神经网络卷积层的处理装置,所述处理装置包括乘加计算阵列、累加器,所述处理方法包括:
配置所述三维卷积神经网络中卷积核的个数为K;
配置所述三维卷积神经网络中卷积核和输入特征图的通道数为C;
展开所述卷积核/输入特征图的通道维度以及卷积核的数量维度,完成三维卷积神经网络中卷积层的计算。
根据一些实施例,所述方法包括:
所述展开所述卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算,包括:
设置所述乘加计算阵列为K×C个计算单元构成,其中,所述乘加计算阵列的行数K为三维卷积神经网络中卷积核的个数,列数C为三维卷积神经网络中卷积核和输入特征图的通道数。
根据一些实施例,所述方法包括:
所述展开所述卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算,还包括:
设置所述计算单元包含两个存储单元和一个乘法器,所述两个存储单元分别存储当前计算周期参与计算的卷积核数据和输入特征图数据,所述乘法器将所述卷积核数据和所述输入特征图数据进行相乘。
根据一些实施例,所述方法包括:
所述展开所述卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算,还包括:
在每个计算周期将所述输入特征图每个通道的一部分数据和所述卷积核每个通道的一部分数据输入所述乘加计算阵列进行计算;
在每个计算周期将每一行的C个所述乘法器产生的乘法结果相加,生成第一乘加结果;
在经过N个所述计算周期后,将产生的N个所述第一乘加结果进行相加,得到最终的乘加结果,其中N为所述输出特征图的高度、宽度、深度的乘积。
根据一些实施例,所述方法还包括:
将所述卷积核/输入特征图的通道数进行分组,依次按照分组输入所述乘加计算阵列进行计算。
根据一些实施例,所述方法还包括:
将所述卷积核的数量进行分组,依次按照分组输入所述乘加计算阵列进行计算。
根据一些实施例,所述方法还包括:
设置所述乘加计算阵列含有K×C×2个内存接口,用以接收所述乘加阵列外部的存储单元传递过来的所述输入特征图数据和所述卷积核数据。
根据一些实施例,所述方法还包括:
设置所述乘加计算阵列含有K个数据接口,用以向所述累加器传递所述乘加计算阵列完成的乘加结果。
根据一些实施例,所述方法还包括:
设置所述输入特征图的尺寸大于或等于每个卷积核的尺寸。
根据本申请的一方面,提出一种三维卷积神经网络卷积层的处理装置,所述处理装置包括:乘加计算阵列,所述乘加计算阵列由K×C个所述计算单元构成,所述计算单元包含两个存储单元和一个乘法器,所述存储单元用于存储当前计算周期参与计算的卷积核参数和输入特征图参数,所述乘法器,用于将所述卷积核参数和所述输入特征图参数进行相乘。
根据一些实施例,所述装置还包括:
累加器,用于累加来自所述乘加计算阵列同一行不同计算周期产生的数据。
根据一些实施例,所述装置还包括:
所述乘加计算阵列的行数K为三维卷积神经网络中卷积核的个数,所述乘加计算阵列的列数C为三维卷积神经网络中卷积核的通道数,所述输入特征图的通道数等于所述卷积核的通道数。
根据本申请的另一方面,提出一种处理器,所述处理器包括上述装置中任一项所述的装置。
根据本申请示例实施例,通过减少卷积核和输入特征图平铺维度的数量,仅在装置上平铺映射了卷积核和输入特征图的通道维度和卷积核的数量维度,相对于全维度的平铺映射,提高了卷积核数据的重用性,从而降低了从内存中读取数据的功耗开销,因此大大降低了整体硬件面积的开销和功耗,同时采用流水线的思想,大大提高了三维卷积神经网络中,卷积层的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1示出根据本申请示例实施例的三维卷积神经网络卷积层的计算原理示意图。
图2示出根据本申请示例实施例的三维卷积神经网络卷积层的处理装置的框图。
图3示出根据本申请示例实施例的三维卷积神经网络乘加计算阵列示意图。
图4示出根据本申请示例实施例的三维卷积神经网络卷积层处理装置的整体结构示意图。
图5示出根据本申请示例实施例的三维卷积神经网络卷积层的处理方法流程图。
图6示出根据本申请示例实施例的三维卷积神经网络卷积层的处理方法示意图。
图7示出根据本申请示例实施例的三维卷积神经网络卷积层的处理方法程序流程示意图。
图8示出根据一示例性实施例的一种电子设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
在三维卷积神经网络的计算中,卷积层占据了整个三维卷积网络百分之九十以上的计算,因此高效地处理卷积层尤为重要。三维卷积神经网络卷积层的计算原理示意图如图1所示。
用数学公式表示如下:
其中OF表示输出特征图,IF表示输入特征图,W表示卷积核。m表示输出特征图的通道,x、y、z表示输出特征图单个通道的三个维度。
由上图及数学公式可见,从卷积核的角度看,三维卷积神经网络的计算涉及五个维度,分别为卷积核数量K、卷积核通道C、卷积核高度H、宽度W、深度D。
面对三维卷积神经网络的多维度运算,常见的方法是利用单指令多数据流(SIMD)的思想将一个或多个维度参量展开映射到硬件上。
本申请在SIMD思想的基础上,通过展开卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算,在保证数据高并行性的前提下,挖掘数据潜在的复用程度,以提高三维卷积神经网络中卷积层的计算效率。
在已有的技术方案中,与本申请最相接近的技术方案是一种基于三维卷积神经网络的映射装置及方法,专利号为CN110390391A,在该专利方案中,虽然公布了一种三维卷积神经网络的处理方法,但仍然存在以下不足:
1.该方案将卷积核所有维度的计算参数都平铺映射到了装置上,会导致硬件面积的急剧增大,功耗提高。
2.该方案将大量的卷积核数据存储至存储单元,导致卷积核数据的重用性很低,这会导致同一数据的多次存取,进一步提高了功耗。
3.一个完整的三维卷积神经网络卷积核的尺寸不会是单一的,但该方案由于根据卷积核的大小确定装置的大小,会导致装置的灵活性变差,面向单一卷积核的装置对其他大小的卷积核计算会变得十分困难。
本申请的方案仅展开卷积核和输入特征图的通道维度以及卷积核的数量维度,此外某一卷积核数据将在计算装置中停留数个周期,以保证其参与的所有运算都完成后才将其释放。
以下结合附图对本申请的示例实施例进行说明。
图2示出根据本申请示例实施例的三维卷积神经网络卷积层的处理装置的框图。
参见图2,三维卷积神经网络卷积层的处理装置包括:乘加计算阵列201和累加器205。
其中,乘加计算阵列201可为K×C个计算单元202构成,乘加计算阵列201的行数K为三维卷积神经网络中卷积核的个数,列数C为三维卷积神经网络中卷积核和输入特征图的通道数。乘加计算阵列示意图如图3所示。
计算单元202可包含两个存储单元203和一个乘法器204,两个存储单元203分别存储当前计算周期参与计算的卷积核参数和输入特征图参数,乘法器204将卷积核参数和所述输入特征图参数进行相乘。
乘加计算阵列201按照卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算。
乘加计算阵列201还可包括K×C×2个内存接口,用以接收乘加阵列外部的存储单元传递过来的输入特征图参数和所述卷积核参数。
乘加计算阵列201还可包括K个数据接口,用以向累加器传递乘加计算阵列完成的乘和结果的累加结果。
累加器205内部可含有存储单元,存储来自乘加计算阵列的数据,累加器205用于累加来自乘加计算阵列同一行不同计算周期产生的数据。
图4示出根据本申请示例实施例的三维卷积神经网络卷积层的处理装置的整体结构示意图。
参见图4,三维卷积神经网络卷积层的处理装置的乘加计算阵列由K×C个计算单元构成,计算阵列的行数K等于三维卷积神经网络中卷积核的个数,列数C等于三维卷积神经网络中卷积核和输入特征图的通道大小。
每一个计算单元内部包含两个存储单元和一个乘法器,两个单元分别存储当前周期参与计算的卷积核参数和输入特征图参数,乘法器则将这两个参数进行相乘。某一行的C个乘法器和其余行的C个乘法器相互独立,互不影响计算;同一行的C个乘法器产生的乘法结果会在数个周期后相加,产生当前通道的乘加结果。
乘加计算阵列中的每一个计算单元在一个计算周期中是并行运算的,因此在一个计算周期中,能够完成K×C次乘法操作,在经过数个时钟周期将来自同一行的数据进行相加,得到最终的乘加结果。
计算阵列的尺寸可以动态配置,根据实际三维神经网络的尺寸,可动态的配置K和C的大小。
图5示出根据本申请示例实施例的三维卷积神经网络卷积层的处理方法流程图。
参加图5,在S501,配置三维卷积神经网络中卷积核的个数为K。
根据一些实施例,三维卷积神经网络卷积层的处理装置的乘加计算阵列由K×C个计算单元构成,配置计算阵列的行数K等于三维卷积神经网络中卷积核的个数,列数C等于三维卷积神经网络中卷积核和输入特征图的通道大小。
在S503,配置三维卷积神经网络中卷积核和输入特征图的通道数为C。
根据一些实施例,配置计算阵列的行数K等于三维卷积神经网络中卷积核的个数,列数C等于三维卷积神经网络中卷积核和输入特征图的通道大小。
计算阵列的尺寸可以动态配置,根据实际三维神经网络的尺寸,可动态的配置K和C的大小。
在S505,展开所述卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算。
根据一些实施例,每一个计算单元内部的两个存储单元分别存储当前周期参与计算的卷积核参数和输入特征图参数,乘法器则将这两个参数进行相乘。某一行的C个乘法器和其余行的C个乘法器相互独立,互不影响计算;同一行的C个乘法器产生的乘法结果会在数个周期后相加,产生当前通道的乘加结果。
乘加计算阵列中的每一个计算单元在一个计算周期中是并行运算的,因此在一个计算周期中,能够完成K×C次乘法操作,在经过数个时钟周期将来自同一行的数据进行相加,得到最终的乘加结果。
例如,第一个计算周期,乘加计算阵列接收第一组K×C个输入特征图和卷积核数据,得到输出特征图的第一个数据;第二个周期,接收第二组K×C个输入特征图数据,将其和第一组K×C卷积核数据进行相加运算,得到输出特征图的第二个数据;第三个周期,接收第三组K×C个输入特征图数据,将其和第一组K×C个卷积核数据相运算,得到输出特征图的第三个数据。
以此类推,当第一组K×C个卷积核数据在本次三维卷积神经网络的运算中不再参与运算后,释放掉。接着传入第二组K×C个卷积核数据,重复上述操作。
每一组K×C个卷积核数据的重用次数等于输出特征图三个维度参数的乘积,大大提高了数据利用率,降低了数据搬移的频率,以此降低了功耗。
乘加计算阵列可含有K×C×2个内存接口,用以接收阵列外部存储器传递过来的输入特征图参数和卷积核参数;此外,乘加计算阵列还可含有K个数据接口,用以向累加器传递乘加阵列完成的乘和累加结果。
根据一些实施例,还可通过修改乘加计算阵列的尺寸、内存单元的大小、输出特征图维度的产生顺序等来实现本申请提出的三维卷积神经网络中卷积层的处理方法。
基于上述描述,装置内部(乘加计算阵列外部)的存储器仅需要存储第一组卷积核数据相关运算的数据即可,整个过程可配置成流水线,其余数据可以在第一组数据运算之时,传输至装置内部。由此大大降低了装置内部存储单元的大小,降低了硬件面积的消耗。
完整的输出特征图数据需要完整的卷积核参与运算后得到,而乘加计算阵列将卷积核分成多组,在不同的时间下进行运算,多个时间戳才能够得到一个完整的输出特征图数据。累加器内部含有存储单元,存储来自乘加计算阵列的数据。累加器将这些数据中来自不同组卷积核且属于同一输出特征图的数据进行累加,得到最终完整的输出特征图。
根据一些实施例,实现以上方法的部分程序代码如下所示,其中OF代表输出特征图,IF代表输入特征图,W代表卷积核。
图6示出根据本申请示例实施例的三维卷积神经网络卷积层的处理方法示意图。
参见图6,以输入特征图大小为28*28*28*64(输入特征图单个通道的三个维度x、y、z分别是28、28、28,通道数为64),卷积核大小为3*3*3*64*16(卷积核的高度H、宽度W、深度D分别是3、3、3,通道数C是64,卷积核数量K是16)为例,卷积核步长为1的情况下,则输出特征图的大小为26*26*26*16。
此时,乘加计算阵列的大小布置为16*64。16是卷积核的个数K,64是通道数C,计算阵列由K*C个计算单元构成,也就是16*64个计算单元。
如图6所示,以64的通道数为整体取出一小块输入特征图1*1*1*64,以及一小块卷积核1*1*1*64*16。该小块的输入特征图会广播到乘加阵列的16行中,即16行中的乘加计算阵列拥有相同的一小块输入特征图1*1*1*64;小块的卷积核则按照顺序放入乘加计算阵列中,即第1行乘加阵列放入第一个卷积核小块(1,1,1,64,1),第2行乘加阵列放入第二个卷积核小块(1,1,1,64,2),依次类推,第16行乘加阵列放入第十六个卷积核小块(1,1,1,64,16)。
第1个计算周期中,坐标为(1,1,1,64)的输入特征图分别和16个坐标为(1,1,1,64)的卷积核做乘加运算,计算得出输出特征图16个通道坐标为(1,1,1)的部分和。
这里坐标的含义是比如卷积核的大小为3x3x3(宽度,高度,深度),那卷积核(1,1,1)坐标对应的就是宽度为1,高度为1,深度为1的一小块卷积核。对于输入特征图来说,通道数是展开到计算阵列上的,卷积核的通道数和个数也是,所以这里的坐标都指的是三种类型数据的宽度、高度和深度。
第2个计算周期中,保持小块卷积核数据在乘加计算阵列中,仅更新输入特征图的数据至(2,1,1,64),计算得出输出特征图16个通道坐标为(2,1,1)的部分和。
依次循环往复,直到第26*26*26个计算周期,输入特征图的数据更新至(26,26,26,64),和16个坐标为(1,1,1,64)的卷积核做乘加运算,计算得出输出特征图16个通道坐标为(26,26,26)的部分和。
第26*26*26+1个计算周期,输入特征图的数据更新为(2,1,1,64),16个卷积核数据更新至(2,1,1,64),计算得出输出特征图16个通道坐标为(1,1,1)的部分和。
综上所述,以26*26*26个计算周期为一个循环,保持小块卷积核数据在乘加计算阵列中不变,每一个计算周期更新仅更新输入特征图的数据;每一个循环外,更新卷积核的数据。从第一维度->第二维度->第三维度的顺序方向依次产生输出特征图的部分和。
乘加计算阵列产生的输出特征图部分和将会暂存至累加器的内存单元中,直至完成所有部分和的累加,最后得出完整的输出特征图。例如,每一个计算周期,乘加阵列产生K个结果,总共会有w*h*d(卷积核的宽度w、高度h、深度d的乘积)个计算周期,也就是说,每一行是产生w*h*d个部分和,只有将这些部分和累加起来,才会得到完整的输出特征图。整个处理方法程序流程示意图参见图7所示。
整个处理方法采用流水线的思想,将整个过程分为取出输入特征图\卷积核数据、乘加计算、累加器累加部分和,以提高计算效率。
当输入特征图和卷积核的通道数太大时,会出现硬件面积急剧增大的情况。譬如,如果输入特征图和卷积核通道数达到了112,此时将乘加计算阵列的列数扩大至112时,会导致硬件面积开销增大,从而引起一系列的功耗问题。面向这类问题,乘加计算阵列可以不需要布置成全平铺输入特征图和卷积核通道维度,而是将通道进行分组处理。面对譬如112等大通道数的情况,乘加计算阵列的列数C依旧可以布置成64,第一个通道处理时间内,处理输入特征图/卷积核的1-64通道,第二个通道处理时间内,处理输入特征图/卷积核的65-112通道。
同样地,面向大卷积核数量的情况,也可以将其进行分组处理,每次只处理一小组卷积核数据。例如,卷积核数量达到64时,依旧可以将乘加计算阵列的行数K设置为16,在第一个卷积核处理时间内,处理1-16个卷积核数据,第二个卷积核处理时间内,处理17-32个卷积核数据,第三个卷积核处理时间内,处理33-48个卷积核数据,第三个卷积核处理时间内,处理49-64个卷积核数据。
对卷积核尺寸(宽度、高度、深度)进行分组处理,可以提高卷积核数据在整个三维卷积神经网络卷积层计算中的重用性;对卷积核通道和数量进行分组处理,可以严格控制部署装置的面积和功耗,同时也可以适应三维卷积神经网络中卷积核维度多变的情况,进一步的提高了整个装置处理三维卷积神经网络的灵活性。
应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
通过对示例实施例的描述,本领域技术人员易于理解,根据本申请实施例的三维卷积神经网络卷积层的处理方法方法至少具有以下优点中的一个或多个。
根据示例实施例,通过减少卷积核和输入特征图平铺维度的数量,仅在装置上平铺映射了卷积核和输入特征图的通道维度和卷积核的数量维度,相对于全维度的平铺映射,提高了卷积核数据的重用性,从而降低了从内存中读取数据的功耗开销,因此大大降低了整体硬件面积的开销和功耗,同时采用流水线的思想,大大提高了三维卷积神经网络中,卷积层的处理效率。
图8示出根据一示例性实施例的一种电子设备的框图。
下面参照图8来描述根据本申请的这种实施方式的电子设备200。图8显示的电子设备200仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,电子设备200以通用计算设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同系统组件(包括存储单元220和处理单元210)的总线230、显示单元240等。
其中,存储单元存储有程序代码,程序代码可以被处理单元210执行,使得处理单元210执行本说明书描述的根据本申请各种示例性实施方式的方法。
存储单元220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)2201和/或高速缓存存储单元2202,还可以进一步包括只读存储单元(ROM)2203。
存储单元220还可以包括具有一组(至少一个)程序模块2205的程序/实用工具2204,这样的程序模块2205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (12)
1.一种三维卷积神经网络卷积层的处理方法,用于三维卷积神经网络卷积层的处理装置,所述处理装置包括乘加计算阵列、累加器,其特征在于,所述处理方法包括:
配置所述三维卷积神经网络中卷积核的个数为K;
配置所述三维卷积神经网络中卷积核和输入特征图的通道数均为C;
展开所述卷积核/输入特征图的通道维度以及卷积核的数量维度,完成三维卷积神经网络中卷积层的计算。
2.根据权利要求1所述的方法,其特征在于,所述展开所述卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算,包括:
设置所述乘加计算阵列为K×C个计算单元构成,其中,所述乘加计算阵列的行数K为三维卷积神经网络中卷积核的个数,列数C为三维卷积神经网络中卷积核和输入特征图的通道数。
3.根据权利要求2所述的方法,其特征在于,所述展开所述卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算,还包括:
设置所述计算单元包含两个存储单元和一个乘法器,所述两个存储单元分别存储当前计算周期参与计算的卷积核数据和输入特征图数据,所述乘法器将所述卷积核数据和所述输入特征图数据进行相乘。
4.根据权利要求3所述的方法,其特征在于,所述展开所述卷积核和输入特征图的通道维度以及卷积核的数量维度完成三维卷积神经网络中卷积层的计算,还包括:
将所述输入特征图数据按照尺寸进行分组,得到输入特征图的分组数据;
将所述卷积核数据按照尺寸进行分组,得到卷积核的分组数据;
在每个计算周期将所述输入特征图的分组数据和所述卷积核的分组数据输入所述乘加计算阵列进行计算;
在每个计算周期将每一行的C个所述乘法器产生的乘法结果相加,生成第一乘加结果;
在经过N个所述计算周期后,将产生的N个所述第一乘加结果进行相加,得到最终的乘加结果,其中N为所述输出特征图的高度、宽度、深度的乘积。
5.根据权利要求4所述的方法,其特征在于,还包括:
将所述卷积核/输入特征图的通道数进行分组,依次按照分组输入所述乘加计算阵列进行计算。
6.根据权利要求5所述的方法,其特征在于,还包括:
将所述卷积核的数量进行分组,依次按照分组输入所述乘加计算阵列进行计算。
7.根据权利要求1所述的方法,其特征在于,还包括:
设置所述乘加计算阵列含有K×C×2个内存接口,用以接收所述乘加阵列外部的存储单元传递过来的所述输入特征图数据和所述卷积核数据。
8.根据权利要求1所述的方法,其特征在于,还包括:
设置所述乘加计算阵列含有K个数据接口,用以向所述累加器传递所述乘加计算阵列完成的乘加结果。
9.根据权利要求1所述的方法,其特征在于,还包括:
设置所述输入特征图的尺寸大于或等于每个卷积核的尺寸。
10.一种三维卷积神经网络卷积层的处理装置,其特征在于,包括:
乘加计算阵列,所述乘加计算阵列由K×C个所述计算单元构成,所述计算单元包含两个存储单元和一个乘法器,所述存储单元用于存储当前计算周期参与计算的卷积核参数和输入特征图参数,所述乘法器,用于将所述卷积核参数和所述输入特征图参数进行相乘。
11.根据权利要求10所述的装置,其特征在于,还包括:
累加器,用于累加来自所述乘加计算阵列同一行不同计算周期产生的数据。
12.根据权利要求10所述的装置,其特征在于,所述乘加计算阵列的行数K为三维卷积神经网络中卷积核的个数,所述乘加计算阵列的列数C为三维卷积神经网络中卷积核的通道数,所述输入特征图的通道数等于所述卷积核的通道数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210580197.5A CN115034360A (zh) | 2022-05-25 | 2022-05-25 | 三维卷积神经网络卷积层的处理方法和处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210580197.5A CN115034360A (zh) | 2022-05-25 | 2022-05-25 | 三维卷积神经网络卷积层的处理方法和处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115034360A true CN115034360A (zh) | 2022-09-09 |
Family
ID=83120274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210580197.5A Pending CN115034360A (zh) | 2022-05-25 | 2022-05-25 | 三维卷积神经网络卷积层的处理方法和处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115034360A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574136A (zh) * | 2024-01-16 | 2024-02-20 | 浙江大学海南研究院 | 一种基于多元高斯函数空间变换的卷积神经网络计算方法 |
-
2022
- 2022-05-25 CN CN202210580197.5A patent/CN115034360A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574136A (zh) * | 2024-01-16 | 2024-02-20 | 浙江大学海南研究院 | 一种基于多元高斯函数空间变换的卷积神经网络计算方法 |
CN117574136B (zh) * | 2024-01-16 | 2024-05-10 | 浙江大学海南研究院 | 一种基于多元高斯函数空间变换的卷积神经网络计算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Podili et al. | Fast and efficient implementation of convolutional neural networks on FPGA | |
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
JP7065877B2 (ja) | チップ装置および関連製品 | |
US10832120B2 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
US8959135B2 (en) | Data structure for tiling and packetizing a sparse matrix | |
US8769216B2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
CN112106078A (zh) | 神经网络处理元件 | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
US20210065328A1 (en) | System and methods for computing 2-d convolutions and cross-correlations | |
Fan et al. | Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation | |
WO2021080873A1 (en) | Structured pruning for machine learning model | |
US20220350662A1 (en) | Mixed-signal acceleration of deep neural networks | |
CN112836787A (zh) | 通过高效混合并行化减少深度神经网络训练次数 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
CN115034360A (zh) | 三维卷积神经网络卷积层的处理方法和处理装置 | |
Shrivastava et al. | A survey of hardware architectures for generative adversarial networks | |
Ong et al. | Pipeline implementations of Neumann–Neumann and Dirichlet–Neumann waveform relaxation methods | |
CN217821651U (zh) | 三维卷积神经网络卷积层的处理装置和处理器 | |
US20230297337A1 (en) | System and method for accelerating training of deep learning networks | |
Di et al. | Exploring resource-efficient acceleration algorithm for transposed convolution of GANs on FPGA | |
JP2022181161A (ja) | ハードウェアにおけるスパース行列乗算 | |
Lee et al. | MVP: An Efficient CNN Accelerator with Matrix, Vector, and Processing-Near-Memory Units | |
Tripathy et al. | Distributed Matrix-Based Sampling for Graph Neural Network Training | |
Soiman et al. | A parallel accelerated approach of HMM Forward Algorithm for IBM Roadrunner clusters |
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 |