CN114912569A - 一种模型训练方法及装置 - Google Patents
一种模型训练方法及装置 Download PDFInfo
- Publication number
- CN114912569A CN114912569A CN202110183936.2A CN202110183936A CN114912569A CN 114912569 A CN114912569 A CN 114912569A CN 202110183936 A CN202110183936 A CN 202110183936A CN 114912569 A CN114912569 A CN 114912569A
- Authority
- CN
- China
- Prior art keywords
- sub
- linear operation
- linear
- neural network
- network model
- 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
- 238000012549 training Methods 0.000 title claims abstract description 176
- 238000000034 method Methods 0.000 title claims abstract description 157
- 238000003062 neural network model Methods 0.000 claims abstract description 468
- 230000004927 fusion Effects 0.000 claims description 260
- 238000012545 processing Methods 0.000 claims description 121
- 230000008569 process Effects 0.000 claims description 60
- 238000011176 pooling Methods 0.000 claims description 57
- 238000004364 calculation method Methods 0.000 claims description 46
- 230000015654 memory Effects 0.000 claims description 41
- 238000010606 normalization Methods 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 abstract description 48
- 238000013473 artificial intelligence Methods 0.000 abstract description 13
- 239000011159 matrix material Substances 0.000 description 37
- 230000006870 function Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 25
- 238000013527 convolutional neural network Methods 0.000 description 24
- 239000013598 vector Substances 0.000 description 22
- 230000001537 neural effect Effects 0.000 description 12
- 230000004913 activation Effects 0.000 description 9
- 210000002569 neuron Anatomy 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 239000002131 composite material Substances 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008447 perception Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000007499 fusion processing Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000011022 operating instruction Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000004804 winding Methods 0.000 description 1
Images
Classifications
-
- 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/08—Learning methods
-
- 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/045—Combinations of networks
-
- 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]
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
- Filters That Use Time-Delay Elements (AREA)
Abstract
本申请公开了一种模型训练方法,可以应用于人工智能领域,方法包括:获取第一神经网络模型,将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到多个第二神经网络模型,对训练后的所述多个第二神经网络模型进行模型训练,以获取多个第二神经网络模型中模型精度最高的神经网络模型。本申请将待训练的神经网络中的卷积层替换为可以等效为卷积层的线性操作,并从多个替换方式中选择精度最高的方式,以此提高了训练后模型的精度。
Description
技术领域
本申请涉及人工智能领域,尤其涉及一种模型训练方法及装置。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
为了在模型训练时提高模型的精度,可以采用过参数化的训练方法,具体可以在训练时会在原始模型的基础上引入额外的参数和计算,从而影响模型的训练过程,并达到提高模型精度的目的。ACNet(Asymmetric Convolutional Network)是一种过参数化训练方法,其中,在训练过程中,将原始的3x3卷积替换为3x3、1x3以及3x1三个卷积的和,然而ACNet只有一种固定的过参数化形式,对模型性能的提高很有限。
发明内容
第一方面,本申请提供了一种模型训练方法,所述方法包括:
获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;训练设备可以将第一神经网络模型中的部分或全部卷积层替换为线性操作。其中,替换的卷积层对象可以是第一神经网络模型中包括的第一卷积层,具体的,第一神经网络模型可以包括多个卷积层,第一卷积层为多个卷积层中的一个。其中,替换的卷积层对象可以是第一神经网络模型中包括的多个卷积层,第一卷积层为多个卷积层中的一个。
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层;
其中,本申请实施例中所谓的“等效”,是指两个运算单元之间的关系,具体的,是指两个形式上不同的运算单元,在处理任意相同的数据时,得到的处理结果是相同的,两个运算单元中的一个运算单元通过数学运算推导,可以变换为另一个运算单元的形式。针对于本申请实施例,线性操作中包括的子线性操作可以通过数学运算推导,变换为卷积层的形式,且变换得到的卷积层和所述线性操作在处理相同的数据时,得到的处理结果相同;
线性操作由多个子线性操作来组成,这里所谓的子线性操作可以指基础的线性操作,而不是多个基础线性操作复合而成的操作,这里所谓的线性操作,是指多个基础线性操作复合而成的操作。例如,子线性操作的操作类型可以但不限于为加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作,相应的,线性操作可以指加和操作、空操作、恒等操作、卷积操作、批归一化BN操作以及池化操作中的至少一种子线性操作的复合。应理解,这里的复合,是指子线性操作的数量大于或等于2,且子线性操作之间存在连接关系,不存在孤立的子线性操作,所谓存在连接关系,是指一个子线性操作的输出用于作为另一个子线性操作的输入(除了位于线性操作输出侧的子线性操作,该子线性操作的输出用于作为线性操作的输出);
应理解,每个第二神经网络模型中的所述线性操作与所述第一卷积层不同,且不同的第二神经网络模型包括的所述线性操作不同;
对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。
在进行第二神经网络模型的训练时,可以得到每个训练后的第二神经网络模型的模型精度(或者称之为验证精度),基于各个第二神经网络模型的模型精度,可以从多个第二神经网络模型中选择模型精度最高的第二神经网络模型;
通过上述方式,将待训练的神经网络中的卷积层替换为可以等效为卷积层的线性操作,并从多个替换方式中选择精度最高的方式,以此提高了训练后模型的精度。
在一种可能的实现中,所述线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
为了能够使线性操作能够等效为一个卷积层,线性操作中包括的多个子线性操作中,至少需要有一个卷积操作。在后续进行模型推理的过程中,为了使在后续进行模型推理的过程中,不降低推理阶段的速度或者增加推理阶段的资源消耗,并不将线性操组用于模型推理,而是采用线性操作等效的卷积层(后续实施例中可以称为第二卷积层)用于模型推理,且需要保证线性操作等效的卷积层的感受野小于或等于第一卷积层的感受野。
在一种可能的实现中,所述线性操作包括多个操作分支,每个操作分支的输入为所述线性操作的输入,也就是说每个操作分支用于对所述线性操作的输入数据进行处理,所述每个操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野;或,
所述线性操作包括一个操作分支,所述操作分支用于对所述线性操作的输入数据进行处理,所述操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野。
其中,以线性操作的输入和输出为两个端点,则两个端点之间的一条数据通路可以为一个操作分支,操作分支的起点为线性操作的输入,操作分支的终点为线性操作的输出,在一种实现中,所述线性操作可以包括多个操作分支,每个操作分支用于对所述线性操作的输入数据进行处理,也就相当于每个操作分支的起点为线性操作的输入,进而,每个操作分支中距离线性操作的输入最近的子线性操作的输入为所述线性操作的输入数据,相当于每个操作分支用于对所述线性操作的输入数据进行处理,所述每个操作分支包括串行的至少一个子线性操作。换一种表达方式,可以将线性操作表示成一张计算图,该计算图中定义了各个子线性操作的输入来源和输出数据的流向,对于该计算图的任意一条从输入到输出的路径,可以定义为线性操作的一条操作分支;
针对于单个子线性操作,例如k*k卷积或池化的感受野为k,加和操作以及BN操作的感受野为1,而操作分支的等效感受野为k的定义是:该操作分支的每个输出受kxk个输入的影响;
为了保证线性操作等效的感受野小于或等于第一卷积层的感受野,需要使得线性操作中各个操作分支的等效感受野小于或等于第一卷积层的感受野;在一种实现中,所述线性操作可以仅包括一个操作分支,所述一个操作分支用于对所述线性操作的输入数据进行处理,所述一个操作分支包括串行的至少一个子线性操作,则该线性操作中仅包括的操作分支的等效感受野小于或等于第一卷积层的感受野。
在一种可能的实现中,所述多个并行的操作分支中至少一个操作分支的等效感受野等于所述第一卷积层的感受野;或,
所述线性操作仅包括的一个操作分支的的等效感受野等于所述第一卷积层的感受野。
在一种实现中,所述多个并行的操作分支中至少一个操作分支的等效感受野等于所述第一卷积层的感受野,则线性操作的感受野等于第一卷积层的感受野,进而线性操作等效的卷积层(后续描述为第二卷积层)的感受野等于第一卷积层的感受野,第二卷积层可以用于后续的模型推理过程,且由于第二卷积层与第一卷积层的感受野一致,在保证和未进行替换的神经网络模型的尺寸规格一致的前提下,也就是在保证推理阶段的速度、资源消耗保持不变的前提下,相比第二卷积层的感受野小于第一卷积层的感受野,增加了训练参数量,提高了模型的精度。
在一种可能的实现中,每个第二神经网络模型中的所述线性操作与所述第一卷积层不同,且不同的第二神经网络模型包括的所述线性操作不同。
在一种可能的实现中,所述线性操作等效的卷积层和所述线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型包括训练后的目标线性操作,所述方法还包括:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
由于相比第一卷积层,目标线性操作中包括了多个子线性操作,若将该目标神经网络模型直接用于模型推理,则会降低模型推理速度,以及增加模型推理时所需的资源消耗。因此本实施例中,可以获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型,所述第三神经网络模型可以用于进行模型推理;
其中,所谓的模型推理,是指在模型的应用过程中,利用模型进行实际的数据处理过程。
应理解,本申请实施例中,获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型的步骤,可以由训练设备完成,在完成训练后,训练设备可以直接反馈第三神经网络模型,具体的训练设备可以将第三神经网络模型发送至终端设备或者服务器,以便端设备或者服务器基于第三神经网络模型进行模型推理。或者,由端设备或者服务器在进行模型推理之前进行获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型的动作执行;
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
为了能够使得进行推理时所采用的模型能够和训练前的第一神经网络模型具有相同的规格,则需要使得第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致;
在一种实现中,若目标线性操作的感受野等于第一卷积层的感受野,则第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种实现中,若目标线性操作的感受野小于第一卷积层的感受野,则计算出的等效卷积层的尺寸大小会小于第一卷积层的尺寸大小,此时可以对计算出的等效卷积层进行补0操作,以得到和所述第一卷积层的尺寸大小一致的第二卷积层。
在一种可能的实现中,所述方法还包括:
根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
若子线性操作不为与线性操作输入侧直接连接的操作,则其融合参数为自身的操作参数;
若子线性操作不为与线性操作输入侧直接连接的操作,其融合参数是基于相邻的前置子线性操作的融合参数得到的,或者是基于相邻的前置操作的融合参数以及自身的操作参数得到的;
针对于每个子线性操作,可以按照多个子线性操作在处理数据时的先后顺序将其融合至相邻且位于所述先后顺序中之后的子线性操作,直到完成到最后一个子线性操作(距离输出最近的子线性操作)的融合。
应理解,子线性操作的输入的确定需要依赖于其他子线性操作完成数据处理并得到相应的输出,例如,A操作的输出为B操作的输入,B操作的输出为C操作的输入,则C操作一定要在A操作和B操作完成数据处理并得到相应的输出后,才可以进行C操作的数据处理,因此,该子线性操作需要完成子线性操作的参数融合之后,才进行自身的参数融合。
应理解,一些子线性操作的输入的确定不需要依赖于某些子线性操作完成数据处理并得到相应的输出,例如,A1操作的输入为整体线性操作的输入,A1操作的输出为A2操作的输入,A2操作的输出为B操作的输入,C1操作的输入为整体线性操作的输入,C1操作的输出为C2操作的输入,C2操作的输出也为B操作的输入,则A1操作处理数据和C1处理数据之间没有严格的时间先后约束,则A1操作融合至A2的过程在C1操作融合至C2的过程可以同时、之前或者之后。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
本实施例中,第一子线性操作以及第二子线性操作可以为所述训练后的目标线性操作中任意相邻的子线性操作,且所述第二子线性操作位于所述先后顺序中所述第一子线性操作之后的子线性操作,所述第一子线性操作包括第一操作参数,所述第一子线性操作用于根据所述第一操作参数,对所述第一子线性操作的输入数据进行所述第一子线性操作的操作类型对应的处理,所述第二子线性操作包括第二操作参数,所述第二子线性操作用于根据所述第二操作参数,对所述第二子线性操作的输入数据进行所述第二子线性操作的操作类型对应的处理,所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
对于训练后的目标神经网络的线性操作,融合参数=融合(输出节点)。对模型中的每一个线性操作均执行融合过程,最终得到完全融合后的模型,该模型与原模型结构一致,因此推理阶段的速度、资源消耗保持不变。同时,融合前后的模型在数学上是等价的,因此融合后模型的精度和融合前保持一致。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
第二方面,本申请提供了一种模型训练方法,所述方法包括:
获取第一神经网络模型,所述第一神经网络模型包括第一卷积层,所述第一神经网络模型用于实现目标任务;
根据如下信息的至少一种,确定用于替换所述第一卷积层的目标线性操作,其中,所述信息包括所述第一神经网络模型的网络结构、所述目标任务以及所述第一卷积层在所述第一神经网络模型的位置,所述目标线性操作等效为一个卷积层;
其中,针对于不同网络结构的神经网络模型、实现不同目标任务的神经网络模型、以及在神经网络模型中不同位置的卷积层,可以选择不同的线性操作,以使得替换后的神经网模型经过训练后的模型精度较高;
其中,目标线性操作可以基于第一神经网络模型的网络结构和/或第一卷积层在所述第一神经网络模型的位置来确定,具体的,可以根据第一神经网络模型的网络结构来确定目标线性操作的结构;第一神经网络模型的网络结构可以是第一神经网络模型包括的子网络层的数量、子网络层的类型、以及子网络层之间连接关系、第一卷积层在第一神经网络模型中所在的位置;目标线性操作的结构可以是指目标线性操作包括的子线性操作的数量、子线性操作的类型以及子线性操作之间的连接关系,例如可以基于模型搜索的方式,针对于具有不同网络结构的神经网络模型的卷积层进行进行线性操作替换,并对替换后的神经网络模型进行训练,以确定出各个神经网络模型的网络结构中各个卷积层所对应的最优或者较优的线性操作,该最优或者较优的线性操作是指对替换后的神经网络模型进行训练得到的模型的精度较高;在获取第一神经网络模型之后,可以基于第一神经网络模型的网络结构,从之前预先搜索得到的神经网络模型的网络结构中选择结构一致或者相似的神经网络模,并确定该一致或者相似的神经网络模型中的一个卷积层所对应的线性操作作为目标线性操作,其中,上述“一个卷积层”在该一致或者相似的神经网络模型中的相对位置与第一卷积层在第一神经网络模型中的相对位置一致或者相似;
其中,目标线性操作可以基于第一神经网络模型的网络结构以及实现的目标任务来确定,和上述基于第一神经网络模型的网络结构来确定类似,可以通过模型搜索的方式,针对于具有不同网络结构以及实现不同目标任务的神经网络模型的卷积层进行进行线性操作替换,并对替换后的神经网络模型进行训练,以确定出各个神经网络模型的网络结构中各个卷积层所对应的最优或者较优的线性操作,该最优或者较优的线性操作是指对替换后的神经网络模型进行训练得到的模型的精度较高;
其中,目标线性操作可以基于第一神经网络模型实现的目标任务来确定,和上述基于第一神经网络模型的网络结构来确定类似,可以通过模型搜索的方式,针对于实现不同目标任务的神经网络模型的卷积层进行进行线性操作替换,并对替换后的神经网络模型进行训练,以确定出各个神经网络模型的网络结构中各个卷积层所对应的最优或者较优的线性操作,该最优或者较优的线性操作是指对替换后的神经网络模型进行训练得到的模型的精度较高;
应理解,上述基于第一神经网络模型的网络结构和/或所述目标任务确定目标线性操作的方式仅为一种示意,还可以通过其他方式来实现,只要使得替换后的第一神经网络模型(也就是第二神经网络模型)的模型精度较高,并不限定如何确定目标线性操作的具体结构以及确定方式。
根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为所述目标线性操作得到的;
对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
本实施例中,将待训练的神经网络中的卷积层替换为目标线性操作,目标线性操作的结构为根据第一神经网络模型的结构和/或目标任务确定的,相比现有技术中进行卷积层替换时所采用的线性操作,本实施例中线性操作的结构可以更适配于第一神经网络模型,更加的灵活,针对于不同的模型结构以及任务类型可以设计不同的线性操作,以此提高了训练后模型的精度。
在一种可能的实现中,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同。
相对于现有技术中,用于替换卷积层的线性操作的结构,本实施例中提供的目标线性操作的结构更为复杂,可以提高训练后模型的精度。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型包括训练后的目标线性操作,所述方法还包括:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述方法还包括:
根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
此外,本申请提供了一种模型训练方法,其特征在于,所述方法包括:
获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作等效为一个卷积层,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同;
对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型包括训练后的目标线性操作,所述方法还包括:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述方法还包括:
根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
本申请提供了一种模型训练方法,所述方法包括:获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作等效为一个卷积层,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同;对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。相对于现有技术中,用于替换卷积层的线性操作的结构,本实施例中提供的目标线性操作的结构更为复杂,可以提高训练后模型的精度。
第三方面,本申请提供了一种模型训练装置,所述装置包括:
获取模块,用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层;
模型训练模块,用于对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。
通过上述方式,将待训练的神经网络中的卷积层替换为可以等效为卷积层的线性操作,并从多个替换方式中选择精度最高的方式,以此提高了训练后模型的精度。
在一种可能的实现中,所述线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
为了能够使线性操作能够等效为一个卷积层,线性操作中包括的多个子线性操作中,至少需要有一个卷积操作。在后续进行模型推理的过程中,为了使在后续进行模型推理的过程中,不降低推理阶段的速度或者增加推理阶段的资源消耗,并不将线性操组用于模型推理,而是采用线性操作等效的卷积层(后续实施例中可以称为第二卷积层)用于模型推理,且需要保证线性操作等效的卷积层的感受野小于或等于第一卷积层的感受野。
在一种可能的实现中,所述线性操作包括多个操作分支,每个操作分支的输入为所述线性操作的输入,所述每个操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野;或,
所述线性操作包括一个操作分支,所述操作分支用于对所述线性操作的输入数据进行处理,所述操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野。
在一种实现中,所述多个并行的操作分支中至少一个操作分支的等效感受野等于所述第一卷积层的感受野,则线性操作的感受野等于第一卷积层的感受野,进而线性操作等效的卷积层(后续描述为第二卷积层)的感受野等于第一卷积层的感受野,第二卷积层可以用于后续的模型推理过程,且由于第二卷积层与第一卷积层的感受野一致,在保证和未进行替换的神经网络模型的尺寸规格一致的前提下,也就是在保证推理阶段的速度、资源消耗保持不变的前提下,相比第二卷积层的感受野小于第一卷积层的感受野,增加了训练参数量,提高了模型的精度。
在一种可能的实现中,每个第二神经网络模型中的所述线性操作与所述第一卷积层不同,且不同的第二神经网络模型包括的所述线性操作不同。
在一种可能的实现中,所述线性操作等效的卷积层和所述线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,述目标神经网络模型包括训练后的目标线性操作,所述获取模块,用于:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
由于相比第一卷积层,目标线性操作中包括了多个子线性操作,若将该目标神经网络模型直接用于模型推理,则会降低模型推理速度,以及增加模型推理时所需的资源消耗。因此本实施例中,可以获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型,所述第三神经网络模型可以用于进行模型推理;
其中,所谓的模型推理,是指在模型的应用过程中,利用模型进行实际的数据处理过程。
应理解,本申请实施例中,获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型的步骤,可以由训练设备完成,在完成训练后,训练设备可以直接反馈第三神经网络模型,具体的训练设备可以将第三神经网络模型发送至终端设备或者服务器,以便端设备或者服务器基于第三神经网络模型进行模型推理。或者,由端设备或者服务器在进行模型推理之前进行获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型的动作执行。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
为了能够使得进行推理时所采用的模型能够和训练前的第一神经网络模型具有相同的规格,则需要使得第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致;
在一种实现中,若目标线性操作的感受野等于第一卷积层的感受野,则第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种实现中,若目标线性操作的感受野小于第一卷积层的感受野,则计算出的等效卷积层的尺寸大小会小于第一卷积层的尺寸大小,此时可以对计算出的等效卷积层进行补0操作,以得到和所述第一卷积层的尺寸大小一致的第二卷积层。
在一种可能的实现中,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述融合模块,用于:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
第四方面,本申请提供了一种模型训练装置,所述装置包括:
获取模块,用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据如下信息的至少一种,确定用于替换所述第一卷积层的目标线性操作,其中,所述信息包括所述第一神经网络模型的网络结构、所述目标任务以及所述第一卷积层在所述第一神经网络模型的位置,所述目标线性操作等效为一个卷积层;
根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为所述目标线性操作得到的;
模型训练模块,用于对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
本实施例中,将待训练的神经网络中的卷积层替换为目标线性操作,目标线性操作的结构为根据第一神经网络模型的结构和/或目标任务确定的,相比现有技术中进行卷积层替换时所采用的线性操作,本实施例中线性操作的结构可以更适配于第一神经网络模型,更加的灵活,针对于不同的模型结构以及任务类型可以设计不同的线性操作,以此提高了训练后模型的精度。
在一种可能的实现中,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同。
相对于现有技术中,用于替换卷积层的线性操作的结构,本实施例中提供的目标线性操作的结构更为复杂,可以提高训练后模型的精度。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述获取模块,用于将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述融合模块,用于获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
本申请实施例还提供了一种模型训练装置,所述装置包括:
获取模块,用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作等效为一个卷积层,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同;
模型训练模块,用于对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
相对于现有技术中,用于替换卷积层的线性操作的结构,本实施例中提供的目标线性操作的结构更为复杂,可以提高训练后模型的精度。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型包括训练后的目标线性操作,所述获取模块,用于:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
第五方面,本申请实施例提供了一种模型训练装置,可以包括存储器、处理器以及总线系统,其中,存储器用于存储程序,处理器用于执行存储器中的程序,以执行如上述第一方面、第三方面及其任一可选的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面、第三方面及其任一可选的方法。
第七方面,本申请实施例提供了一种计算机程序,包括代码,当代码被执行时,用于实现上述第一方面、第三方面及其任一可选的方法。
第八方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持执行设备或训练设备实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据;或,信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存执行设备或训练设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
本申请实施例提供了一种模型训练方法,所述方法包括:获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层,对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。通过上述方式,将待训练的神经网络中的卷积层替换为可以等效为卷积层的线性操作,并从多个替换方式中选择精度最高的方式,以此提高了训练后模型的精度。
附图说明
图1为人工智能主体框架的一种结构示意图;
图2为本申请实施例提供的卷积神经网络的示意图;
图3为本申请实施例提供的卷积神经网络的示意图;
图4为本申请实施例提供的一种系统架构的示意图;
图5为本申请实施例提供的一种模型训练方法的实施例示意;
图6a为本申请实施例提供的一种线性操作示意;
图6b为本申请实施例提供的一种线性操作示意;
图6c为本申请实施例提供的一种线性操作示意;
图7为本申请实施例提供的一种卷积层感受野示意;
图8为本申请实施例提供的一种卷积层感受野示意;
图9为本申请实施例提供的一种卷积层示意;
图10为本申请实施例提供的一种卷积核示意;
图11为本申请实施例提供的一种线性操作融合示意;
图12为本申请实施例提供的一种线性操作替换示意;
图13为本申请实施例提供的一种线性操作示意;
图14为本申请实施例提供的一种补0操作的示意;
图15a为本申请实施例提供的一种模型训练方法的应用场景示意;
图15b为本申请实施例提供的一种模型训练方法的应用场景示意;
图16a为本申请实施例提供的一种模型训练方法的应用场景示意;
图16b为本申请实施例提供的一种模型训练方法的实施例示意;
图17为本申请实施例提供的一种模型训练装置的示意;
图18为本申请实施例提供的执行设备的一种结构示意图;
图19是本申请实施例提供的训练设备一种结构示意图;
图20为本申请实施例提供的芯片的一种结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
首先对人工智能系统总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(CPU、NPU、GPU、ASIC、FPGA等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、平安城市等。
下面从模型训练侧和模型应用侧对本申请提供的方法进行描述:
本申请实施例提供的模型训练方法,具体可以应用于数据训练、机器学习、深度学习等数据处理方法,对训练数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等,最终得到训练好的神经网络模型(如本申请实施例中的目标神经网络模型);并且目标神经网络模型可以用于进行模型推理,具体可以将输入数据输入到目标神经网络模型中,得到输出数据。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络等相关概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs(即输入数据)和截距1为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)卷积神经网络(Convosutionas Neuras Network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层(例如本实施例中的第一卷积层、第二卷积层)。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。这其中隐含的原理是:图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,我们都能使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。
卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
具体的,如图2所示,卷积神经网络(CNN)100可以包括输入层110,卷积层/池化层120,其中池化层为可选的,以及神经网络层130。
其中,卷积层/池化层120以及神经网络层130组成的结构可以为本申请中所描述的第一卷积层以及第二卷积层,输入层110和卷积层/池化层120连接,卷积层/池化层120连接与神经网络层130连接,神经网络层130的输出可以输入至激活层,激活层可以对神经网络层130的输出进行非线性化处理。
卷积层/池化层120:
卷积层:
如图2所示卷积层/池化层120可以包括如示例121-126层,在一种实现中,121层为卷积层,122层为池化层,123层为卷积层,124层为池化层,125为卷积层,126为池化层;在另一种实现方式中,121、122为卷积层,123为池化层,124、125为卷积层,126为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
以卷积层121为例,卷积层121可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depthdimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用维度相同的多个权重矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化……该多个权重矩阵维度相同,经过该多个维度相同的权重矩阵提取后的特征图维度也相同,再将提取到的多个维度相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入图像中提取信息,从而帮助卷积神经网络100进行正确的预测。
当卷积神经网络100有多个卷积层的时候,初始的卷积层(例如121)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络100深度的加深,越往后的卷积层(例如126)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,即如图2中120所示例的121-126各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。
神经网络层130:
在经过卷积层/池化层120的处理后,卷积神经网络100还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层120只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或别的相关信息),卷积神经网络100需要利用神经网络层130来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层130中可以包括多层隐含层(如图2所示的131、132至13n)以及输出层140,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
在神经网络层130中的多层隐含层之后,也就是整个卷积神经网络100的最后层为输出层140,该输出层140具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络100的前向传播(如图2由110至140的传播为前向传播)完成,反向传播(如图2由140至110的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络100的损失及卷积神经网络100通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图2所示的卷积神经网络100仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在,例如,如图3所示的多个卷积层/池化层并行,将分别提取的特征均输入给全神经网络层130进行处理。
(3)深度神经网络
深度神经网络(Deep Neural Network,DNN),也称多层神经网络,可以理解为具有很多层隐含层的神经网络,这里的“很多”并没有特别的度量标准。从DNN按不同层的位置划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于DNN层数多,则系数W和偏移向量的数量也就很多了。这些参数在DNN中的定义如下所述:以系数W为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。总结就是:第L-1层的第k个神经元到第L层的第j个神经元的系数定义为需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(4)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(5)反向传播算法
卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。
(6)线性操作
线性是指量与量之间按比例、成直线的关系,在数学上可以理解为一阶导数为常数的函数,线性操作可以但不限于为加和操作、空操作、恒等操作、卷积操作、批归一化BN操作以及池化操作。线性操作也可以称之为线性映射,线性映射需要满足两个条件:齐次性和可加性,任一个条件不满足则为非线性。
其中,齐次性是指f(ax)=af(x);可加性是指f(x+y)=f(x)+f(y);例如,f(x)=ax就是线性的。需要注意的是,这里的x、a、f(x)并不一定是标量,可以是向量或者矩阵,形成任意维度的线性空间。如果x、f(x)为n维向量,当a为常数时,就是等价满足齐次性,当a为矩阵时,则等价满足可加性。相对而言,函数图形为直线的不一定符合线性映射,比如f(x)=ax+b,既不满足齐次性也不满足可加性,因此属于非线性映射。
本申请实施例中,多个线性操作的复合可以称之为线性操作,线性操作中包括的各个线性操作也可以称之为子线性操作。
(7)BN:通过小批量的归一化,消除了不同层级输入对参数优化的差异性,减少了模型某一层过拟合的可能性,使得训练更能平稳的进行。
图4是本申请实施例提供的一种系统架构的示意图,在图4中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据。
在执行设备120对输入数据进行预处理,或者在执行设备120的计算模块111执行计算等相关的处理(比如进行本申请中神经网络的功能实现)过程中,执行设备120可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。
最后,I/O接口112将处理结果返回给客户设备140,从而提供给用户。
可选地,客户设备140,例如可以是自动驾驶系统中的控制单元、手机终端中的功能算法模块,例如该功能算法模块可以用于实现相关的任务。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则(例如本实施例中的目标神经网络模型),该相应的目标模型/规则即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图4中所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向I/O接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由I/O接口112直接将如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果,作为新的样本数据存入数据库130。
值得注意的是,图4仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图4中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。
首先以模型训练阶段为例对本申请实施例提供的模型训练方法进行说明。
参照图5,图5为本申请实施例提供的一种模型训练方法的实施例示意,如图5示出的那样,本申请实施例提供的一种模型训练方法包括:
501、获取第一神经网络模型,所述第一神经网络模型包括第一卷积层。
本申请实施例中,训练设备可以获取待训练的第一神经网络模型,第一神经网络模型可以是用户给定的待训练的模型。
本申请实施例中,训练设备可以将第一神经网络模型中的部分或全部卷积层替换为线性操作。其中,替换的卷积层对象可以是第一神经网络模型中包括的第一卷积层,具体的,第一神经网络模型可以包括多个卷积层,第一卷积层为多个卷积层中的一个。其中,替换的卷积层对象可以是第一神经网络模型中包括的多个卷积层,第一卷积层为多个卷积层中的一个。
本申请实施例中,训练设备可以从第一神经网络模型中选择需要进行替换的卷积层(包括第一卷积层)。
在一种实现中,可以由管理人员来指定第一神经网络模型中需要进行替换的卷积层,或者由训练设备通过模型结构搜索来确定第一神经网络模型中需要进行替换的卷积层,关于训练设备如何通过模型结构搜索来确定需要进行替换的卷积层将在后续的实施例中描述,这里不再赘述。
502、根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层。
本申请实施例中,训练设备可以将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作,以得到一个第二神经网络模型,进而,获取到多个第二神经网络模型,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的。
本申请实施例中,所述线性操作等效为一个卷积层。
其中,本申请实施例中所谓的“等效”,是指两个运算单元之间的关系,具体的,是指两个形式上不同的运算单元,在处理任意相同的数据时,得到的处理结果是相同的,两个运算单元中的一个运算单元通过数学运算推导,可以变换为另一个运算单元的形式。针对于本申请实施例,线性操作中包括的子线性操作可以通过数学运算推导,变换为卷积层的形式,且变换得到的卷积层和所述线性操作在处理相同的数据时,得到的处理结果相同。
本申请实施例中,为了能够使线性操作能够等效为一个卷积层,线性操作中包括的多个子线性操作中,至少需要有一个卷积操作。具体的,线性操作由多个子线性操作来组成,这里所谓的子线性操作可以指基础的线性操作,而不是多个基础线性操作复合而成的操作,这里所谓的线性操作,是指多个基础线性操作复合而成的操作。例如,子线性操作的操作类型可以但不限于为加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作,相应的,线性操作可以指加和操作、空操作、恒等操作、卷积操作、批归一化BN操作以及池化操作中的至少一种子线性操作的复合。应理解,这里的复合,是指子线性操作的数量大于或等于2,且子线性操作之间存在连接关系,不存在孤立的子线性操作,所谓存在连接关系,是指一个子线性操作的输出用于作为另一个子线性操作的输入(除了位于线性操作输出侧的子线性操作,该子线性操作的输出用于作为线性操作的输出)。
示例性的,可以参照图6a、图6b以及图6c,图6a、图6b以及图6c为本申请实施例中线性操作的几种结构示意,其中,图6a示出的线性操作包括4个子线性操作,4个子线性操作包括卷积操作1(卷积尺寸大小为k*k)、卷积操作2(卷积尺寸大小为1*1)、卷积操作3(卷积尺寸大小为k*k)以及加和操作,卷积操作1处理线性操作的输入数据,得到输出1,卷积操作2处理线性操作的输入数据,得到输出2,卷积操作3处理输出2,得到输出3,加和操作对输出1以及输出3进行加和,得到线性操作的输出。
其中,图6b示出的线性操作包括7个子线性操作,7个子线性操作包括卷积操作1(卷积尺寸大小为k*k)、卷积操作2(卷积尺寸大小为1*1)、卷积操作3(卷积尺寸大小为k*k)、卷积操作4(卷积尺寸大小为1*1)、卷积操作5(卷积尺寸大小为k*k)、卷积操作6(卷积尺寸大小为1*1)以及加和操作,卷积操作1处理线性操作的输入数据,得到输出1,卷积操作2处理线性操作的输入数据,得到输出2,卷积操作3处理输出2,得到输出3,卷积操作4处理线性操作的输入数据,得到输出4,卷积操作5处理输出4,得到输出5,卷积操作6处理输出5,得到输出6,加和操作对输出1、输出3以及输出6进行加和,得到线性操作的输出。
其中,图6c示出的线性操作包括8个子线性操作,8个子线性操作包括卷积操作1(卷积尺寸大小为k*k)、卷积操作2(卷积尺寸大小为1*1)、卷积操作3(卷积尺寸大小为k*k)、卷积操作4(卷积尺寸大小为1*1)、卷积操作5(卷积尺寸大小为1*1)、卷积操作6(卷积尺寸大小为k*k)、加和操作1以及加和操作2,卷积操作1处理线性操作的输入数据,得到输出1,卷积操作2处理线性操作的输入数据,得到输出2,卷积操作3处理输出2,得到输出3,卷积操作4处理输出2,得到输出4,卷积操作5处理线性操作的输入数据,得到输出5,加和操作1对输出4和输出5进行加和,得到输出6,卷积操作6处理输出6,得到输出7,加和操作2对输出1、输出3以及输出7进行加和,得到线性操作的输出。
接下来描述用于替换第一卷积层的线性操作:
本申请实施例中,为了能够使线性操作能够等效为一个卷积层,线性操作中包括的多个子线性操作中,至少需要有一个卷积操作。在后续进行模型推理的过程中,为了使在后续进行模型推理的过程中,不降低推理阶段的速度或者增加推理阶段的资源消耗,并不将线性操组用于模型推理,而是采用线性操作等效的卷积层(后续实施例中可以称为第二卷积层)用于模型推理,且需要保证线性操作等效的卷积层的感受野小于或等于第一卷积层的感受野。
接下来描述,如何保证线性操作等效的感受野小于或等于第一卷积层的感受野:
本申请实施例中,为了保证线性操作等效的感受野小于或等于第一卷积层的感受野,需要使得线性操作中各个操作分支的等效感受野小于或等于第一卷积层的感受野。接下来将针对于线性操作中各个操作分支的感受野进行详细描述。
首先描述操作分支的概念:
以线性操作的输入和输出为两个端点,则两个端点之间的一条数据通路可以为一个操作分支,操作分支的起点为线性操作的输入,操作分支的终点为线性操作的输出,在一种实现中,所述线性操作可以包括多个并行的操作分支,每个操作分支用于对所述线性操作的输入数据进行处理,也就相当于每个操作分支的起点为线性操作的输入,进而,每个操作分支中距离线性操作的输入最近的子线性操作的输入为所述线性操作的输入数据,相当于每个操作分支用于对所述线性操作的输入数据进行处理,所述每个操作分支包括串行的至少一个子线性操作。换一种表达方式,可以将线性操作表示成一张计算图,该计算图中定义了各个子线性操作的输入来源和输出数据的流向,对于该计算图的任意一条从输入到输出的路径,可以定义为线性操作的一条操作分支。
示例性的,可以参照图6a,图6a示出的线性操作可以包括两条操作分支(本实施例中表示为操作分支1和操作分支2),其中,操作分支1包括卷积操作1以及加法操作,操作分支2包括卷积操作2、卷积操作3以及加和操作,操作分支1和操作分支2都用于处理线性操作的输入数据,操作分支1的数据流向为从卷积操作1至加法操作,也就是线性操作的输入数据用于依次通过卷积操作1以及加法操作的处理,操作分支2的数据流向为从卷积操作2、卷积操作3至加法操作,也就是线性操作的输入数据用于依次通过卷积操作2、卷积操作3以及加法操作的处理。
示例性的,可以参照图6b,图6b示出的线性操作可以包括三条操作分支(本实施例中表示为操作分支1、操作分支2以及操作分支3),其中,操作分支1包括卷积操作1以及加法操作,操作分支2包括卷积操作2、卷积操作3以及加和操作,操作分支3包括卷积操作4、卷积操作5、卷积操作6以及加和操作,操作分支1、操作分支2以及操作分支3都用于处理线性操作的输入数据,操作分支1的数据流向为从卷积操作1至加法操作,也就是线性操作的输入数据用于依次通过卷积操作1以及加法操作的处理,操作分支2的数据流向为从卷积操作2、卷积操作3至加法操作,也就是线性操作的输入数据用于依次通过卷积操作2、卷积操作3以及加法操作的处理,操作分支3的数据流向为从卷积操作4、卷积操作5、卷积操作6至加法操作,也就是线性操作的输入数据用于依次通过卷积操作4、卷积操作5、卷积操作6以及加法操作的处理。
示例性的,可以参照图6c,图6c示出的线性操作可以包括四条操作分支(本实施例中表示为操作分支1、操作分支2、操作分支3以及操作分支4),其中,操作分支1包括卷积操作1以及加法操作2,操作分支2包括卷积操作2、卷积操作3以及加和操作2,操作分支3包括卷积操作2、卷积操作4、加和操作1、卷积操作6以及加和操作1,操作分支4包括卷积操作5、加和操作1、卷积操作6以及加和操作2,操作分支1、操作分支2、操作分支3以及操作分支4都用于处理线性操作的输入数据,操作分支1的数据流向为从卷积操作1至加法操作2,也就是线性操作的输入数据用于依次通过卷积操作1以及加法操作2的处理,操作分支2的数据流向为从卷积操作2、卷积操作3至加法操作2,也就是线性操作的输入数据用于依次通过卷积操作2、卷积操作3以及加法操作2的处理,操作分支3的数据流向为从卷积操作2、卷积操作4、加和操作1、卷积操作6至加和操作1,也就是线性操作的输入数据用于依次通过卷积操作2、卷积操作4、加和操作1、卷积操作6以及加和操作1的处理,操作分支4的数据流向为从卷积操作5、加和操作1、卷积操作6至加和操作2,也就是线性操作的输入数据用于依次通过卷积操作5、加和操作1、卷积操作6以及加和操作2的处理。
接下来针对于线性操作中各个操作分支的等效感受野进行描述。
针对于单个子线性操作,例如k*k卷积或池化的感受野为k,加和操作以及BN操作的感受野为1,而操作分支的等效感受野为k的定义是:该操作分支的每个输出受kxk个输入的影响。操作分支的感受野计算方法为:假设操作分支包括有N个子线性操作,N个子线性操作各自的感受野为ki(i为小于或等于N的正整数),那么N个子线性操作的等效感受野为k1+k2+…+kN-(N-1),例如两个3x3卷积操作的等效感受野为3+3-1=5。
例如,图6a中线性操作中的操作分支1的等效感受野为k(计算方法为k+1-1=k)。
例如,图6a中线性操作中的操作分支2的等效感受野为k(计算方法为1+k+1-2=k)。
例如,图6b中线性操作中的操作分支1的等效感受野为k(计算方法为k+1-1=k)。
例如,图6b中线性操作中的操作分支2的等效感受野为k(计算方法为1+k+1-2=k)。
例如,图6b中线性操作中的操作分支3的等效感受野为k(计算方法为1+k+1+1-3=k)。
例如,图6c中线性操作中的操作分支1的等效感受野为k(计算方法为k+1-1=k)。
例如,图6c中线性操作中的操作分支2的等效感受野为k(计算方法为1+k+1-2=k)。
例如,图6c中线性操作中的操作分支3的等效感受野为k(计算方法为1+1+1+k+1-4=k)。
例如,图6c中线性操作中的操作分支4的等效感受野为k(计算方法为1+1+k+1-2=k)。
本申请实施例中,线性操作等效的卷积层的感受野与线性操作的感受野一致,且线性操作的感受野等于各个操作分支中最大的感受野,例如,若线性操作包括的各个操作分支的感受野分别为3、5、5、5、7,则线性操作的感受野等于7。
为了能够使得线性操作等效的卷积层的感受野小于或等于第一卷积层的感受野,则需要保证线性操作的感受野小于或等于第一卷积核的感受野。也就是线性操作中各个操作分支的等效感受野小于或等于第一卷积层的感受野。
在一种实现中,所述线性操作可以仅包括一个操作分支,所述一个操作分支用于对所述线性操作的输入数据进行处理,所述一个操作分支包括串行的至少一个子线性操作,则该线性操作中仅包括的操作分支的等效感受野小于或等于第一卷积层的感受野。
接下来描述卷积层的感受野的概念。
以处理对象为图像为例,感受野是指即卷积层上一个特征在输入图像上的感知域(感知范围),在该感知范围内的像素如果发生变化,该特征的值将会随之发生变化。如图7所示,卷积核在输入图像上滑动,提取出的特征构成了卷积层101。类似的,卷积核在卷积层101上滑动,提取出的特征构成了卷积层102。那么,卷积层101中每一个特征,是由输入图像上滑动的卷积核的卷积片的尺寸内的输入图像的像素提取出来的,该尺寸也即卷积层101的感受野。因此,卷积层101的感受野如图7所示。
相应的,卷积层102中的每一个特征映射到输入图像上的范围(即采用输入图像上多大范围的像素)也即卷积层102的感受野。如图8所示,卷积层102中的每一个特征,是由卷积层101上滑动的卷积核的卷积片的尺寸内的输入图像的像素提取出来的。而卷积层101上的每一特征,由是由输入图像上滑动的卷积核的卷积片的范围内的输入图像的像素提取出来的。因此,卷积层102的感受野比卷积层101的感受野要大。
在一种实现中,所述多个并行的操作分支中至少一个操作分支的等效感受野等于所述第一卷积层的感受野,则线性操作的感受野等于第一卷积层的感受野,进而线性操作等效的卷积层(后续描述为第二卷积层)的感受野等于第一卷积层的感受野,第二卷积层可以用于后续的模型推理过程,且由于第二卷积层与第一卷积层的感受野一致,在保证和未进行替换的神经网络模型的尺寸规格一致的前提下,也就是在保证推理阶段的速度、资源消耗保持不变的前提下,相比第二卷积层的感受野小于第一卷积层的感受野,增加了训练参数量,提高了模型的精度。
以上描述了用于替换卷积层的线性操作。本申请实施例中,训练设备可以获取到多个线性操作,并将第一神经网络模型中的第一卷积层替换为多个线性操作中的一个线性操作(或者将第一神经网络模型中的多个卷积层(包括第一卷积层)替换为多个线性操作中的一个线性操作),以此类推,以获取多个第二神经网络模型,其中,每个第二神经网络模型是对第一神经网络模型中的第一卷积层替换为一个线性操作得到的。
接下来描述,如何获取到多个线性操作:
本申请实施例中,可以选择某种基于采样的搜索算法,例如强化学习、遗传算法等,并对包括线性操作的搜索空间进行编码。示例性的,一种可行的编码方式是先对可选的子线性操作进行顺序编码,例如将空操作、恒等操作、1x1卷积、3x3卷积、BN、3x3池化、分别编码为0,1,2,3,4,5,然后利用邻接矩阵M表示一组线性操作的计算图。对于N个节点(除输入节点外)的计算图来说邻接矩阵M是一个N*(N+1)的矩阵,该矩阵的行号为1-N,列号为0-N。矩阵第i行第j列的数值M[i,j]表示从第j个节点的输出经过M[i,j]对应的操作,结果加到第i个节点上。M[i,j]=0则表示从第j个节点到第i个节点之间没有直接操作相连。基于该编码方案,图11中示出的线性操作所对应的编码可以表1所示:(假设k=3):
表1
3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 3 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
之后,可以根据搜索算法采样线性操作的编码,对每个采样出的线性操作编码,将第一神经网络模型中的第一卷积替换为线性操作编码对应的线性操作。
在一种实现中,可以仅获取一种第二神经网络模型,也就是确定一种目标线性操作并将第一神经网络模型中的第一卷积层替换为该确定出的目标线性操作,以得到第二神经网络模型,具体的,训练设备可以根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作包括多个子线性操作,所述目标线性操作用于等效为一个卷积层,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述多个子线性操作满足如下条件的至少一个:
所述多个子线性操作包括至少三种操作类型;所述M不为3;所述M个操作分支中至少一个操作分支包括的子线性操作的数量不等于2,所述M为正整数;或,所述M个操作分支中至少一个操作分支中操作类型为卷积操作的子线性操作的数量不为1。
503、对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。
本申请实施例中,训练设备可以对获取到的所述多个第二神经网络模型进行模型训练,以获取到多个训练后的第二神经网络模型,并从训练后多个的第二神经网络模型中确定目标神经网络模型,其中,所述目标神经网络模型为所述多个第二神经网络模型中模型精度最高的神经网络模型。
应理解,步骤502中获取多个第二神经网络的动作执行实现并不严格在步骤503中对所述多个第二神经网络模型进行模型训练的动作执行时间之后,例如,训练设备可以获取到一个第二神经网络模型之后,就进行该第二神经网络模型的训练,并在训练完成之后,获取下一个第二神经网络模型,以此类推,进而,训练设备可以获取到多个第二神经网络模型,并进行多个第二神经网络模型的训练。
而关于第二神经网络模型的数量,可以是管理人员预先指定的,或者是训练设备在进行第二神经网络模型的训练过程中,基于达到搜索资源的限制时,已经完成训练的第二神经网络模型的数量。
本申请实施例中,在进行第二神经网络模型的训练时,可以得到每个训练后的第二神经网络模型的模型精度(或者称之为验证精度),基于各个第二神经网络模型的模型精度,可以从多个第二神经网络模型中选择模型精度最高的第二神经网络模型。
以模型精度最高的第二神经网络模型为目标神经网络模型为例,所述目标神经网络模型对应的第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,而所述精度最高的神经网络模型包括训练后的目标线性操作。
由于相比第一卷积层,目标线性操作中包括了多个子线性操作,若将该目标神经网络模型直接用于模型推理,则会降低模型推理速度,以及增加模型推理时所需的资源消耗。因此本实施例中,可以获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型,所述第三神经网络模型可以用于进行模型推理。
应理解,本申请实施例中,获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型的步骤,可以由训练设备完成,在完成训练后,训练设备可以直接反馈第三神经网络模型,具体的训练设备可以将第三神经网络模型发送至终端设备或者服务器,以便端设备或者服务器基于第三神经网络模型进行模型推理。或者,由端设备或者服务器在进行模型推理之前进行获取所述训练后的目标线性操作等效的第二卷积层,并将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述第二卷积层,以获取第三神经网络模型的动作执行。
接下来描述如何获取训练后的目标线性操作等效的第二卷积层:
本申请实施例中,可以根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
针对于每个子线性操作,可以将其融合至相邻且位于所述先后顺序中之后的子线性操作,直到完成到最后一个子线性操作(距离输出最近的子线性操作)的融合。
本申请实施例中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
具体的,本申请实施例中,第一子线性操作以及第二子线性操作为所述训练后的目标线性操作中任意相邻的子线性操作,且所述第二子线性操作位于所述先后顺序中所述第一子线性操作之后的子线性操作,所述第一子线性操作包括第一操作参数,所述第一子线性操作用于根据所述第一操作参数,对所述第一子线性操作的输入数据进行所述第一子线性操作的操作类型对应的处理,所述第二子线性操作包括第二操作参数,所述第二子线性操作用于根据所述第二操作参数,对所述第二子线性操作的输入数据进行所述第二子线性操作的操作类型对应的处理,进而,可以获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,并根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作中子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作,卷积操作和BN操作都包括可训练的操作参数,针对邻接矩阵的表示方式,需要一种空操作(0),相当于节点i到节点j没有操作。
本申请实施例中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
具体的融合策略的示意可以参照图11,图11中以第二子线性操作的操作类型分别为加和操作(图11中描述为加法操作)、卷积操作、池化操作以及BN操作为例,进行了示例性的说明。
对于训练后的目标神经网络的线性操作,融合参数=融合(输出节点)。对模型中的每一个线性操作均执行融合过程,最终得到完全融合后的模型,该模型与原模型结构一致,因此推理阶段的速度、资源消耗保持不变。同时,融合前后的模型在数学上是等价的,因此融合后模型的精度和融合前保持一致。
接下来以第一神经网络模型为ResNet18为例,结合一个具体实例,描述本申请实施例中的模型训练方法:
如图12所示,将第一神经网络模型中的卷积层替换为线性操作。这里可以选择一部分卷积层进行替换,也可以全部替换,不同卷积层替换成的线性操作的形式可以不同,此处仅以线性操作为图12所示的过参数化形式C为例。替换完成后,对替换后得到的第二神经网络模型按原模型的训练过程进行训练,得到训练后的模型。
在得到训练后的第二神经网络模型后,需要对每个线性操作进行参数融合。如图13所示(图13中将各个子线性操作表示为节点1-8),以过参数化形式C为例,具体的融合过程可以如下:
针对于节点1、节点2以及节点4,由于节点1、节点2以及节点4都是用于处理线性操作的输入(也就是和输入0节点直连的节点),因此,节点1的融合参数为节点1的操作参数,节点2的融合参数为节点2的操作参数,节点4的融合参数为节点4的操作参数;
针对于节点5,节点5用于根据节点5的操作参数对节点2的输出进行节点5的操作类型对应的处理(卷积操作),因此,节点5的融合参数为节点2的融合参数与节点5的操作参数的内积;
针对于节点6,节点6用于对节点5的输出以及节点4的输出,进行节点6的操作类型对应的处理(加和操作),因此,节点6的融合参数为节点5的融合参数与节点4的操作参数的加和;
针对于节点3,节点3用于根据节点3的操作参数对节点2的输出进行节点3的操作类型对应的处理(卷积操作),因此,节点3的融合参数为节点2的融合参数与节点3的操作参数的内积;
针对于节点7,节点7用于根据节点7的操作参数对节点6的输出进行节点7的操作类型对应的处理(卷积操作),因此,节点7的融合参数为节点6的融合参数与节点7的操作参数的内积;
针对于节点8,节点8用于对节点1的输出、节点3的输出以及节点7的输出,进行节点8的操作类型对应的处理(加和操作),因此,节点8的融合参数为节点1的融合参数、节点3的融合参数与节点7的操作参数的加和;
进而可以将节点8的融合参数作为第二卷积层的操作参数,第二卷积层可以基于第二卷积层的操作参数对输入数据进行卷积操作。
以下为从伪代码的角度描述图13中线性操作的融合过程:
融合参数=融合(节点8):加法,前置节点为1,3,7
节点1融合参数=融合(节点1):卷积,与输入直接相连,返回参数
节点3融合参数=融合(节点3):卷积,前置节点2
节点2融合参数=融合(节点2):卷积,与输入直接相连,返回参数
返回节点3参数和节点2融合参数的内积
节点7融合参数=融合(节点7):卷积,前置节点6
节点6融合参数=融合(节点6):加法,前置节点为5,4
节点5融合参数=融合(节点5):卷积,前置节点2
节点2融合参数=融合(节点2):卷积,与输入直接相连,返回参数
返回节点5参数和节点2融合参数的内积
节点4融合参数=融合(节点4):卷积,与输入直接相连,返回参数
返回求和({节点5融合参数,节点4融合参数})
返回节点7参数和节点6融合参数的内积
返回求和({节点1融合参数,节点3融合参数,节点7融合参数})
对每一个线性操作,仿照上述过程进行子线性操作的融合,最终得到完全融合后的模型。该融合后的模型与原ResNet-18模型结构相同。
本申请实施例中,为了能够使得进行推理时所采用的模型能够和训练前的第一神经网络模型具有相同的规格,则需要使得第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
接下来首先描述卷积层的尺寸的概念。
卷积层的尺寸可以表示卷积层包括的特征数目,示例性的,接下来结合卷积层以及卷积核对卷积层的尺寸进行说明。如图9所示,卷积层101的尺寸为X*Y*N1,即卷积层101包括X*Y*N1个特征。其中,N1为通道数,一个通道即一个特征维度,X*Y为每一个通道包括的特征数目。X、Y、N1均为大于0的正整数。卷积核1011为作用于卷积层101使用的卷积核之一。由于卷积层102包括N2个通道,因此卷积层101共使用N2个卷积核,这N2个卷积核的尺寸和模型参数可以相同也可以不同。以卷积核1011为例,卷积核1011的尺寸为X1*X1*N1。即卷积核1011内包括X1*X1*N1个模型参数。卷积核1011在卷积层101内滑动,滑动到卷积层101的某一位置时,卷积核1011的模型参数和对应位置的卷积层101的特征相乘。将卷积核1011的各个模型参数和对应位置的卷积层101的特征的乘积结果合并后,获得卷积层102的一个通道上的一个特征。卷积层101的特征和卷积核1011的乘积结果可以直接作为卷积层102的特征。也可以在卷积层101的特征和卷积核1011在卷积层101上滑动完毕,输出全部乘积结果后,对全部乘积结果进行归一化,将归一化后的乘积结果作为卷积层102的特征。形象的表示,卷积核1011在卷积层101上滑动做卷积,卷积的结果形成了卷积层102的一个通道。卷积层101使用的每一个卷积核对应了卷积层102的一个通道。因此,卷积层102的通道数等于作用于卷积层101的卷积核的数目。每一个卷积核内的模型参数的设计体现了该卷积核希望从卷积层内提取的特征的特点。通过N2个卷积核,卷积层101被提取出N2个通道的特征。
如图10所示,将卷积核1011拆分开。卷积核1011包括N1个卷积片,每个卷积片包括X1*X1个模型参数(P11至Px1x1)。每个模型参数对应一个卷积点。一个卷积点对应的模型参数与该卷积点对应位置内的卷积层内的特征相乘获得该卷积点的卷积结果,一个卷积核的卷积点的卷积结果之和为该卷积核的卷积结果。
在一种实现中,若目标线性操作的感受野等于第一卷积层的感受野,则第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种实现中,若目标线性操作的感受野小于第一卷积层的感受野,则计算出的等效卷积层的尺寸大小会小于第一卷积层的尺寸大小,此时可以对计算出的等效卷积层进行补0操作,以得到和所述第一卷积层的尺寸大小一致的第二卷积层。具体可以参照图14,图14为本申请实施例中一种补0操作的示意。
本申请实施例中,通过将待训练的神经网络中的卷积层替换为可以等效为卷积层的线性操作,并从多个替换方式中选择精度最高的方式,以此提高了训练后模型的精度。参照表2,表2示出了通过不同替换方式(表2中表示为过参数化形式)的网络的精度。具体的,在该任务中,loss越低表明模型拟合能力越强,模型精度越高。如表2所示,对于两种模型结构,过参数化训练后的loss比原模型结构基线更低。同时,对于不同的模型结构,最优的过参数化形式也不同。
表2
loss | 基线 | 过参数化形式A | 过参数化形式B | 过参数化形式C |
模型结构1 | 1.625 | 1.581 | 1.582 | 1.598 |
模型结构2 | 1.589 | 1.574 | 1.564 | 1.563 |
本申请实施例提供了一种模型训练方法,所述方法包括:获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层,对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。通过上述方式,将待训练的神经网络中的卷积层替换为可以等效为卷积层的线性操作,并从多个替换方式中选择精度最高的方式,以此提高了训练后模型的精度。
接下来从产品应用的角度,介绍几种本申请实施例的应用场景。
本申请实施例典型的应用场景可以包含终端设备上的神经网络模型,具体的,可以将通过本申请实施例提供的训练方法训练后得到的模型部署在终端设备(例如智能手机)或者云服务器上,提供推理能力。具体可以如图15a所示,将第一神经网络模型(图15a中表述为DNN模型)进行本申请实施例提供的训练方法的模型训练,并将融合后的过参数化模型部署在终端设备或云服务器上,对用户的数据进行推理。
本申请实施例提供的训练方法也可以应用在云上的AutoML服务中,结合其他AutoML技术例如数据增强策略搜索、模型结构搜索、激活函数搜索、超参数搜索等,进一步提升模型效果。具体可以如图15b以及图16a所示:用户提供训练数据、模型结构,并指定目标任务,云上的AutoML服务自动进行过参数化形式的搜索,最终输出搜索得到的模型和对应参数;或者也可以将过参数化训练与其他AutoML技术结合,例如数据增强策略搜索、模型结构搜索、激活函数搜索、超参数搜索等,进一步提升模型效果。
参照图16b,图16b为本申请实施例提供的一种模型训练方法的流程示意,如图16b所示,本申请实施例提供的一种模型训练方法包括:
1601、获取第一神经网络模型,所述第一神经网络模型包括第一卷积层,所述第一神经网络模型用于实现目标任务;
步骤1601的具体描述可以参照步骤501的描述,这里不再赘述。
1602、根据如下信息的至少一种,确定用于替换所述第一卷积层的目标线性操作,其中,所述信息包括所述第一神经网络模型的网络结构、所述目标任务以及所述第一卷积层在所述第一神经网络模型的位置,所述目标线性操作等效为一个卷积层;
其中,针对于不同网络结构的神经网络模型、实现不同目标任务的神经网络模型、以及在神经网络模型中不同位置的卷积层,可以选择不同的线性操作,以使得替换后的神经网模型经过训练后的模型精度较高;
其中,目标线性操作可以基于第一神经网络模型的网络结构和/或第一卷积层在所述第一神经网络模型的位置来确定,具体的,可以根据第一神经网络模型的网络结构来确定目标线性操作的结构;第一神经网络模型的网络结构可以是第一神经网络模型包括的子网络层的数量、子网络层的类型、以及子网络层之间连接关系、第一卷积层在第一神经网络模型中所在的位置;目标线性操作的结构可以是指目标线性操作包括的子线性操作的数量、子线性操作的类型以及子线性操作之间的连接关系,例如可以基于模型搜索的方式,针对于具有不同网络结构的神经网络模型的卷积层进行进行线性操作替换,并对替换后的神经网络模型进行训练,以确定出各个神经网络模型的网络结构中各个卷积层所对应的最优或者较优的线性操作,该最优或者较优的线性操作是指对替换后的神经网络模型进行训练得到的模型的精度较高;在获取第一神经网络模型之后,可以基于第一神经网络模型的网络结构,从之前预先搜索得到的神经网络模型的网络结构中选择结构一致或者相似的神经网络模,并确定该一致或者相似的神经网络模型中的一个卷积层所对应的线性操作作为目标线性操作,其中,上述“一个卷积层”在该一致或者相似的神经网络模型中的相对位置与第一卷积层在第一神经网络模型中的相对位置一致或者相似;
其中,目标线性操作可以基于第一神经网络模型的网络结构以及实现的目标任务来确定,和上述基于第一神经网络模型的网络结构来确定类似,可以通过模型搜索的方式,针对于具有不同网络结构以及实现不同目标任务的神经网络模型的卷积层进行进行线性操作替换,并对替换后的神经网络模型进行训练,以确定出各个神经网络模型的网络结构中各个卷积层所对应的最优或者较优的线性操作,该最优或者较优的线性操作是指对替换后的神经网络模型进行训练得到的模型的精度较高;
其中,目标线性操作可以基于第一神经网络模型实现的目标任务来确定,和上述基于第一神经网络模型的网络结构来确定类似,可以通过模型搜索的方式,针对于实现不同目标任务的神经网络模型的卷积层进行进行线性操作替换,并对替换后的神经网络模型进行训练,以确定出各个神经网络模型的网络结构中各个卷积层所对应的最优或者较优的线性操作,该最优或者较优的线性操作是指对替换后的神经网络模型进行训练得到的模型的精度较高;
应理解,上述基于第一神经网络模型的网络结构和/或所述目标任务确定目标线性操作的方式仅为一种示意,还可以通过其他方式来实现,只要使得替换后的第一神经网络模型(也就是第二神经网络模型)的模型精度较高,并不限定如何确定目标线性操作的具体结构以及确定方式。
1603、根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为所述目标线性操作得到的。
步骤1603的具体描述可以参照步骤502的描述,这里不再赘述。
1604、对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
步骤1604的具体描述可以参照步骤503中关于对第二神经网络模型进行模型训练的过程的描述,这里不再赘述。
本实施例中,将待训练的神经网络中的卷积层替换为目标线性操作,目标线性操作的结构为根据第一神经网络模型的结构和/或目标任务确定的,相比现有技术中进行卷积层替换时所采用的线性操作,本实施例中线性操作的结构适配于,更加的灵活,针对于不同的模型结构以及任务类型可以设计不同的线性操作,以此提高了训练后模型的精度。
在一种可能的实现中,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同。
相对于现有技术中,用于替换卷积层的线性操作的结构,本实施例中提供的目标线性操作的结构更为复杂,可以提高训练后模型的精度。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型包括训练后的目标线性操作,所述方法还包括:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述方法还包括:
根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
本申请实施例提供了一种模型训练方法,包括:获取第一神经网络模型,所述第一神经网络模型包括第一卷积层,所述第一神经网络模型用于实现目标任务;根据如下信息的至少一种,确定用于替换所述第一卷积层的目标线性操作,其中,所述信息包括所述第一神经网络模型的网络结构、所述目标任务以及所述第一卷积层在所述第一神经网络模型的位置,所述目标线性操作等效为一个卷积层;根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为所述目标线性操作得到的;对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。通过上述方式,将待训练的神经网络中的卷积层替换为目标线性操作,目标线性操作的结构为根据第一神经网络模型的结构、目标任务和/或第一卷积层在第一神经网络模型中的位置来确定的,相比现有技术中进行卷积层替换时所采用的线性操作,本实施例中线性操作的结构可以更适配于第一神经网络模型,更加的灵活,针对于不同的模型结构以及任务类型可以设计不同的线性操作,以此提高了训练后模型的精度。
此外,本申请提供了一种模型训练方法,所述方法包括:
获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作等效为一个卷积层,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同;
对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型包括训练后的目标线性操作,所述方法还包括:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述方法还包括:
根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
本申请提供了一种模型训练方法,所述方法包括:获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作等效为一个卷积层,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同;对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。相对于现有技术中,用于替换卷积层的线性操作的结构,本实施例中提供的目标线性操作的结构更为复杂,可以提高训练后模型的精度。
参照图17,图17为本申请实施例提供的一种模型训练装置1700的示意,如图17中示出的那样,本申请提供的模型训练装置1700包括:
获取模块1701,用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层;
其中,获取模块1701的相关描述可以参照上述实施例中步骤501至步骤502的描述,这里不再赘述。
模型训练模块1702,用于对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。
其中,模型训练模块1702的相关描述可以参照上述实施例中步骤503的描述,这里不再赘述。
在一种可能的实现中,所述线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述线性操作包括多个操作分支,每个操作分支的输入为所述线性操作的输入,所述每个操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野;或,
所述线性操作包括一个操作分支,所述操作分支用于对所述线性操作的输入数据进行处理,所述操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,每个第二神经网络模型中的所述线性操作与所述第一卷积层不同,且不同的第二神经网络模型包括的所述线性操作不同。
在一种可能的实现中,所述线性操作等效的卷积层和所述线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型对应的第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标神经网络模型包括训练后的目标线性操作,所述获取模块,用于:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述融合模块,用于:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
在一种实现中,模型训练装置中获取模块1701,可以用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作包括多个子线性操作,所述目标线性操作用于等效为一个卷积层,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述多个子线性操作满足如下条件的至少一个:
所述多个子线性操作包括至少三种操作类型;
所述M不为3;
所述M个操作分支中至少一个操作分支包括的子线性操作的数量不等于2,所述M为正整数;或,
所述M个操作分支中至少一个操作分支中操作类型为卷积操作的子线性操作的数量不为1;
模型训练模块1702,可以用于对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述获取模块,用于将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述融合模块,用于获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
本申请实施例还提供了一种模型训练装置,所述装置包括:
获取模块,用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据如下信息的至少一种,确定用于替换所述第一卷积层的目标线性操作,其中,所述信息包括所述第一神经网络模型的网络结构、所述目标任务以及所述第一卷积层在所述第一神经网络模型的位置,所述目标线性操作等效为一个卷积层;
根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为所述目标线性操作得到的;
模型训练模块,用于对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
在一种可能的实现中,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述获取模块,用于将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
在一种可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述融合模块,用于获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
本申请实施例还提供了一种模型训练装置,所述装置包括:
获取模块,用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标线性操作等效为一个卷积层,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同;
模型训练模块,用于对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
在一种可能的实现中,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
在一种可能的实现中,所述目标线性操作与所述第一卷积层不同。
在一种可能的实现中,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
在一种可能的实现中,所述目标神经网络模型包括训练后的目标线性操作,所述获取模块,用于:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
在一种可能的实现中,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
在一种可能的实现中,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
可能的实现中,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
在一种可能的实现中,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
在一种可能的实现中,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
接下来介绍本申请实施例提供的一种执行设备,请参阅图18,图18为本申请实施例提供的执行设备的一种结构示意图,执行设备1800具体可以表现为手机、平板、笔记本电脑、智能穿戴设备、服务器等,此处不做限定。其中,执行设备1800上可以部署有图10对应实施例中所描述的数据处理装置,用于实现图10对应实施例中数据处理的功能。具体的,执行设备1800包括:接收器1801、发射器1802、处理器1803和存储器1804(其中执行设备1800中的处理器1803的数量可以一个或多个,图11中以一个处理器为例),其中,处理器1803可以包括应用处理器18031和通信处理器18032。在本申请的一些实施例中,接收器1801、发射器1802、处理器1803和存储器1804可通过总线或其它方式连接。
存储器1804可以包括只读存储器和随机存取存储器,并向处理器1803提供指令和数据。存储器1804的一部分还可以包括非易失性随机存取存储器(non-volatile randomaccess memory,NVRAM)。存储器1804存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
处理器1803控制执行设备的操作。具体的应用中,执行设备的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
上述本申请实施例揭示的方法可以应用于处理器1803中,或者由处理器1803实现。处理器1803可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1803中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1803可以是通用处理器、数字信号处理器(digital signal processing,DSP)、微处理器或微控制器、以及视觉处理器(vision processing unit,VPU)、张量处理器(tensorprocessing unit,TPU)等适用于AI运算的处理器,还可进一步包括专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器1803可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1804,处理器1803读取存储器1804中的信息,结合其硬件完成上述方法的步骤。
接收器1801可用于接收输入的数字或字符信息,以及产生与执行设备的相关设置以及功能控制有关的信号输入。发射器1802可用于通过第一接口输出数字或字符信息;发射器1802还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器1802还可以包括显示屏等显示设备。
执行设备可以获取到通过图5或图16b对应实施例中的模型训练方法训练得到的模型,并进行模型推理。
本申请实施例还提供了一种训练设备,请参阅图19,图19是本申请实施例提供的训练设备一种结构示意图,具体的,训练设备1900由一个或多个服务器实现,训练设备1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)1919(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对训练设备中的一系列指令操作。更进一步地,中央处理器1919可以设置为与存储介质1930通信,在训练设备1900上执行存储介质1930中的一系列指令操作。
训练设备1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958;或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
具体的,训练设备可以执行图5或图16b对应实施例中的模型训练方法。
图17中描述的模型训练装置1700可以为训练设备中的模块,训练设备中的处理器可以执行模型训练装置1700所执行的模型训练方法。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例提供的执行设备、训练设备或终端设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使执行设备内的芯片执行上述实施例描述的数据处理方法,或者,以使训练设备内的芯片执行上述实施例描述的数据处理方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体的,请参阅图20,图20为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 2000,NPU 2000作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路2003,通过控制器2004控制运算电路2003提取存储器中的矩阵数据并进行乘法运算。
NPU 2000可以通过内部的各个器件之间的相互配合,来实现图6所描述的实施例中提供的模型训练方法,或者对训练得到的模型进行推理。
其中,NPU 2000中的运算电路2003可以执行获取第一神经网络模型以及对所述第一神经网络模型进行模型训练的步骤。
更具体的,在一些实现中,NPU 2000中的运算电路2003内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路2003是二维脉动阵列。运算电路2003还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路2003是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器2002中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器2001中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)2008中。
统一存储器2006用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(Direct Memory Access Controller,DMAC)2005,DMAC被搬运到权重存储器2002中。输入数据也通过DMAC被搬运到统一存储器2006中。
BIU为Bus Interface Unit即,总线接口单元2010,用于AXI总线与DMAC和取指存储器(Instruction Fetch Buffer,IFB)2009的交互。
总线接口单元2010(Bus Interface Unit,简称BIU),用于取指存储器2009从外部存储器获取指令,还用于存储单元访问控制器2005从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器2006或将权重数据搬运到权重存储器2002中或将输入数据数据搬运到输入存储器2001中。
向量计算单元2007包括多个运算处理单元,在需要的情况下,对运算电路2003的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如Batch Normalization(批归一化),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元2007能将经处理的输出的向量存储到统一存储器2006。例如,向量计算单元2007可以将线性函数;或,非线性函数应用到运算电路2003的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元2007生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路2003的激活输入,例如用于在神经网络中的后续层中的使用。
控制器2004连接的取指存储器(instruction fetch buffer)2009,用于存储控制器2004使用的指令;
统一存储器2006,输入存储器2001,权重存储器2002以及取指存储器2009均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (31)
1.一种模型训练方法,其特征在于,所述方法包括:
获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层;
对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。
2.根据权利要求1所述的方法,其特征在于,所述线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
3.根据权利要求1或2所述的方法,其特征在于,所述线性操作包括多个操作分支,每个操作分支的输入为所述线性操作的输入,所述每个操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野;或,
所述线性操作包括一个操作分支,所述操作分支用于对所述线性操作的输入数据进行处理,所述操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野。
4.根据权利要求1至3任一所述的方法,其特征在于,每个第二神经网络模型中的所述线性操作与所述第一卷积层不同,且不同的第二神经网络模型包括的所述线性操作不同。
5.根据权利要求1至4任一所述的方法,其特征在于,所述线性操作等效的卷积层和所述线性操作在处理相同的数据时,得到的处理结果相同。
6.根据权利要求1至5任一所述的方法,其特征在于,所述目标神经网络模型对应的第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标神经网络模型包括训练后的目标线性操作,所述方法还包括:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
7.根据权利要求6所述的方法,其特征在于,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
9.根据权利要求8所述的方法,其特征在于,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,包括:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
10.根据权利要求1至9任一所述的方法,其特征在于,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
11.根据权利要求9或10所述的方法,其特征在于,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
12.一种模型训练方法,其特征在于,所述方法包括:
获取第一神经网络模型,所述第一神经网络模型包括第一卷积层,所述第一神经网络模型用于实现目标任务;
根据如下信息的至少一种,确定用于替换所述第一卷积层的目标线性操作,其中,所述信息包括所述第一神经网络模型的网络结构、所述目标任务以及所述第一卷积层在所述第一神经网络模型的位置,所述目标线性操作等效为一个卷积层;
根据所述第一神经网络模型,获取第二神经网络模型,其中,所述第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为所述目标线性操作得到的;
对所述第二神经网络模型进行模型训练,以获取目标神经网络模型。
13.根据权利要求12所述的方法,其特征在于,所述目标线性操作包括多个子线性操作,所述目标线性操作包括M个操作分支,每个操作分支的输入为所述目标线性操作的输入,所述M个操作分支满足如下条件的至少一个:
所述M个操作分支包括的多个子线性操作中至少一个子线性操作的输入为所述多个子线性操作中多个子线性操作的输出;
所述M个操作分支中至少两个操作分支之间包括的子线性操作的数量不同;或,
所述M个操作分支中至少两个操作分支之间包括的子线性操作的操作类型不同。
14.根据权利要求12或13所述的方法,其特征在于,所述目标线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
15.根据权利要求12至14任一所述的方法,其特征在于,所述目标线性操作与所述第一卷积层不同。
16.根据权利要求12至15任一所述的方法,其特征在于,所述目标线性操作等效的卷积层和所述目标线性操作在处理相同的数据时,得到的处理结果相同。
17.根据权利要求12至16任一所述的方法,其特征在于,所述目标神经网络模型包括训练后的目标线性操作,所述方法还包括:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
18.一种模型训练装置,其特征在于,所述装置包括:
获取模块,用于获取第一神经网络模型,所述第一神经网络模型包括第一卷积层;
根据所述第一神经网络模型,获取多个第二神经网络模型,其中,每个第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为一种线性操作得到的,所述线性操作等效为一个卷积层;
模型训练模块,用于对所述多个第二神经网络模型进行模型训练,以获取目标神经网络模型,所述目标神经网络模型为训练后的多个第二神经网络模型中模型精度最高的神经网络模型。
19.根据权利要求18所述的装置,其特征在于,所述线性操作等效的卷积层的感受野小于或等于所述第一卷积层的感受野。
20.根据权利要求18或19所述的装置,其特征在于,所述线性操作包括多个操作分支,每个操作分支的输入为所述线性操作的输入,所述每个操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野;或,
所述线性操作包括一个操作分支,所述操作分支用于对所述线性操作的输入数据进行处理,所述操作分支包括串行的至少一个子线性操作,且所述串行的至少一个子线性操作的等效感受野小于或等于所述第一卷积层的感受野。
21.根据权利要求18至20任一所述的装置,其特征在于,每个第二神经网络模型中的所述线性操作与所述第一卷积层不同,且不同的第二神经网络模型包括的所述线性操作不同。
22.根据权利要求18至21任一所述的装置,其特征在于,所述线性操作等效的卷积层和所述线性操作在处理相同的数据时,得到的处理结果相同。
23.根据权利要求18至22任一所述的装置,其特征在于,所述目标神经网络模型对应的第二神经网络模型为将所述第一神经网络模型中的所述第一卷积层替换为目标线性操作得到的,所述目标神经网络模型包括训练后的目标线性操作,所述获取模块,用于:
将所述目标神经网络模型中的所述训练后的目标线性操作替换为所述训练后的目标线性操作等效的第二卷积层,以获取第三神经网络模型。
24.根据权利要求23所述的装置,其特征在于,所述第二卷积层的尺寸大小与所述第一卷积层的尺寸大小一致。
25.根据权利要求24所述的装置,其特征在于,所述装置还包括:
融合模块,用于根据所述训练后的目标线性操作包括的多个子线性操作在处理数据时的先后顺序,将各个子线性操作融合到相邻且位于所述先后顺序中之后的子线性操作,直至完成到所述先后顺序中最后一个子线性操作的融合,以得到所述目标线性操作等效的第二卷积层。
26.根据权利要求25所述的装置,其特征在于,所述训练后的目标线性操作包括相邻的第一子线性操作以及第二子线性操,且在所述先后顺序中,所述第二子线性操作位于所述第一子线性操作之后,所述第一子线性操作包括第一操作参数,所述第二子线性操作包括第二操作参数;
所述融合模块,用于:
获取所述第一子线性操作的融合参数,其中,若所述第一子线性操作的输入数据为所述训练后的目标线性操作的输入数据,则所述第一子线性操作的融合参数为所述第一操作参数,若所述第一子线性操作的输入数据为与所述第一子线性操作相邻且在所述先后顺序之前的第三子线性操作的输出数据,则所述第一子线性操作的融合参数为根据所述第三子线性操作的融合参数以及所述第一操作参数得到;
根据所述第一子线性操作的融合参数、所述第二操作参数以及所述第二子线性操作的操作类型,获取所述第二子线性操作的融合参数;其中,若所述第二子线性操作为所述先后顺序中的最后一个子线性操作,则所述第二子线性操作的融合参数用于作为所述第二卷积层的操作参数。
27.根据权利要求18至26任一所述的装置,其特征在于,所述线性操作包括多个子线性操作,且所述多个子线性操作的操作类型包括如下的至少一种:加和操作、空操作、恒等操作、卷积操作、批归一化BN操作或池化操作。
28.根据权利要求26或27所述的装置,其特征在于,若所述第二子线性操作的操作类型为卷积操作或BN操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数以及所述第二子线性操作的操作参数进行内积计算得到;若所述第二子线性操作的操作类型为加和操作、池化操作、恒等操作或空操作,则所述第二子线性操作的融合参数为对所述第一子线性操作的融合参数进行所述第二子线性操作的操作类型对应的计算得到。
29.一种模型训练装置,其特征在于,所述装置包括存储器和处理器;所述存储器存储有代码,所述处理器被配置为获取所述代码,并执行如权利要求1至11、12至17任一所述的方法。
30.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一个或多个指令,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机实施权利要求1至11、12至17任一所述的方法。
31.一种计算机产品,包括代码,其特征在于,在所述代码被执行时用于实现如权利要求1至11、12至17任一所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110183936.2A CN114912569A (zh) | 2021-02-10 | 2021-02-10 | 一种模型训练方法及装置 |
PCT/CN2022/074940 WO2022171027A1 (zh) | 2021-02-10 | 2022-01-29 | 一种模型训练方法及装置 |
US18/446,294 US20230385642A1 (en) | 2021-02-10 | 2023-08-08 | Model training method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110183936.2A CN114912569A (zh) | 2021-02-10 | 2021-02-10 | 一种模型训练方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114912569A true CN114912569A (zh) | 2022-08-16 |
Family
ID=82761622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110183936.2A Pending CN114912569A (zh) | 2021-02-10 | 2021-02-10 | 一种模型训练方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230385642A1 (zh) |
CN (1) | CN114912569A (zh) |
WO (1) | WO2022171027A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3608844A1 (en) * | 2018-08-10 | 2020-02-12 | Naver Corporation | Methods for training a crnn and for semantic segmentation of an inputted video using said crnn |
CN109360206B (zh) * | 2018-09-08 | 2021-11-12 | 华中农业大学 | 基于深度学习的大田稻穗分割方法 |
JP7042210B2 (ja) * | 2018-12-27 | 2022-03-25 | Kddi株式会社 | 学習モデル生成装置、学習モデル生成方法、及びプログラム |
CN111882040B (zh) * | 2020-07-30 | 2023-08-11 | 中原工学院 | 基于通道数量搜索的卷积神经网络压缩方法 |
-
2021
- 2021-02-10 CN CN202110183936.2A patent/CN114912569A/zh active Pending
-
2022
- 2022-01-29 WO PCT/CN2022/074940 patent/WO2022171027A1/zh active Application Filing
-
2023
- 2023-08-08 US US18/446,294 patent/US20230385642A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022171027A1 (zh) | 2022-08-18 |
US20230385642A1 (en) | 2023-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110175671B (zh) | 神经网络的构建方法、图像处理方法及装置 | |
CN112418392A (zh) | 一种神经网络构建方法以及装置 | |
CN112183718B (zh) | 一种用于计算设备的深度学习训练方法和装置 | |
CN111797983A (zh) | 一种神经网络构建方法以及装置 | |
CN115456160A (zh) | 一种数据处理方法和数据处理设备 | |
CN113705769A (zh) | 一种神经网络训练方法以及装置 | |
CN114255361A (zh) | 神经网络模型的训练方法、图像处理方法及装置 | |
CN112215332B (zh) | 神经网络结构的搜索方法、图像处理方法和装置 | |
WO2022111617A1 (zh) | 一种模型训练方法及装置 | |
CN111783937A (zh) | 一种神经网络构建方法以及系统 | |
CN110222718B (zh) | 图像处理的方法及装置 | |
CN112529146B (zh) | 神经网络模型训练的方法和装置 | |
CN110222717A (zh) | 图像处理方法和装置 | |
CN115081588A (zh) | 一种神经网络参数量化方法和装置 | |
CN113240079A (zh) | 一种模型训练方法及装置 | |
WO2022088063A1 (zh) | 神经网络模型的量化方法和装置、数据处理的方法和装置 | |
CN111931901A (zh) | 一种神经网络构建方法以及装置 | |
CN111797992A (zh) | 一种机器学习优化方法以及装置 | |
CN113592060A (zh) | 一种神经网络优化方法以及装置 | |
US20240135174A1 (en) | Data processing method, and neural network model training method and apparatus | |
CN114492723A (zh) | 神经网络模型的训练方法、图像处理方法及装置 | |
CN114078195A (zh) | 分类模型的训练方法、超参数的搜索方法以及装置 | |
CN113536970A (zh) | 一种视频分类模型的训练方法及相关装置 | |
CN117501245A (zh) | 神经网络模型训练方法和装置、数据处理方法和装置 | |
CN113627163A (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 |