CN115756493A - 神经网络模型的编译方法、装置、存储介质及电子设备 - Google Patents
神经网络模型的编译方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115756493A CN115756493A CN202211558282.8A CN202211558282A CN115756493A CN 115756493 A CN115756493 A CN 115756493A CN 202211558282 A CN202211558282 A CN 202211558282A CN 115756493 A CN115756493 A CN 115756493A
- Authority
- CN
- China
- Prior art keywords
- feature map
- pooling
- target
- transposed
- neural network
- 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
- 238000003062 neural network model Methods 0.000 title claims abstract description 83
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000011176 pooling Methods 0.000 claims abstract description 335
- 238000012545 processing Methods 0.000 claims abstract description 42
- 230000017105 transposition Effects 0.000 claims abstract description 34
- 238000013528 artificial neural network Methods 0.000 claims abstract description 33
- 238000010586 diagram Methods 0.000 claims description 91
- 230000001131 transforming effect Effects 0.000 claims description 15
- 230000009466 transformation Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
公开了一种神经网络模型的编译方法、装置、存储介质及电子设备。该方法包括:获取待编译神经网络模型;基于待编译神经网络模型中的第一池化层采用的池化方式信息,将第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,得到第二池化层,转置特征图通过对输入特征图进行维度转置运算获得,目标运算为神经网络加速器支持的运算;基于待编译神经网络模型中除第一池化层之外的网络层,以及第二池化层,通过编译处理生成目标神经网络模型。本公开能够在神经网络加速器中未针对池化层设置专门的硬件的前提下,正常实现池化运算,有利于减小硬件开销,且保证包括池化层的神经网络模型的正常使用。
Description
技术领域
本公开涉及人工智能技术,尤其是一种神经网络模型的编译方法、装置、存储介质及电子设备。
背景技术
一些情况下,神经网络模型中存在池化层,为了保证池化层的池化运算的正常实现,神经网络加速器中需要针对池化层设置专门的硬件,如果神经网络加速器中未针对池化层设置专门的硬件,池化层的池化运算无法正常实现,而针对池化层设置专门的硬件会增大硬件开销。
发明内容
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种神经网络模型的编译方法、装置、存储介质及电子设备。
根据本公开实施例的一个方面,提供了一种神经网络模型的编译方法,包括:
获取待编译神经网络模型;
基于所述待编译神经网络模型中的第一池化层采用的池化方式信息,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,得到第二池化层,所述转置特征图通过对所述输入特征图进行维度转置运算获得,所述转置特征图的通道维度对应所述输入特征图的非通道维度,所述转置特征图的非通道维度对应所述输入特征图的通道维度,所述目标运算为神经网络加速器支持的运算;
基于所述待编译神经网络模型中除所述第一池化层之外的网络层,以及所述第二池化层,通过编译处理生成目标神经网络模型。
根据本公开实施例的另一个方面,提供了一种神经网络模型的编译装置,包括:
获取模块,用于获取待编译神经网络模型;
变换模块,用于基于所述获取模块获取的所述待编译神经网络模型中的第一池化层采用的池化方式信息,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,得到第二池化层,所述转置特征图通过对所述输入特征图进行维度转置运算获得,所述转置特征图的通道维度对应所述输入特征图的非通道维度,所述转置特征图的非通道维度对应所述输入特征图的通道维度,所述目标运算为神经网络加速器支持的运算;
生成模块,用于基于所述获取模块获取的所述待编译神经网络模型中除所述第一池化层之外的网络层,以及所述变换模块得到的所述第二池化层,通过编译处理生成目标神经网络模型。
根据本公开的再一个方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述神经网络模型的编译方法。
根据本公开的又一个方面,提供了一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述神经网络模型的编译方法。
基于本公开上述实施例提供的神经网络模型的编译方法、装置、存储介质及电子设备,可以在对神经网络模型进行编译的过程中,将池化运算变换为神经网络加速器支持的运算,这样,即便神经网络加速器中没有针对池化层设置专门的硬件,也能够通过与池化运算等同的运算,间接实现池化运算,也即,本公开的实施例能够在神经网络加速器中未针对池化层设置专门的硬件的前提下,正常实现池化运算,这样有利于减小硬件开销,同时能够保证包括池化层的神经网络模型的正常使用。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是相关技术中卷积层的计算方式的示意图。
图2-1是相关技术中池化层的计算方式的示意图之一。
图2-2是相关技术中池化层的计算方式的示意图之二。
图2-3是相关技术中池化层的计算方式的示意图之三。
图3是本公开的实施例中实现池化运算的原理图。
图4是本公开一示例性实施例提供的神经网络模型的编译方法的流程示意图。
图5是本公开另一示例性实施例提供的神经网络模型的编译方法的流程示意图。
图6是本公开的实施例中输入特征图的示意图。
图7是本公开的实施例中转置特征图的示意图。
图8是本公开的实施例中第一卷积核集合的示意图。
图9是本公开的实施例中目标卷积核组的示意图。
图10是本公开的实施例中对第二特征图沿通道方向进行分组的分组结果示意图。
图11是本公开的实施例中第三卷积核集合的示意图。
图12是本公开的实施例中第五特征图的示意图。
图13是本公开一示例性实施例提供的神经网络模型的编译装置的结构示意图。
图14是本公开另一示例性实施例提供的神经网络模型的编译装置的结构示意图。
图15是本公开一示例性实施例提供的电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
申请概述
一些芯片上可以部署有神经网络加速器,例如,人工智能(ArtificialIntelligence,AI)芯片上可以部署有大脑处理器(Brain Processing Unit,BPU)。需要说明的是,神经网络加速器可以用于实现神经网络模型,例如用于实现进行目标检测的神经网络模型。
在实现本公开的过程中,发明人发现,神经网络模型中的不同种类的网络层的计算方式往往不同,用于实现不同种类的网络层的计算的硬件或存在不同,例如,神经网络模型中的卷积层和池化层的计算方式有很大的差别,其中,卷积层的计算方式可以参见图1,池化层的计算方式可以参见图2-1、图2-2或者图2-3,很明显,卷积层的计算在宽度维度、高度维度、通道维度这三个维度上进行,而池化层的计算是在宽度维度和高度维度这两个维度上进行。
目前,为了保证池化层的池化运算的正常实现,神经网络加速器中需要针对池化层设置专门的硬件,反过来说,如果神经网络加速器中未针对池化层设置专门的硬件,池化层的池化运算无法正常实现,从而影响到神经网络模型的正常使用,而针对池化层设置专门的硬件会增大硬件开销,因此,有必要采取一种更为合理的方式来实现池化层的池化运算。
示例性系统
需要说明的是,芯片上部署的神经网络加速器中即便没有针对池化层设置专门的硬件,往往也会针对一些常见的网络层设置专门的硬件,例如,针对卷积层、修正线性型单元(Rectified Linear Unit,ReLU)层等分别设置专门的硬件,这种情况下,神经网络加速器支持卷积运算、ReLU运算等常见的运算类型。
有鉴于此,本公开的实施例中,如图3所示,神经网络模型涉及两个阶段,分别是编译阶段和执行阶段;其中,在编译阶段,可以将池化运算变换为神经网络加速器支持的运算;在执行阶段,可以通过神经网络加速器支持的运算的实际执行,间接实现池化运算。这样,即便神经网络加速器中没有针对池化层设置专门的硬件,也能够实现池化运算,从而有利于减小硬件开销,同时能够保证包括池化层的神经网络模型的正常使用。
示例性方法
图4是本公开一示例性实施例提供的神经网络模型的编译方法的流程示意图。图4所示的方法可以应用于编译器,图4所示的方法包括步骤410、步骤420和步骤430,下面分别对各步骤进行说明。
步骤410,获取待编译神经网络模型。
需要说明的是,待编译神经网络模型是指需要进行编译的神经网络模型,待编译神经网络模型可以包括多个网络层,多个网络层包括但不限于卷积层、池化层、ReLU层等。
步骤420,基于待编译神经网络模型中的第一池化层采用的池化方式信息,将第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,得到第二池化层,转置特征图通过对输入特征图进行维度转置运算获得,转置特征图的通道维度对应输入特征图的非通道维度,转置特征图的非通道维度对应输入特征图的通道维度,目标运算为神经网络加速器支持的运算。
需要说明的是,待编译神经网络模型包括的多个网络层中可以包括至少一个池化层,至少一个池化层中的每个池化层均可以作为第一池化层。
在步骤420中,可以先确定第一池化层采用的池化方式信息,池化方式信息是指第一池化层实现池化运算所需的信息,然后可以参考第一池化层采用的池化方式信息,将第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,以得到第二池化层。
需要说明的是,本公开的实施例中涉及的任一特征图均可以具有通道维度和非通道维度;其中,通道维度也可以称为C维度,特征图在C维度的尺寸为通道数;非通道维度可以包括高度维度和宽度维度,高度维度也可以称为H维度,宽度维度也可以称为W维度,非通道维度也可以称为HW维度,特征图在H维度的尺寸为高度,特征图在W维度的尺寸为宽度。另外,进行特征图处理时的Batch(批处理量)可以表示为N。
可选地,对输入特征图的维度转置运算本质上可以是对输入特征图中的元素进行重新排列,以改变数据布局,从而得到转置特征图,转置特征图与输入特征图之间的关系可以为:输入特征图中位于同一通道的所有元素经维度转置运算后位于转置特征图的不同通道,且输入特征图中位于同一通道的所有元素在转置特征图中的元素位置是对应的;输入特征图中元素位置对应且位于不同通道的各个元素经维度转置运算后位于转置特征图的同一通道。这样,转置特征图的C维度可以对应输入特征图的HW维度,转置特征图的HW维度可以对应输入特征图的C维度,输入特征图在H维度和W维度的尺寸可以共同决定转置特征图在C维度的尺寸,输入特征图在C维度的尺寸可以决定转置特征图在H维度和W维度的尺寸。如果将输入特征图的数据排布格式看作NHWC格式,转置特征图的数据排布格式可以看作NCHW格式。
可选地,目标运算包括但不限于卷积运算、ReLU运算、通道最大值运算、逐元素运算等常见的运算类型。
需要说明的是,步骤420中将池化运算变换为目标运算,其实质是将池化运算变换为与之等同的运算,也即,通过与之等同的运算的执行,得到的结果与执行池化运算得到的结果是相同或基本相同的。
步骤430,基于待编译神经网络模型中除第一池化层之外的网络层,以及第二池化层,通过编译处理生成目标神经网络模型。
在步骤430中,可以由编译器后端基于待编译神经网络模型中除第一池化层之外的网络层,以及经运算变换得到的第二池化层进行编译处理,从而生成二进制的目标神经网络模型,具体编译处理方式可以根据实际需求采用任意可实施的方式,本公开对此不做赘述。
基于本公开上述实施例提供的神经网络模型的编译方法,可以在对神经网络模型进行编译的过程中,将池化运算变换为神经网络加速器支持的运算,这样,即便神经网络加速器中没有针对池化层设置专门的硬件,也能够通过与池化运算等同的运算,间接实现池化运算,也即,本公开的实施例能够在神经网络加速器中未针对池化层设置专门的硬件的前提下,正常实现池化运算,这样有利于减小硬件开销,同时能够保证包括池化层的神经网络模型的正常使用。
在图4所示实施例的基础上,如图5所示,步骤420包括步骤4201和步骤4203。
步骤4201,基于待编译神经网络模型中的第一池化层采用的池化方式信息,获取池化处理类型。
可选地,第一池化层采用的池化方式信息可以包括池化处理类型;其中,池化处理类型包括但不限于局部平均池化(任意Average Pooling)类型、局部最大池化(任意MaxPooling)类型、全局平均池化(Global Average Pooling)类型、全局最大池化(Global MaxPooling)类型等。
可选地,在池化处理类型是局部平均池化类型或者局部最大池化类型的情况下,第一池化层采用的池化方式信息还可以包括池化参数,池化参数是指实现局部平均池化运算或者局部最大运算所需的参数,池化参数包括但不限于池化窗口尺寸、填充参数(padding)、步长参数(stride)等。
在步骤4201中,可以直接从第一池化层采用的池化方式信息中提取池化处理类型。
步骤4203,按照与池化处理类型对应的变换方式,将第一池化层的输入特征图的池化运算变换为转置特征图的目标运算。
需要说明的是,对于池化处理类型为局部平均池化类型、局部最大池化类型、全局平均池化类型、全局最大池化类型这四种情况,步骤4203存在不同的实施方式,步骤4203的这些实施方式均满足如下前提:输入特征图的高度、宽度、通道数依次为H1、W1、C1,转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2。
这样,如果输入特征图是如图6所示的形状为4×5×16的特征图,转置特征图可以是如图7所示的形状为4×4×20的特征图;如果输入特征图是形状为16×16×128的特征图,则转置特征图可以是形状为1×128×256的特征图,或者是形状为2×64×256的特征图,再或者是形状为4×32×256的特征图。
下面对步骤4203的这些实施方式进行介绍。
在一种可选的实施方式中,步骤4203,包括:
在池化处理类型为局部平均池化类型的情况下,基于池化方式信息,获取池化参数;
基于池化参数、H1、W1,确定第一池化层的输出特征图的宽度W3和高度H3;
基于池化参数、H3、W3、C2,输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系,构建第一卷积核集合;
将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图与第一卷积核集合进行卷积运算,得到第一特征图;对第一特征图进行维度转置运算,得到第二池化层的输出特征图。
对于池化处理类型为局部平均池化类型的情况,可以直接从池化方式信息中获取池化参数,然后参考池化参数、H1、W1,确定第一池化层的输出特征图的宽度W3和高度H3。
假设池化参数表示为:Kernel=3×3,Padding=1×1,Stride=2×2,这里,Kernel=3×3中的“×”前方的3可以表示池化窗口高度pooling_kernel.h=3,Kernel=3×3中的“×”后方的3可以表示池化窗口宽度pooling_kernel.w=3,Padding=1×1中“×”前方的1可以表示左填充值padding.left=右填充值padding.right=1,Padding=1×1中“×”后方的1可以表示顶部填充值padding.top=底部填充值padding.down=1,Stride=2×2中的“×”前方的2可以表示高度方向步长Stride.h=2,Stride=2×2中的“×”后方的2可以表示宽度方向步长Stride.w=2。下文中出现的pooling_kernel.h、pooling_kernel.w、padding.left、padding.right、padding.top、padding.down、Stride.h、Stride.w的参数含义均参照本段中的相关介绍即可,后续不再赘述。
这样,可以采用如下公式计算W3和H3:
W3=(W1+padding.left+padding.right)/Stride.w+1
H3=(H1+padding.top+padding.down)/Stride.h+1
接下来,可以基于池化参数、H3、W3、C2,输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系,进行第一卷积核集合的构建。
可选地,输出特征图中的点与输入特征图中的点之间的对应关系可以基于池化运算的运算规则确定。假设输入特征图如图6所示,池化参数表示为:Kernel=3×3,Padding=1×1,Stride=2×2,则输出特征图(宽度为2,高度为3)中位于第一个通道中第一行第一列的点可以与输入特征图中000、001、004、005所在的4个点对应,输出特征图中位于第一个通道中第一行第二列的点可以与输入特征图中001、002、003、005、006、007所在的6个点对应,输出特征图中位于第一个通道中第二行第一列的点可以与输入特征图中004、005、008、009、012、013所在的6个点对应,输出特征图中位于第一个通道中第二行第二列的点可以与输入特征图中005、006、007、009、010、011、013、014、015所在的9个点对应,输出特征图中位于第一个通道中第三行第一列的点可以与输入特征图中012、013、016、017所在的4个点对应,输出特征图中位于第一个通道中第三行第二列的点可以与输入特征图中013、014、015、017、018、019所在的6个点对应。
对于输出特征图中的任意一个点P,假设点P的坐标为(pooling_output.w,pooling_output.h),可以采用如下公式确定输入特征图中与点P对应的点:
point.x=pooling_output.h*Stride.h–padding.top
point.y=pooling_output.w*Stride.w–padding.left
x.size=pooling_kernel.h
y.size=pooling_kernel.w
其中,(point.x,point.y)表示与点P对应的点中位于左上角的点的坐标,x.size和y.size分别表示与点P对应的点所占据的图像区域的宽度和高度。
假设点P为输出特征图中位于第一个通道中第一行第一列的点,点P的坐标可以为(0,0),即pooling_output.w=pooling_output.h=0,延续上文中的例子,则有:
Stride.h=Stride.w=2
padding.left=padding.top=1
pooling_kernel.h=pooling_kernel.w=3
通过将pooling_kernel.h、pooling_kernel.w、Stride.h、Stride.w、padding.left、padding.top带入上述公式进行计算,可以确定point.x=-1,point.y=-1,x.size=3,y.size=3。这样,可以将坐标为(-1,-1)的点作为位于左上角的点,在输入特征图中寻找高度为3,宽度为3的区域,很明显,该区域中包括4个点,这4个点分别是输入特征图中000、001、004、005所在的4个点,输入特征图中000、001、004、005所在的4个点可以作为与输出特征图中位于第一个通道中第一行第一列的点对应的点;其中,000所在的点的坐标可以认为是(0,0),001所在的点的坐标可以认为是(0,1),004所在的点的坐标可以认为是(1,0),005所在的点的坐标可以认为是(1,1)。
可选地,输入特征图中的点与转置特征图中的点之间的对应关系可以基于维度转置运算的转置规则确定。假设输入特征图如图6所示,转置特征图如图7所示,则输入特征图中位于第一个通道中第一行第一列的点与转置特征图中位于第一个通道中第一行第一列的点对应,输入特征图中位于第一个通道中第一行第二列的点与转置特征图中位于第二个通道中第一行第一列的点对应,输入特征图中位于第一个通道中第一行第三列的点与转置特征图中位于第三个通道中第一行第一列的点对应,……,输入特征图中位于第一个通道中最后一行最后一列的点与转置特征图中位于最后一个通道中第一行第一列的点对应。
可选地,池化参数包括池化窗口宽度W4和池化窗口高度H4;
第一卷积核集合包括H3*W3个卷积核,每个卷积核的宽度为1,高度为1,通道数为C2;
在输出特征图中的H3*W3个点中的任一个点为第一目标点,第一卷积核集合中与第一目标点对应的卷积核为第一目标卷积核,输入特征图中的第一点集合与第一目标点对应,转置特征图中的第二点集合与输入特征图中的第一点集合对应的情况下,第一目标卷积核中满足预设条件的元素位置的元素为1/(H4*W4),第一目标卷积核中的其余元素位置的元素均为0,任一元素位置满足预设条件是指:该元素位置在第一目标卷积核中的相对位置,与第二点集合中的一个点在转置特征图的通道方向上的相对位置一致。
在一个例子中,池化参数表示为:Kernel=3×3,Padding=1×1,Stride=2×2,则W4=H4=3,H4*W4=9。
假设输入特征图如图6所示,转置特征图如图7所示,输出特征图中位于第一个通道中第一行第一列的点作为第一目标点,则输入特征图中与第一目标点对应的第一点集合包括输入特征图中000、001、004、005所在的4个点,转置特征图中与第一点集合对应的第二点集合包括:转置特征图中位于第一个通道中第一行第一列的点,转置特征图中位于第二个通道中第一行第一列的点,转置特征图中位于第五个通道中第一行第一列的点,转置特征图中位于第六个通道中第一行第一列的点。那么,与第一目标点对应的第一目标卷积核中,位于第一个通道、第二个通道、第五个通道、第六个通道处的元素均为1/9,而其余通道处的元素均为0,这样,第一目标卷积核集合可以参见图8中的K1。
假设输入特征图如图6所示,转置特征图如图7所示,输出特征图中位于第一个通道中第一行第二列的点作为第一目标点,则输入特征图中与第一目标点对应的第一点集合包括:输入特征图中001、002、003、005、006、007所在的6个点,转置特征图中与第一点集合对应的第二点集合包括:转置特征图中位于第二个通道中第一行第一列的点,转置特征图中位于第三个通道中第一行第一列的点,转置特征图中位于第四个通道中第一行第一列的点,转置特征图中位于第六个通道中第一行第一列的点,转置特征图中位于第七个通道中第一行第一列的点,转置特征图中位于第八个通道中第一行第一列的点。那么,与第一目标点对应的第一目标卷积核中,第二个通道、第三个通道、第四个通道、第六个通道、第七个通道、第八个通道处的元素均为1/9,而其余通道处的元素均为0,这样,第一目标卷积核集合可以参见图8中的K2。
按照与上面两段中类似的方式,总共可以得到图8中所示的K1至K6这6个卷积核,这6个卷积核可以组成第一卷积核集合。
这样,参考C2,能够高效可靠地确定卷积核形状,参考输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系,能够高效可靠地确定卷积核中满足预设条件的元素位置,参考H4和W4,能够给满足预设条件的元素位置填充相应元素,再通过给其余元素位置填充0,能够高效可靠地构建出形状为6×1×1×20的第一卷积核集合。
通过将转置特征图与第一卷积核集合进行卷积运算,可以得到第一特征图,这里的卷积运算可以采用如下卷积参数:Padding=0×0,Stride=1×1。结合图6、图7、图8可知,第一特征图中位于第一个通道中第一行第一列的元素与第一池化层的输出特征图中位于第一个通道中第一行第一列的元素是相同的,第一特征图中位于第二个通道中第一行第一列的元素与第一池化层的输出特征图中位于第一个通道第一行第二列的元素是相同,第一特征图中位于第三个通道中第一行第一列的元素与第一池化层的输出特征图中位于第一个通道中第二行第一列的元素是相同的,后续依此类推,因此,只需按照上文中对输入特征图进行维度转置运算的具体方式,对第一特征图进行维度转置运算,就可以得到第二池化层的输出特征图,第二池化层的输出特征图与第一池化层的输出特征图是相同的。
这种实施方式中,在池化处理类型为局部平均池化类型的情况下,通过第一卷积核集合的构建,能够将输入特征图的池化运算变换为包括卷积运算和维度转置运算的目标运算,由于神经网络加速器通常支持卷积运算和维度转置运算,这样能够保证目标运算的正常实现,从而有利于在神经网络加速器中未针对池化层设置专门的硬件的前提下,正常实现池化运算,同时保证包括池化层的神经网络模型的正常使用。
在另一种可选的实施方式中,步骤4203,包括:
在池化处理类型为局部最大池化类型的情况下,基于池化方式信息,获取池化参数;
基于池化参数、H1、W1,确定第一池化层的输出特征图的宽度W3和高度H3;
基于池化参数、H3、W3,输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系,构建第二卷积核集合;
将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图与第二卷积核集合进行卷积运算,得到第二特征图;对第二特征图沿通道方向分组并按组进行最大值运算,得到第三特征图;对第三特征图进行维度转置运算,得到第二池化层的输出特征图。
需要说明的是,W3和H3的具体确定方式、输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系均参照上一实施方式中的相关介绍即可,在此不再赘述。
可选地,池化参数包括池化窗口宽度W4和池化窗口高度H4;
第二卷积核集合包括H3*W3个卷积核组,每个卷积核组中包括H4*W4个卷积核,每个卷积核的宽度为1,高度为1,通道数为C2;
在输出特征图中的H3*W3个点中的任一个点为第一目标点,第二卷积核集合中与第一目标点对应的卷积核组为目标卷积核组,目标卷积核组中的任一个卷积核为第二目标卷积核,输入特征图中的第一点集合与第一目标点对应,转置特征图中的第二点集合与输入特征图中的第一点集合对应的情况下,第二目标卷积核中的一个元素位置的元素为1,第二目标卷积核中的其余元素位置的元素均为0,并且,元素为1的元素位置在第二目标卷积核中的相对位置与第二点集合中的一个点在转置特征图的通道方向上的相对位置一致。
在一个例子中,池化参数表示为:Kernel=3×3,Padding=0×0,Stride=1×1,则W4=H4=3,H4*W4=9。
假设输入特征图如图6所示,转置特征图如图7所示,输出特征图中位于第一个通道中第一行第一列的点作为第一目标点,则输入特征图中与第一目标点对应的第一点集合包括输入特征图中000、001、002、004、005、006、008、009、010所在的9个点,转置特征图中与第一点集合对应的第二点集合包括:转置特征图中位于第一个通道中第一行第一列的点,转置特征图中位于第二个通道中第一行第一列的点,转置特征图中位于第三个通道中第一行第一列的点,转置特征图中位于第五个通道中第一行第一列的点,转置特征图中位于第六个通道中第一行第一列的点,转置特征图中位于第七个通道中第一行第一列的点,转置特征图中位于第九个通道中第一行第一列的点,转置特征图中位于第十个通道中第一行第一列的点,转置特征图中位于第十一个通道中第一行第一列的点。那么,与第一目标点对应的目标卷积核组包括的9个卷积核中,第一个卷积核中位于第一个通道处的元素,第二个卷积核中位于第二个通道处的元素,第三个卷积核中位于第三个通道处的元素,第四个卷积核中位于第五个通道处的元素,第五个卷积核中位于第六个通道处的元素,第六个卷积核中位于第七个通道处的元素,第七个卷积核中位于第九个通道处的元素,第八个卷积核中位于第十个通道处的元素,第九个卷积核中位于第十一个通道处的元素均为1,这9个卷积核中的其余元素均为0,这样,目标卷积核组中的这9个卷积核可以参见图9中的K0至K8。
假设输入特征图如图6所示,转置特征图如图7所示,输出特征图中位于第一个通道中第一行第二列的点作为第一目标点,则输出特征图中与第一目标点对应的第一点集合包括:输入特征图中001、002、003、005、006、007、009、010、011所在的9个点,转置特征图中与第一点集合对应的第二点集合包括:转置特征图中位于第二个通道中第一行第一列的点,转置特征图中位于第三个通道中第一行第一列的点,转置特征图中位于第四个通道中第一行第一列的点,转置特征图中位于第六个通道中第一行第一列的点,转置特征图中位于第七个通道中第一行第一列的点,转置特征图中位于第八个通道中第一行第一列的点,转置特征图中位于第十个通道中第一行第一列的点,转置特征图中位于第十一个通道中第一行第一列的点,转置特征图中位于第十二个通道中第一行第一列的点。那么,与第一目标点对应的目标卷积核组包括的9个卷积核中,第一个卷积核中位于第二个通道处的元素,第二个卷积核中位于第三个通道处的元素、第三个卷积核中位于第四个通道处的元素,第四个卷积核中位于第六个通道处的元素,第五个卷积核中位于第七个通道处的元素,第六个卷积核中位于第八个通道处的元素,第七个卷积核中位于第十个通道处的元素,第八个卷积核中位于第十一个通道处的元素,第九个卷积核中位于第十二个通道处的元素均为1,这9个卷积核中的其余元素均为0。
上面两种假设方式中均详细介绍了针对输出特征图中的第一目标点,得到对应的9个卷积核的方式,这9个卷积核可以组成与第一目标点对应的卷积核组,针对输出特征图中的每个点均可以采用此种方式,得到对应的卷积核组,这些卷积核组的集合即可作为第二卷积核集合。
这样,参考C2,能够高效可靠地确定卷积核形状,参考输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系,能够高效可靠地确定卷积核中元素需要填充1的元素位置,再通过给卷积核中的其余元素位置填充0,能够高效可靠地构建出54×1×1×20的第二卷积核集合。
通过将转置特征图与第二卷积核集合进行卷积运算,可以得到第二特征图,这里的卷积运算可以采用如下卷积参数:Padding=0×0,Stride=1×1。结合图6、图7、图9可知,第二特征图中位于第一个通道中第一行第一列的元素为000,第二特征图中位于第二个通道中第一行第一列的元素为001,第二特征图中位于第三个通道中第一行第一列的元素为002,第二特征图中位于第四个通道中第一行第一列的元素为004,第二特征图中位于第五个通道中第一行第一列的元素为005,第二特征图中位于第六个通道中第一行第一列的元素为006,第二特征图中位于第七个通道中第一行第一列的元素为008,第二特征图中位于第八个通道中第一行第一列的元素为009,第二特征图中位于第九个通道中第一行第一列的元素为010,第二特征图中位于第十个通道中第一行第一列的元素为001,第二特征图中位于第十一个通道中第一行第一列的元素为002,第二特征图中位于第十二个通道中第一行第一列的元素为003,第二特征图中位于第十二个通道中第一行第一列的元素为005,后续以此类推,这样能够得到第一行第一列位置处的54个元素。
接下来可以对第一行第一列位置处的54个元素进行分组,具体地,如图10所示,可以将这54个元素分为6组,每组包括9个元素,针对每组中的9个元素,可以求最大值,由此可以得到6个最大值,这6个最大值可以在第一行第一列位置处,沿通道方向排列,从而得到通道数为6的第三特征图。之后,只需按照上文中对输入特征图进行维度转置运算的具体方式,对第三特征图进行维度转置运算,以使上述6个最大值均排列至第一个通道上,就可以得到第二池化层的输出特征图中位于第一个通道的所有元素,按照这种方式,可以得到完整的第二池化层的输出特征图,第二池化层的输出特征图与第一池化层的输出特征图可以是相同的。
这种实施方式中,在池化处理类型为局部最大池化类型的情况下,通过第二卷积核集合的构建,能够将输入特征图的池化运算变换为包括卷积运算、通道最大值运算和维度转置运算的目标运算,由于神经网络加速器通常支持卷积运算、通道最大值运算和维度转置运算,这样能够保证目标运算的正常实现,从而有利于在神经网络加速器中未针对池化层设置专门的硬件的前提下,正常实现池化运算,同时保证包括池化层的神经网络模型的正常使用。
在再一种可选的实施方式中,步骤4203,包括:
在池化处理类型为全局平均池化类型的情况下,构建第三卷积核集合,第三卷积核集合的高度、宽度、通道数依次为H2、W2、C2,且第三卷积核集合中所有元素位置的元素均为1/C2;
将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图与第三卷积核集合进行卷积运算,得到第四特征图;对第四特征图进行维度转置运算,得到第二池化层的输出特征图。
假设输入特征图如图6所示,转置特征图如图7所示,则H2=W2=4,C2=20,第三卷积核集合具体可以参见图11。通过将转置特征图与第三卷积核集合进行卷积深度卷积运算,可以得到第四特征图,第四特征图仅包括一个通道,第四特征图中位于第一行第一列的元素为输入特征图中位于第一个通道中的所有元素的平均值,第四特征图中位于第一行第二列的元素为输入特征图中位于第二个通道中的所有元素的平均值,第四特征图中位于第一行第三列的元素为输入特征图中位于第三个通道中的所有元素的平均值,后续依此类推,因此,只需按照上文中对输入特征图进行维度转置运算的具体方式,对第四特征图进行维度转置运算,以使第四特征图中的所有元素顺序排列至不同通道,即可得到第二池化层的输出特征图,第二池化层的输出特征图与第一池化层的输出特征图可以是相同的。
这种实施方式中,在池化处理类型为全局平均池化类型的情况下,通过第三卷积核集合的构建,能够将输入特征图的池化运算变换为包括卷积运算和维度转置运算的目标运算,由于神经网络加速器通常支持卷积运算和维度转置运算,这样能够保证目标运算的正常实现,从而有利于在神经网络加速器中未针对池化层设置专门的硬件的前提下,正常实现池化运算,同时保证包括池化层的神经网络模型的正常使用。
在又一种可选的实施方式中,步骤4203,包括:
在池化处理类型为全局最大池化类型的情况下,将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图进行通道最大值运算,得到第五特征图;对第五特征图进行维度转置运算,得到第二池化层的输出特征图。
假设输入特征图如图6所示,转置特征图如图7所示,可以对转置特征图进行通道最大值运算,以得到第五特征图,第五特征图具体可以参见图12,这样,只需按照上文中对输入特征图进行维度转置运算的具体方式,对第五特征图进行维度转置运算,以使第五特征图中的所有元素顺序排列至不同通道,即可得到第二池化层的输出特征图,第二池化层的输出特征图与第一池化层的输出特征图可以是相同的。
这种实施方式中,在池化处理类型为全局最大池化类型的情况下,可以将输入特征图的池化运算变换为包括通道最大值运算和维度转置运算的目标运算,由于神经网络加速器通常支持通道最大值运算和维度转置运算,这样能够保证目标运算的正常实现,从而有利于在神经网络加速器中未针对池化层设置专门的硬件的前提下,正常实现池化运算,同时保证包括池化层的神经网络模型的正常使用。
本公开的实施例中,参考第一池化层采用的池化处理类型,可以采用与之相适配的变换方式,实现池化运算至目标运算的变换,从而保证目标运算与池化运算两者是等同的。
综上,本公开的实施例中,通过数据布局转换(通过维度转置运算实现),再通过对卷积运算、通道最大值运算等的利用,能够实现灵活的池化操作(例如任意大小的池化窗口,任意的Padding、Stride等),从而能够以较小的硬件开销,保证神经网络模型的正常使用。
本公开实施例提供的任一种神经网络模型的编译方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种神经网络模型的编译方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种神经网络模型的编译方法。下文不再赘述。
示例性装置
图13是本公开一示例性实施例提供的神经网络模型的编译装置的结构示意图。图13所示的装置包括获取模块1310、变换模块1320和生成模块1330。
获取模块1310,用于获取待编译神经网络模型;
变换模块1320,用于基于获取模块1310获取的待编译神经网络模型中的第一池化层采用的池化方式信息,将第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,得到第二池化层,转置特征图通过对输入特征图进行维度转置运算获得,转置特征图的通道维度对应输入特征图的非通道维度,转置特征图的非通道维度对应输入特征图的通道维度,目标运算为神经网络加速器支持的运算;
生成模块1330,用于基于获取模块1310获取的待编译神经网络模型中除第一池化层之外的网络层,以及变换模块1320得到的第二池化层,通过编译处理生成目标神经网络模型。
在一个可选示例中,如图14所示,变换模块1320,包括:
获取子模块13201,用于基于待编译神经网络模型中的第一池化层采用的池化方式信息,获取池化处理类型;
变换子模块13203,用于按照与获取子模块13201获取的池化处理类型对应的变换方式,将第一池化层的输入特征图的池化运算变换为转置特征图的目标运算。
在一个可选示例中,输入特征图的高度、宽度、通道数依次为H1、W1、C1,转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
变换子模块13203,包括:
第一获取单元,用于在池化处理类型为局部平均池化类型的情况下,基于池化方式信息,获取池化参数;
第一确定单元,用于基于池化参数、H1、W1,确定第一池化层的输出特征图的宽度W3和高度H3;
第一构建单元,用于基于池化参数、H3、W3、C2,输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系,构建第一卷积核集合;
第一变换单元,用于将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图与第一卷积核集合进行卷积运算,得到第一特征图;对第一特征图进行维度转置运算,得到第二池化层的输出特征图。
在一个可选示例中,
池化参数包括池化窗口宽度W4和池化窗口高度H4;
第一卷积核集合包括H3*W3个卷积核,每个卷积核的宽度为1,高度为1,通道数为C2;
在输出特征图中的任一个点为第一目标点,第一卷积核集合中与第一目标点对应的卷积核为第一目标卷积核,输入特征图中的第一点集合与第一目标点对应,转置特征图中的第二点集合与输入特征图中的第一点集合对应的情况下,第一目标卷积核中满足预设条件的元素位置的元素为1/(H4*W4),第一目标卷积核中的其余元素位置的元素均为0,任一元素位置满足预设条件是指:该元素位置在第一目标卷积核中的相对位置,与第二点集合中的一个点在转置特征图的通道方向上的相对位置一致。
在一个可选示例中,输入特征图的高度、宽度、通道数依次为H1、W1、C1,转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
变换子模块13203,包括:
第二获取单元,用于在池化处理类型为局部最大池化类型的情况下,基于池化方式信息,获取池化参数;
第二确定单元,用于基于池化参数、H1、W1,确定第一池化层的输出特征图的宽度W3和高度H3;
第二构建单元,用于基于池化参数、H3、W3,输出特征图中的点与输入特征图中的点之间的对应关系,以及输入特征图中的点与转置特征图中的点之间的对应关系,构建第二卷积核集合;
第二变换单元,用于将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图与第二卷积核集合进行卷积运算,得到第二特征图;对第二特征图沿通道方向分组并按组进行最大值运算,得到第三特征图;对第三特征图进行维度转置运算,得到第二池化层的输出特征图。
在一个可选示例中,
池化参数包括池化窗口宽度W4和池化窗口高度H4;
第二卷积核集合包括H3*W3个卷积核组,每个卷积核组中包括H4*W4个卷积核,每个卷积核的宽度为1,高度为1,通道数为C2;
在输出特征图中的H3*W3个点中的任一个点为第一目标点,第二卷积核集合中与第一目标点对应的卷积核组为目标卷积核组,目标卷积核组中的任一个卷积核为第二目标卷积核,输入特征图中的第一点集合与第一目标点对应,转置特征图中的第二点集合与输入特征图中的第一点集合对应的情况下,第二目标卷积核中的一个元素位置的元素为1,第二目标卷积核中的其余元素位置的元素均为0,并且,元素为1的元素位置在第二目标卷积核中的相对位置与第二点集合中的一个点在转置特征图的通道方向上的相对位置一致。
在一个可选示例中,输入特征图的高度、宽度、通道数依次为H1、W1、C1,转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
变换子模块13203,包括:
第三构建单元,用于在池化处理类型为全局平均池化类型的情况下,构建第三卷积核集合,第三卷积核集合的高度、宽度、通道数依次为H2、W2、C2,且第三卷积核集合中所有元素位置的元素均为1/C2;
第三变换单元,用于将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图与第三卷积核集合进行卷积运算,得到第四特征图;对第四特征图进行维度转置运算,得到第二池化层的输出特征图。
在一个可选示例中,输入特征图的高度、宽度、通道数依次为H1、W1、C1,转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
变换子模块13203,包括:
第四变换单元,用于在池化处理类型为全局最大池化类型的情况下,将输入特征图的池化运算变换为目标运算,目标运算包括:对转置特征图进行通道最大值运算,得到第五特征图;对第五特征图进行维度转置运算,得到第二池化层的输出特征图。
示例性电子设备
下面,参考图15来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
图15图示了根据本公开实施例的电子设备的框图。
如图15所示,电子设备1500包括一个或多个处理器1501和存储器1502。
处理器1501可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备1500中的其他组件以执行期望的功能。
存储器1502可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器1501可以运行所述程序指令,以实现上文所述的本公开的各个实施例的神经网络模型的编译方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备1500还可以包括:输入装置1503和输出装置1504,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,在该电子设备是第一设备或第二设备时,该输入装置1503可以是上述的麦克风或麦克风阵列,用于捕捉声源的输入信号。在该电子设备是单机设备时,该输入装置1503可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
此外,该输入装置1503还可以包括例如键盘、鼠标等等。
该输出装置1504可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置1504可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图15中仅示出了该电子设备1500中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备1500还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的神经网络模型的编译方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的神经网络模型的编译方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (11)
1.一种神经网络模型的编译方法,包括:
获取待编译神经网络模型;
基于所述待编译神经网络模型中的第一池化层采用的池化方式信息,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,得到第二池化层,所述转置特征图通过对所述输入特征图进行维度转置运算获得,所述转置特征图的通道维度对应所述输入特征图的非通道维度,所述转置特征图的非通道维度对应所述输入特征图的通道维度,所述目标运算为神经网络加速器支持的运算;
基于所述待编译神经网络模型中除所述第一池化层之外的网络层,以及所述第二池化层,通过编译处理生成目标神经网络模型。
2.根据权利要求1所述的方法,其中,所述基于所述待编译神经网络模型中的第一池化层采用的池化方式信息,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,包括:
基于所述待编译神经网络模型中的第一池化层采用的池化方式信息,获取池化处理类型;
按照与所述池化处理类型对应的变换方式,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算。
3.根据权利要求2所述的方法,其中,所述输入特征图的高度、宽度、通道数依次为H1、W1、C1,所述转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
所述按照与所述池化处理类型对应的变换方式,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,包括:
在所述池化处理类型为局部平均池化类型的情况下,基于所述池化方式信息,获取池化参数;
基于所述池化参数、H1、W1,确定所述第一池化层的输出特征图的宽度W3和高度H3;
基于所述池化参数、H3、W3、C2,所述输出特征图中的点与所述输入特征图中的点之间的对应关系,以及所述输入特征图中的点与所述转置特征图中的点之间的对应关系,构建第一卷积核集合;
将所述输入特征图的池化运算变换为所述目标运算,所述目标运算包括:对所述转置特征图与所述第一卷积核集合进行卷积运算,得到第一特征图;对所述第一特征图进行维度转置运算,得到所述第二池化层的输出特征图。
4.根据权利要求3所述的方法,其中,
所述池化参数包括池化窗口宽度W4和池化窗口高度H4;
所述第一卷积核集合包括H3*W3个卷积核,每个卷积核的宽度为1,高度为1,通道数为C2;
在所述输出特征图中的任一个点为第一目标点,所述第一卷积核集合中与所述第一目标点对应的卷积核为第一目标卷积核,所述输入特征图中的第一点集合与所述第一目标点对应,所述转置特征图中的第二点集合与所述输入特征图中的第一点集合对应的情况下,所述第一目标卷积核中满足预设条件的元素位置的元素为1/(H4*W4),所述第一目标卷积核中的其余元素位置的元素均为0,任一元素位置满足所述预设条件是指:该元素位置在所述第一目标卷积核中的相对位置,与所述第二点集合中的一个点在所述转置特征图的通道方向上的相对位置一致。
5.根据权利要求2所述的方法,其中,所述输入特征图的高度、宽度、通道数依次为H1、W1、C1,所述转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
所述按照与所述池化处理类型对应的变换方式,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,包括:
在所述池化处理类型为局部最大池化类型的情况下,基于所述池化方式信息,获取池化参数;
基于所述池化参数、H1、W1,确定所述第一池化层的输出特征图的宽度W3和高度H3;
基于所述池化参数、H3、W3,所述输出特征图中的点与所述输入特征图中的点之间的对应关系,以及所述输入特征图中的点与所述转置特征图中的点之间的对应关系,构建第二卷积核集合;
将所述输入特征图的池化运算变换为所述目标运算,所述目标运算包括:对所述转置特征图与所述第二卷积核集合进行卷积运算,得到第二特征图;对所述第二特征图沿通道方向分组并按组进行最大值运算,得到第三特征图;对所述第三特征图进行维度转置运算,得到所述第二池化层的输出特征图。
6.根据权利要求5所述的方法,其中,
所述池化参数包括池化窗口宽度W4和池化窗口高度H4;
所述第二卷积核集合包括H3*W3个卷积核组,每个卷积核组中包括H4*W4个卷积核,每个卷积核的宽度为1,高度为1,通道数为C2;
在所述输出特征图中的H3*W3个点中的任一个点为第一目标点,所述第二卷积核集合中与所述第一目标点对应的卷积核组为目标卷积核组,所述目标卷积核组中的任一个卷积核为第二目标卷积核,所述输入特征图中的第一点集合与所述第一目标点对应,所述转置特征图中的第二点集合与所述输入特征图中的第一点集合对应的情况下,所述第二目标卷积核中的一个元素位置的元素为1,所述第二目标卷积核中的其余元素位置的元素均为0,并且,元素为1的元素位置在所述第二目标卷积核中的相对位置与所述第二点集合中的一个点在所述转置特征图的通道方向上的相对位置一致。
7.根据权利要求2所述的方法,其中,所述输入特征图的高度、宽度、通道数依次为H1、W1、C1,所述转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
所述按照与所述池化处理类型对应的变换方式,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,包括:
在所述池化处理类型为全局平均池化类型的情况下,构建第三卷积核集合,所述第三卷积核集合的高度、宽度、通道数依次为H2、W2、C2,且所述第三卷积核集合中所有元素位置的元素均为1/C2;
将所述输入特征图的池化运算变换为所述目标运算,所述目标运算包括:对所述转置特征图与所述第三卷积核集合进行卷积运算,得到第四特征图;对所述第四特征图进行维度转置运算,得到所述第二池化层的输出特征图。
8.根据权利要求2所述的方法,其中,所述输入特征图的高度、宽度、通道数依次为H1、W1、C1,所述转置特征图的高度、宽度、通道数依次为H2、W2、C2,H2*W2=C1,H1*W1=C2;
所述按照与所述池化处理类型对应的变换方式,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,包括:
在所述池化处理类型为全局最大池化类型的情况下,将所述输入特征图的池化运算变换为所述目标运算,所述目标运算包括:对所述转置特征图进行通道最大值运算,得到第五特征图;对所述第五特征图进行维度转置运算,得到所述第二池化层的输出特征图。
9.一种神经网络模型的编译装置,包括:
获取模块,用于获取待编译神经网络模型;
变换模块,用于基于所述获取模块获取的所述待编译神经网络模型中的第一池化层采用的池化方式信息,将所述第一池化层的输入特征图的池化运算变换为转置特征图的目标运算,得到第二池化层,所述转置特征图通过对所述输入特征图进行维度转置运算获得,所述转置特征图的通道维度对应所述输入特征图的非通道维度,所述转置特征图的非通道维度对应所述输入特征图的通道维度,所述目标运算为神经网络加速器支持的运算;
生成模块,用于基于所述获取模块获取的所述待编译神经网络模型中除所述第一池化层之外的网络层,以及所述变换模块得到的所述第二池化层,通过编译处理生成目标神经网络模型。
10.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-8任一所述的神经网络模型的编译方法。
11.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-8任一所述的神经网络模型的编译方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211558282.8A CN115756493A (zh) | 2022-12-06 | 2022-12-06 | 神经网络模型的编译方法、装置、存储介质及电子设备 |
PCT/CN2023/119536 WO2024119952A1 (zh) | 2022-12-06 | 2023-09-18 | 神经网络模型的编译方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211558282.8A CN115756493A (zh) | 2022-12-06 | 2022-12-06 | 神经网络模型的编译方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756493A true CN115756493A (zh) | 2023-03-07 |
Family
ID=85343955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211558282.8A Pending CN115756493A (zh) | 2022-12-06 | 2022-12-06 | 神经网络模型的编译方法、装置、存储介质及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115756493A (zh) |
WO (1) | WO2024119952A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024119952A1 (zh) * | 2022-12-06 | 2024-06-13 | 北京地平线信息技术有限公司 | 神经网络模型的编译方法、装置、存储介质及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102415508B1 (ko) * | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
CN111931927B (zh) * | 2020-10-19 | 2021-02-19 | 翱捷智能科技(上海)有限公司 | 一种在npu中减少计算资源占用的方法及装置 |
CN113762472A (zh) * | 2021-08-24 | 2021-12-07 | 北京地平线机器人技术研发有限公司 | 一种神经网络的指令序列生成方法及装置 |
CN114625378A (zh) * | 2022-03-28 | 2022-06-14 | 北京地平线机器人技术研发有限公司 | 神经网络模型的编译方法、装置及计算机可读存储介质 |
CN115756493A (zh) * | 2022-12-06 | 2023-03-07 | 北京地平线信息技术有限公司 | 神经网络模型的编译方法、装置、存储介质及电子设备 |
-
2022
- 2022-12-06 CN CN202211558282.8A patent/CN115756493A/zh active Pending
-
2023
- 2023-09-18 WO PCT/CN2023/119536 patent/WO2024119952A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024119952A1 (zh) * | 2022-12-06 | 2024-06-13 | 北京地平线信息技术有限公司 | 神经网络模型的编译方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2024119952A1 (zh) | 2024-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021190127A1 (zh) | 一种数据处理方法和数据处理设备 | |
US20220415452A1 (en) | Method and apparatus for determining drug molecule property, and storage medium | |
JP7163504B2 (ja) | 画像処理方法並びにその、装置、コンピュータプログラム及び電子機器 | |
Lai et al. | A maximally split and relaxed ADMM for regularized extreme learning machines | |
US11630983B2 (en) | Graph conversion method | |
CN115756493A (zh) | 神经网络模型的编译方法、装置、存储介质及电子设备 | |
WO2020248365A1 (zh) | 智能分配模型训练内存方法、装置及计算机可读存储介质 | |
CN114491399A (zh) | 数据处理方法、装置、终端设备及计算机可读存储介质 | |
CN115373813A (zh) | 云计算环境中基于gpu虚拟化的调度方法、系统和电子设备 | |
CN114492730A (zh) | 神经网络模型的编译方法和装置、电子设备和存储介质 | |
WO2022174499A1 (zh) | 文本韵律边界预测的方法、装置、设备及存储介质 | |
JP7369288B2 (ja) | 画像処理方法、画像処理用コマンドの生成方法および装置 | |
CN113672232A (zh) | 程序编译方法和装置 | |
JP2019046196A (ja) | 行列単純化装置、プログラム、および行列単純化方法 | |
CN114239803B (zh) | 神经网络模型的编译方法和装置、电子设备和存储介质 | |
US20050278269A1 (en) | Reducing Number of Computations in a Neural Network Modeling Several Data Sets | |
CN115756794A (zh) | 任务调度执行方法、任务调度执行指令的生成方法及装置 | |
CN115035384A (zh) | 数据处理方法、装置和芯片 | |
CN113762472A (zh) | 一种神经网络的指令序列生成方法及装置 | |
CN114625378A (zh) | 神经网络模型的编译方法、装置及计算机可读存储介质 | |
CN115857940A (zh) | 神经网络模型的编译方法、装置、存储介质及电子设备 | |
CN113821471A (zh) | 神经网络的处理方法和电子装置 | |
Casale-Brunet et al. | High level synthesis of Smith-Waterman dataflow implementations | |
Singh et al. | VLSI floorplanning using entropy based intelligent genetic algorithm | |
Van Swaaij et al. | Deriving ASIC architectures for the Hough transform |
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 |