模型生成方法和装置与流程

文档序号:14872329发布日期:2018-07-07 01:19阅读:128来源:国知局

本申请涉及计算机领域,具体涉及神经网络领域,尤其涉及模型生成方法和装置。



背景技术:

神经网络被广泛应用在图像识别、语音识别、搜索等领域。训练后的达到一定精度的可被应用的神经网络也可以称之为模型。神经网络的结构越小,占用的存储空间越少。目前,当一个模型运行在存储空间较小的终端设备上时,通常采用的方式为构建一个结构较小的神经网络,对构建的结构较小的神经网络进行初始化后开始进行训练,最后得到结构较小的模型。神经网络占用的存储空间越少,为使最后得到的模型达到精度阈值所需的训练开销越大。



技术实现要素:

本申请实施例提供了模型生成方法和装置。

第一方面,本申请实施例提供了模型生成方法,该方法包括:创建与用于生成原始模型的原始神经网络的结构相同的神经网络,以及对创建的神经网络的多个待裁剪的中间层的结构分别进行裁剪,得到用于生成原始模型对应的目标模型的目标神经网络;通过训练操作对所述目标神经网络进行训练,得到所述目标模型,所述训练操作包括:将目标神经网络的训练样本分别输入到原始模型和目标神经网络;利用损失函数更新目标神经网络的输出层中的参数和目标神经网络的中间层中的参数,其中,所述损失函数用于计算原始模型的输出向量和目标神经网络的输出向量的差异。

第二方面,本申请实施例提供了模型生成装置,该装置包括:处理单元,配置用于创建与用于生成原始模型的原始神经网络的结构相同的神经网络,以及对创建的神经网络的多个待裁剪的中间层的结构分别进行裁剪,得到用于生成原始模型对应的目标模型的目标神经网络;训练单元,配置用于通过训练操作对所述目标神经网络进行训练,得到所述目标模型,所述训练操作包括:将目标神经网络的训练样本分别输入到原始模型和目标神经网络;利用损失函数更新目标神经网络的输出层中的参数和目标神经网络的中间层中的参数,其中,所述损失函数用于计算原始模型的输出向量和目标神经网络的输出向量的差异。

本申请实施例提供的模型生成方法和装置,通过创建与用于生成原始模型的原始神经网络的结构相同的神经网络,以及对创建的神经网络的多个待裁剪的中间层的结构分别进行裁剪,得到用于生成原始模型对应的目标模型的目标神经网络;通过训练操作对所述目标神经网络进行训练,得到所述目标模型,所述训练操作包括:将目标神经网络的训练样本分别输入到原始模型和目标神经网络;利用损失函数更新目标神经网络的输出层中的参数和目标神经网络的中间层中的参数,其中,所述损失函数用于计算原始模型的输出向量和目标神经网络的输出向量的差异。实现了通过对创建的与用于生成原始模型的原始神经网络结构相同的神经网络的部分层的结构进行裁剪,得到占用的存储空间较小的目标神经网络,利用原始模型的输出层的输出对目标神经网络进行训练,得到占用的存储空间较小的精度达到精度阈值的目标模型。减少了构建占用的存储空间较小的目标神经网络的开销以及减少了为使得最后得到的存储空间较小的目标模型达到精度阈值所需的训练开销。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出了可以应用本申请的模型生成方法的示例性系统架构;

图2示出了根据本申请的模型生成方法的一个实施例的流程图;

图3示出了根据本申请的模型生成装置的一个实施例的结构示意图;

图4示出了适于用来实现本申请实施例的服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图1,其示出了可以应用本申请的方法的示例性系统架构。

如图1所示,系统架构可以包括终端设备101、网络102、服务器103。网络102可以为无线通信网络或有线通信网络。

服务器103可以运行有占用存储空间较大并且精度较高的原始模型,例如,服务器103运行的原始模型为占用存储空间较大并且精度较高的人脸识别模型,该人脸识别模型通过对一个卷积神经网络进行训练而得到。

服务器103可以对创建的与用于生成原始模型的原始神经网络结构相同的神经网络的部分层的结构进行裁剪,得到占用的存储空间较小的目标神经网络,利用原始模型的输出层的输出对该目标神经网络进行训练,得到精度达到精度阈值的占用的存储空间较小的目标模型,将精度达到精度阈值的占用的存储空间较小的目标模型发送至终端设备101。精度阈值可以设置为与原始模型的精度的差值小于差值阈值。

例如,终端设备101为运行人脸识别模型的闸机,服务器103可以对创建的与用于生成原始模型的卷积神经网络结构相同的一个卷积神经网络的部分中间层的结构进行裁剪,得到目标神经网络,对该目标神经网络进行训练,得到一个占用存储空间较小的精度达到阈值的作为目标模型的人脸识别模型,服务器103将该占用存储空间较小的作为目标模型的人脸识别模型发送至终端设备101,在终端设备101上运行该占用存储空间较小的作为目标模型的人脸识别模型。

请参考图2,其示出了根据本申请的模型生成方法的一个实施例的流程。需要说明的是,本申请实施例所提供的模型生成方法可以由服务器(例如图1中的服务器103)执行。该方法包括以下步骤:

步骤201,创建与用于生成原始模型的原始神经网络的结构相同的神经网络,以及对创建的神经网络的部分层的结构分别进行裁剪。

在本实施例中,神经网络的输入层和输出层之间的每一层均可以称之为中间层。原始模型通过预先对用于生成原始模型的原始神经网络进行训练而生成。为了生成原始模型对应的目标模型,需要首先得到用于生成目标模型的目标神经网络。可以首先创建一个与原始神经网络的结构相同的神经网络,原始神经网络包含多个层,创建的与原始神经网络的结构相同的神经网络中也包含多个层。

在本实施例中,可以从创建的神经网络的所有中间层中选取出多个待裁剪的中间层,对创建的神经网络的选取出的多个待裁剪的中间层中的每一个待裁剪的中间层的结构分别进行裁剪,得到目标神经网络。

例如,在对创建的神经网络的选取出的多个待裁剪的中间层中的每一个待裁剪的中间层的结构分别进行裁剪时,可以分别去除选取出的多个待裁剪的中间层中的每一个待裁剪的中间层中的预设比例的参数。

在本实施例中,目标神经网络包括:创建的神经网络的输入层、输出层、创建的神经网络的未被裁剪的中间层、创建的神经网络的待裁剪的中间层被裁剪后得到的层。

在本实施例的一些可选的实现方式中,原始神经网络和目标神经网络的类型可以均为卷积神经网络。创建的神经网络的类型也为卷积神经网络。从创建的神经网络的所有中间层中选取出的多个待裁剪的中间层均可以为创建的卷积神经网络中的卷积层。换言之,原始神经网络为一个卷积神经网络,创建的神经网络为一个与作为原始神经网络的卷积神经网络的结构相同的卷积神经网络,从创建的卷积神经网络中选取出多个卷积层作为待裁剪的层。

在本实施例的一些可选的实现方式中,在从创建的神经网络中选取出多个待裁剪的中间层时,可以从创建的神经网络的预设中间层与创建的神经网络的输出层之间的所有中间层中选取出多个待裁剪的中间层。换言之,不对靠近创建的神经网络的输入层的预设数量的中间层的结构进行裁剪。

以原始神经网络和目标神经网络的类型均为卷积神经网络为例,创建的神经网络为一个与作为原始神经网络的卷积神经网络的结构相同的卷积神经网络,可以分别从创建的卷积神经网络中的预设中间层与输出层之间的所有中间层中选取出多个待裁剪的卷积层,分别对多个待裁剪卷积层中的每一个待裁剪的卷积层的结构进行裁剪。例如,分别去除多个待裁剪的卷积层中的每一个待裁剪的卷积层中的预设比例的参数。

在本实施例的一些可选的实现方式中,当原始神经网络和目标神经网络的类型均为卷积神经网络时,创建的神经网络为一个与作为原始神经网络的卷积神经网络的结构相同的卷积神经网络,在分别对多个待裁剪卷积层中的每一个待裁剪的卷积层的结构进行裁剪时,可以分别去除创建的卷积神经网络的多个被裁剪的卷积层中的每一个待裁剪的卷积层中的预设比例的卷积核,从而,对创建的卷积神经网络的多个被裁剪的卷积层中的每一个待裁剪的卷积层的结构进行裁剪,得到一个作为目标神经网络的卷积神经网络。

步骤202,通过训练操作对目标神经网络进行训练,得到目标模型。

在本实施例中,对于目标神经网络的每一个训练样本,分别执行一次训练操作。通过一次训练操作完成利用一个训练样本对目标神经网络的一次训练。经过多次训练后精度达到精度阈值的目标神经网络可以作为目标模型。

在本实施例中,由于目标模型的结构是通过对原始模型中的多个待裁剪的中间层的结构进行裁剪得到,因此,通过训练操作对目标神经网络进行训练,得到目标模型可以相当于对原始模型进行了压缩,得到占用的存储空间小于原始模型的占用的存储空间较小的目标模型。

在本实施例中,在一次训练操作中,可以首先将目标神经网络的一个训练样本分别输入到原始模型和目标神经网络,得到原始模型的输出向量和目标神经网络的输出向量。然后,可以利用损失函数更新目标神经网络的输出层中的参数和目标神经网络的中间层中的参数。损失函数用于计算原始模型的输出向量和目标神经网络的输出向量的差异。

在本实施例中,在一次训练操作中,更新的目标神经网络的中间层中的参数可以为目标神经网络中的选取出的待更新参数值的中间层中的参数。例如,选取出的多个待更新参数值的中间层为层次序邻近目标神经网络的输出层的层次序的多个中间层。

在利用损失函数更新目标神经网络的输出层中的参数和目标神经网络的中间层中的参数时,可以计算出使得损失函数的函数值最小的梯度信息,梯度信息包括:目标神经网络的输出层中的每一个参数的梯度、选取出的每一个待更新中间层中的每一个参数的梯度。可以根据目标神经网络的输出层中的每一个参数的梯度,采用梯度下降算法对目标神经网络的输出层中的每一个参数的参数值分别进行更新。可以根据选取出的每一个待更新中间层中的每一个参数的梯度,采用梯度下降算法对选取出的每一个待更新中间层中的每一个参数的参数值分别进行更新。

在本实施例的一些可选的实现方式中,在一次训练操作中,更新的目标神经网络的中间层中的参数可以为目标神经网络中的每一个中间层中的参数。可以计算出使得损失函数的函数值最小的梯度信息,该梯度信息包括:目标神经网络的输出层中的每一个参数的梯度、目标神经网络的每一个中间层中的每一个参数的梯度。可以根据目标神经网络的输出层中的每一个参数的梯度,采用梯度下降算法对目标神经网络的输出层中的每一个参数的参数值分别进行更新。可以根据目标神经网络的目标神经网络的每一个中间层中的每一个参数的梯度,采用梯度下降算法对目标神经网络的目标神经网络的每一个中间层中的每一个参数的参数值进行更新。

请参考图3,作为对上述各图所示方法的实现,本申请提供了一种模型生成装置的一个实施例,该装置实施例与图2所示的方法实施例相对应。

如图3所示,本实施例的模型生成装置包括:处理单元301,训练单元302。其中,处理单元301配置用于创建与用于生成原始模型的原始神经网络的结构相同的神经网络,以及对创建的神经网络的多个待裁剪的中间层的结构分别进行裁剪,得到用于生成原始模型对应的目标模型的目标神经网络;训练单元302配置用于通过训练操作对所述目标神经网络进行训练,得到所述目标模型,所述训练操作包括:将目标神经网络的训练样本分别输入到原始模型和目标神经网络;利用损失函数更新目标神经网络的输出层中的参数和目标神经网络的中间层中的参数,其中,所述损失函数用于计算原始模型的输出向量和目标神经网络的输出向量的差异。

在本实施例的一些可选的实现方式中,多个待裁剪的中间层中的每一个待裁剪的中间层均为处于创建的神经网络的预设中间层与创建的神经网络的输出层之间的中间层,所述预设中间层的层次序为创建的神经网络的输入层的层次序与层数阈值之和。

在本实施例的一些可选的实现方式中,训练单元包括:更新子单元,配置用于计算出使得损失函数的函数值最小的梯度信息,所述梯度信息包括:目标神经网络的输出层中的参数的梯度、目标神经网络的每一个中间层中的参数的梯度;采用梯度下降算法基于所述梯度信息,更新目标神经网络的输出层中的参数的参数值和目标神经网络的每一个中间层中的参数的参数值。

在本实施例的一些可选的实现方式中,原始神经网络和目标神经网络的类型均为卷积神经网络。

在本实施例的一些可选的实现方式中,多个待裁剪的中间层中的每一个中间层均为卷积层。

在本实施例的一些可选的实现方式中,处理单元包括:裁剪子单元,配置用于对于创建的神经网络的多个待裁剪的中间层中的每一个待裁剪的中间层,去除待裁剪的中间层中的预设比例的卷积核。

图4示出了适于用来实现本申请实施例的服务器的计算机系统的结构示意图。

如图4所示,计算机系统包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有计算机系统操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。

以下部件连接至i/o接口405:输入部分406;输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。

特别地,本申请的实施例中描述的过程可以被实现为计算机程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包括用于执行流程图所示的方法的指令。该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(cpu)401执行时,执行本申请的方法中限定的上述功能。

本申请还提供了一种服务器,该服务器可以配置有一个或多个处理器;存储器,用于存储一个或多个程序,一个或多个程序中可以包含用以执行上述步骤201-202中描述的操作的指令。当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述步骤201-202中描述的操作。

本申请还提供了一种计算机可读介质,该计算机可读介质可以是服务器中所包括的;也可以是单独存在,未装配入服务器中。上述计算机可读介质承载有一个或者多个程序,当一个或者多个程序被服务器执行时,使得服务器:创建与用于生成原始模型的原始神经网络的结构相同的神经网络,以及对创建的神经网络的多个待裁剪的中间层的结构分别进行裁剪,得到用于生成原始模型对应的目标模型的目标神经网络;通过训练操作对所述目标神经网络进行训练,得到所述目标模型,所述训练操作包括:将目标神经网络的训练样本分别输入到原始模型和目标神经网络;利用损失函数更新目标神经网络的输出层中的参数和目标神经网络的中间层中的参数,其中,所述损失函数用于计算原始模型的输出向量和目标神经网络的输出向量的差异。

需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括处理单元,训练单元。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1