CN108038546B - 用于压缩神经网络的方法和装置 - Google Patents
用于压缩神经网络的方法和装置 Download PDFInfo
- Publication number
- CN108038546B CN108038546B CN201711473963.3A CN201711473963A CN108038546B CN 108038546 B CN108038546 B CN 108038546B CN 201711473963 A CN201711473963 A CN 201711473963A CN 108038546 B CN108038546 B CN 108038546B
- Authority
- CN
- China
- Prior art keywords
- ratio
- neural network
- compressed
- layer
- cutting
- 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.)
- Active
Links
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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural 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/044—Recurrent networks, e.g. Hopfield 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/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Manipulator (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例公开了用于压缩神经网络的方法和装置。该方法的一具体实施方式包括:获取待压缩的经训练后的神经网络;从该神经网络的各层中选取至少一层作为待压缩层;按照待压缩层在该神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的数量确定裁减比率,基于裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练;将对选取出的各个待压缩层进行该处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储经压缩后的神经网络。该实施方式实现了对神经网络的有效压缩。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及用于压缩神经网络的方法和装置。
背景技术
目前,随着人工智能不断的发展,神经网络的应用范围也在不断的扩展。这里,神经网络是人工神经网络的简称。神经网络可以应用于服务端,以对图像、文字、音频等进行处理。当然,现在神经网络还可以包含在客户端应用中。用户通过其终端设备所安装的客户端应用中的神经网络可以实现对图像、文字、音频等的编辑。
现有的神经网络通常占用较多的存储空间,例如磁盘空间或内存空间等。若用户在其持有的设备(例如智能手机、平板电脑等移动设备)上安装较多的包含神经网络的应用,那么该设备可能剩余较少的可用存储空间,该设备可能会出现运行速度慢、宕机等异常情况。
发明内容
本申请实施例提出了用于压缩神经网络的方法和装置。
第一方面,本申请实施例提供了一种用于压缩神经网络的方法,该方法包括:获取待压缩的经训练后的神经网络;从神经网络的各层中选取至少一层作为待压缩层;按照待压缩层在神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的总数量确定裁减比率,基于裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练;将对选取出的各个待压缩层进行上述处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储经压缩后的神经网络。
在一些实施例中,从神经网络的各层中选取至少一层作为待压缩层,包括:若神经网络包括卷积层和全连接层,则选取至少一个卷积层和/或至少一个全连接层作为待压缩层。
在一些实施例中,基于裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练,包括:执行以下裁剪训练操作:将指定比率与上述总数量的乘积作为裁剪数量,按照参数值的绝对值由小到大的顺序,从该待压缩层所包括的参数中选取裁剪数量个参数值的绝对值不大于参数值阈值的参数进行裁剪,其中,指定比率不大于裁剪比率;利用机器学习方法,基于训练样本对经裁剪后的神经网络进行训练;如果当前经训练后的神经网络的精度低于预设精度,或该待压缩层中的被裁减的参数的数量与上述总数量的比值不低于裁减比率,则停止执行裁剪训练操作;如果当前经训练后的神经网络的精度不低于预设精度并且上述比值低于裁减比率,则基于裁减比率和上述比值重新设置指定比率,并继续执行裁剪训练操作。
在一些实施例中,基于裁减比率和比值重新设置指定比率,包括:将裁减比率减去比值得到第一比率,将指定比率重新设置为不大于第一比率的正数。
在一些实施例中,将指定比率重新设置为不大于第一比率的正数,包括:将指定比率重新设置为不大于指定比率的当前值和第一比率的正数。
在一些实施例中,将指定比率重新设置为不大于指定比率的当前值和第一比率的正数,包括:将指定比率重新设置为小于指定比率的当前值并且不大于第一比率的正数。
第二方面,本申请实施例提供了一种用于压缩神经网络的装置,该装置包括:获取单元,配置用于获取待压缩的经训练后的神经网络;选取单元,配置用于从神经网络的各层中选取至少一层作为待压缩层;处理单元,配置用于按照待压缩层在神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的总数量确定裁减比率,基于裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练;存储单元,配置用于将对选取出的各个待压缩层进行上述处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储经压缩后的神经网络。
在一些实施例中,上述选取单元包括:选取子单元,配置用于若神经网络包括卷积层和全连接层,则选取至少一个卷积层和/或至少一个全连接层作为待压缩层。
在一些实施例中,上述处理单元包括:第一处理子单元,配置用于执行以下裁剪训练操作:将指定比率与上述总数量的乘积作为裁剪数量,按照参数值的绝对值由小到大的顺序,从该待压缩层所包括的参数中选取裁剪数量个参数值的绝对值不大于参数值阈值的参数进行裁剪,其中,指定比率不大于裁剪比率;利用机器学习方法,基于训练样本对经裁剪后的神经网络进行训练;如果当前经训练后的神经网络的精度低于预设精度,或该待压缩层中的被裁减的参数的数量与上述总数量的比值不低于裁减比率,则停止执行裁剪训练操作;第二处理子单元,配置用于如果当前经训练后的神经网络的精度不低于预设精度并且上述比值低于裁减比率,则基于裁减比率和上述比值重新设置指定比率,并继续执行裁剪训练操作。
在一些实施例中,上述第二处理子单元包括:设置模块,配置用于将上述裁减比率减去上述比值得到第一比率,将指定比率重新设置为不大于第一比率的正数。
在一些实施例中,上述设置模块包括:设置子模块,配置用于将指定比率重新设置为不大于指定比率的当前值和第一比率的正数。
在一些实施例中,设置子模块进一步配置用于:将指定比率重新设置为小于指定比率的当前值并且不大于第一比率的正数。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当上述一个或多个程序被上述一个或多个处理器执行,使得上述一个或多个处理器实现如第一方面中任一实现方式描述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,上述程序被处理器执行时实现如第一方面中任一实现方式描述的方法。
本申请实施例提供的用于压缩神经网络的方法和装置,通过从所获取的待压缩的经训练后的神经网络的各层中选取至少一层作为待压缩层,并按照待压缩层在该神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行指定的处理步骤,以便将对选取出的各个待压缩层进行该处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储经压缩后的神经网络。从而有效利用了对选取出的待压缩层执行指定的处理步骤,以对该待压缩层中的参数进行适当的裁减,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练,可以使神经网络尽可能地恢复到原始精度,从而实现了对神经网络的有效压缩。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的用于压缩神经网络的方法的一个实施例的流程图;
图3是根据本申请的用于压缩神经网络的方法的一个应用场景的示意图;
图4是根据本申请的用于压缩神经网络的装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于压缩神经网络的方法或用于压缩神经网络的装置的实施例的示例性***架构100。
如图1所示,***架构100可以包括服务器101、103和网络102。网络102用以在服务器101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
服务器101可以是提供各种服务的服务器,例如对经训练后的神经网络进行存储的数据存储用服务器。
服务器103可以是提供各种服务的服务器,例如用于压缩神经网络的服务器。该服务器可以从服务器101获取待压缩的经训练后的神经网络,并对该神经网络进行分析等处理,并对处理结果(例如经压缩后的神经网络)进行储存。
需要说明的是,本申请实施例所提供的用于压缩神经网络的方法一般由服务器103执行,相应地,用于压缩神经网络的装置一般设置于服务器103中。
需要指出的是,若服务器103所获取的神经网络预先存储在本地,那么***架构100可以不包括服务器101。
应该理解,图1中的服务器和网络的数目仅仅是示意性的。根据实现需要,可以具有任意数目的服务器和网络。
继续参考图2,示出了根据本申请的用于压缩神经网络的方法的一个实施例的流程200。该用于压缩神经网络的方法的流程200,包括以下步骤:
步骤201,获取待压缩的经训练后的神经网络。
在本实施例中,用于压缩神经网络的方法运行于其上的电子设备(例如图1所示的服务器103)可以通过有线连接方式或者无线连接方式从远程通信连接的服务器(例如图1所示的服务器101)获取待压缩的经训练后的神经网络。当然,若该神经网络预先存储在上述电子设备本地,上述电子设备也可以本地获取该神经网络。
需要说明的是,上述神经网络可以是占用空间超出占用空间阈值的神经网络。进一步地,上述神经网络可以是占用空间超出占用空间阈值并且包含在客户端应用(例如适用于移动设备的客户端应用)中的神经网络。当客户端应用中的神经网络占用较大存储空间时,通过对该神经网络进行压缩,可以节约安装该客户端应用的终端设备的磁盘空间或内存空间。而且,当用户下载该客户端应用时,可以减少用户的等待时间,以及减少对流量的耗费。
另外,上述电子设备所获取的神经网络例如可以包括至少一个输入层、至少一个隐藏层和至少一个输出层。其中,该神经网络的每层可以具有对应的层级数。作为示例,假设该神经网络包括一个输入层、一个隐藏层和一个输出层,该输入层可以处于该神经网络的第一层,该输入层的层级数可以是1;该隐藏层可以处于该神经网络的第二层,该隐藏层的层级数可以是2;该输出层可以处于该神经网络的第三层,该输出层的层级数可以是3。
需要指出的是,神经网络可以指人工神经网络(Artificial Neural Network,ANN)。神经网络通常是一种运算模型,由大量的节点(或称神经元)之间相互连接构成。每个节点可以代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。常见的神经网络例如包括深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等等。
步骤202,从神经网络的各层中选取至少一层作为待压缩层。
在本实施例中,上述电子设备可以从所获取的神经网络的各层中选取至少一层作为待压缩层。例如,上述电子设备可以选取该神经网络的每层作为待压缩层。
在本实施例的一些可选的实现方式中,若该神经网络包括卷积层(ConvolutionLayer)和全连接层(Fully Connected Layers,FC),上述电子设备可以选取至少一个卷积层和至少一个全连接层作为待压缩层。
步骤203,按照待压缩层在神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行处理步骤。
在本实施例中,上述电子设备从所获取的神经网络中选取出待压缩层后,上述电子设备可以按照待压缩层在该神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数(可称为权重)的总数量确定裁减比率,基于该裁剪比率和参数值阈值(例如0.1等),从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练。需要指出的是,参数值阈值是可以根据实际需要进行调整的,本实施例不对此方面内容做任何限定。另外,上述电子设备可以通过将选取出的参数置为指定数值(例如0),来实现对该参数的裁剪。
作为示例,上述电子设备本地可以预先存储有数值范围集合,其中,每个数值范围可以对应有裁减比率。上述电子设备可以先在该数值范围集合中查找该待压缩层所包括的参数的总数量所在的数值范围,并将该数值范围对应的裁减比率确定为与该待压缩层对应的裁减比率。而后,上述电子设备可以计算出该裁剪比率与该总数量的乘积,并将该乘积确定为裁剪数量。然后,上述电子设备可以按照参数值的绝对值由小到大的顺序,从该待压缩层所包括的参数中选取该裁剪数量个参数值的绝对值不大于上述参数值阈值的参数进行裁剪,即将选取出的参数置为上述指定数值。最后,上述电子设备可以利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练,以使当前经训练后的神经网络的精度尽可能地恢复到原始精度。
这里,上述电子设备在对经裁剪后的神经网络进行训练时,可以进行至少一轮训练操作。并且可以在每一轮训练操作结束后,利用经训练后的神经网络对预置的测试样本进行预测操作,以确定该神经网络的精度。
需要说明的是,上述电子设备在对经裁剪后的神经网络进行训练时,可以对该神经网络进行微调(fine-tuning)。微调的好处在于不用完全重新训练神经网络,可以提高训练效率,能够在比较少的迭代次数之后得到一个比较好的结果,例如神经网络在参数量减少的情况下,现在的精度接近原始精度。
在本实施例的一些可选的实现方式中,对于每个待压缩层,上述电子设备可以采用以下方法,以基于该待压缩层所对应的裁剪比率和上述参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于上述训练样本对经裁剪后的神经网络进行训练:
首先,上述电子设备可以执行以下裁减训练步骤:将指定比率与该待压缩层所包括的原始参数的总数量的乘积作为裁剪数量,按照参数值的绝对值由小到大的顺序,从该待压缩层所包括的参数中选取该裁剪数量个参数值的绝对值不大于上述参数值阈值的参数进行裁剪;利用机器学习方法,基于上述训练样本对经裁剪后的神经网络进行训练;如果当前经训练后的神经网络的精度低于预设精度,或该待压缩层中的被裁减的参数的数量与该总数量的比值不低于该裁减比率,则停止执行该裁剪训练操作。
其中,该指定比率不大于该裁剪比率。该指定比率的初始值可以是人为设置的,也可以是上述电子设备设置的,本实施例不对此方面内容做任何限定。这里,若该裁减比率为70%,该指定比率的初始值例如可以是40%、20%或10%等。需要说明的是,该预设精度可以是该神经网络的原始精度,或略低于该原始精度的数值。该预设精度可以是人为设置的,也可以是上述电子设备基于预置的算法设置的,而且该预设精度是可以根据实际需要进行调整的,本实施例不对此方面内容做任何限定。
而后,如果当前经训练后的神经网络的精度不低于该预设精度并且上述比值不低于该裁减比率,则上述电子设备可以基于该裁减比率和上述比值重新设置该指定比率,并继续执行该裁减训练步骤。作为示例,上述电子设备可以将该裁减比率减去上述比值得到第一比率,将该指定比率重新设置为不大于该第一比率的正数。例如,假设该裁减比率为70%,上述比值为10%,那么该第一比率可以为60%,上述电子设备可以在区间(0,60%]中选取一个数值,并将指定比率重新设置为该数值。
在本实施例的一些可选的实现方式中,上述电子设备还可以将该指定比率重新设置为不大于该指定比率的当前值和该第一比率的正数。例如,若该指定比率的当前值为10%,该第一比率为60%,那么上述电子设备可以在区间(0,60%]中选取一个数值(例如10%),并将该指定比率重新设置为该数值。
在本实施例的一些可选的实现方式中,上述电子设备还可以将该指定比率重新设置为小于该指定比率的当前值并且不大于该第一比率的正数。例如,若该指定比率的当前值为30%,该第一比率为40%,那么上述电子设备可以在区间(0,30%)中选取一个数值(例如20%),并将该指定比率重新设置为该数值。
步骤204,将对选取出的各个待压缩层进行处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储经压缩后的神经网络。
在本实施例中,上述电子设备可以将对选取出的各个待压缩层进行上述处理步骤后所得的神经网络确定为经压缩后的神经网络,上述电子设备可以存储经压缩后的神经网络,例如存储至上述电子设备本地(例如硬盘或内存)或与上述电子设备远程通信连接的服务器。这里,对经压缩后的神经网络进行存储时,被裁剪的参数(即被置为上述指定数值的参数)通常是不需要存储的,因此,可以有效地节约存储空间。
继续参见图3,图3是根据本实施例的用于压缩神经网络的方法的应用场景的一个示意图。在图3的应用场景中,参数值阈值为0.1。首先,服务器301可以本地获取待压缩的经训练后的神经网络302,其中,神经网络302可以是包含在待发布的、适用于移动设备的应用中的神经网络,神经网络302包含N层,N是大于0的自然数。而后,服务器301可以选取神经网络302中的每层作为待压缩层,得到待压缩层集合303,其中,待压缩层集合303可以包括待压缩层1,待压缩层2,…,待压缩层N。然后,服务器301可以按照待压缩层在神经网络302中所处的层级的层级数由大到小的顺序,依次对待压缩层集合303中的每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的总数量确定裁减比率,基于该裁剪比率和参数值阈值0.1,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练,以使当前经训练后的神经网络尽可能地恢复到原始精度,其中,选取出的参数是参数值的绝对值不大于0.1的参数,选取出的参数的数量与该总数量的比值不大于该裁剪比率。最后,服务器301可以将对待压缩层集合303中的各个待压宿层进行上述处理步骤后所得的神经网络确定为经压缩后的神经网络304,并将经压缩后的神经网络304存储至本地。
本申请的上述实施例提供的方法,有效利用了对选取出的待压缩层执行指定的处理步骤,以对该待压缩层中的参数进行适当的裁减,并在参数裁减后,利用机器学习方法,基于预置的训练样本对当前的神经网络进行训练,可以使神经网络尽可能地恢复到原始精度,从而实现了对神经网络的有效压缩。
进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种用于压缩神经网络的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例所示的用于压缩神经网络的装置400包括:获取单元401、选取单元402、处理单元403和存储单元404。其中,获取单元401配置用于获取待压缩的经训练后的神经网络;选取单元402配置用于从该神经网络的各层中选取至少一层作为待压缩层;处理单元403配置用于按照待压缩层在该神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的总数量确定裁减比率,基于该裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练;存储单元404配置用于将对选取出的各个待压缩层进行上述处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储该经压缩后的神经网络。
在本实施例中,用于压缩神经网络的装置400中:获取单元401、选取单元402、处理单元403和存储单元404的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201、步骤202、步骤203和步骤204的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,上述选取单元402可以包括:选取子单元(图中未示出),配置用于若上述神经网络包括卷积层和全连接层,则选取至少一个卷积层和/或至少一个全连接层作为待压缩层。
在本实施例的一些可选的实现方式中,上述处理单元403可以包括:第一处理子单元(图中未示出),配置用于执行以下裁剪训练操作:将指定比率与上述总数量的乘积作为裁剪数量,按照参数值的绝对值由小到大的顺序,从该待压缩层所包括的参数中选取该裁剪数量个参数值的绝对值不大于上述参数值阈值的参数进行裁剪,其中,指定比率不大于上述裁剪比率;利用机器学习方法,基于上述训练样本对经裁剪后的神经网络进行训练;如果当前经训练后的神经网络的精度低于预设精度,或该待压缩层中的被裁减的参数的数量与上述总数量的比值不低于上述裁减比率,则停止执行裁剪训练操作;第二处理子单元(图中未示出),配置用于如果当前经训练后的神经网络的精度不低于预设精度并且该比值低于上述裁减比率,则基于上述裁减比率和该比值重新设置指定比率,并继续执行裁剪训练操作。
在本实施例的一些可选的实现方式中,上述第二处理子单元可以包括:设置模块(图中未示出),配置用于将上述裁减比率减去上述比值得到第一比率,将指定比率重新设置为不大于第一比率的正数。
在本实施例的一些可选的实现方式中,上述设置模块可以包括:设置子模块(图中未示出),配置用于将指定比率重新设置为不大于指定比率的当前值和第一比率的正数。
在本实施例的一些可选的实现方式中,上述设置子模块可以进一步配置用于:将指定比率重新设置为小于指定比率的当前值并且不大于第一比率的正数。
本申请的上述实施例提供的装置,有效利用了对选取出的待压缩层执行指定的处理步骤,以对该待压缩层中的参数进行适当的裁减,并在参数裁减后,利用机器学习方法,基于预置的训练样本对当前的神经网络进行训练,可以使神经网络尽可能地恢复到原始精度,从而实现了对神经网络的有效压缩。
下面参考图5,其示出了适于用来实现本申请实施例的电子设备的计算机***500的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的***中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、选取单元、处理单元和存储单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取待压缩的经训练后的神经网络的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备包括:获取待压缩的经训练后的神经网络;从神经网络的各层中选取至少一层作为待压缩层;按照待压缩层在神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的总数量确定裁减比率,基于裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练;将对选取出的各个待压缩层进行上述处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储经压缩后的神经网络。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种用于压缩神经网络的方法,包括:
获取待压缩的经训练后的神经网络,其中,所述神经网络的占用空间超出占用空间阈值;
从所述神经网络的各层中选取至少一层作为待压缩层;
按照待压缩层在所述神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的总数量确定裁剪比率,基于所述裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练;
将对选取出的各个待压缩层进行所述处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储所述经压缩后的神经网络;
所述基于所述裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练,包括:
执行以下裁剪训练操作:将指定比率与所述总数量的乘积作为裁剪数量,按照参数值的绝对值由小到大的顺序,从该待压缩层所包括的参数中选取所述裁剪数量个参数值的绝对值不大于所述参数值阈值的参数进行裁剪,其中,所述指定比率不大于所述裁剪比率。
2.根据权利要求1所述的方法,其中,所述从所述神经网络的各层中选取至少一层作为待压缩层,包括:
若所述神经网络包括卷积层和全连接层,则选取至少一个卷积层和/或至少一个全连接层作为待压缩层。
3.根据权利要求1所述的方法,其中,
所述裁剪训练操作还包括:利用机器学习方法,基于所述训练样本对经裁剪后的神经网络进行训练;如果当前经训练后的神经网络的精度低于预设精度,或该待压缩层中的被裁减的参数的数量与所述总数量的比值不低于所述裁减比率,则停止执行所述裁剪训练操作;
如果当前经训练后的神经网络的精度不低于所述预设精度并且所述比值低于所述裁减比率,则基于所述裁减比率和所述比值重新设置所述指定比率,并继续执行所述裁剪训练操作。
4.根据权利要求3所述的方法,其中,所述基于所述裁减比率和所述比值重新设置所述指定比率,包括:
将所述裁减比率减去所述比值得到第一比率,将所述指定比率重新设置为不大于所述第一比率的正数。
5.根据权利要求4所述的方法,其中,所述将所述指定比率重新设置为不大于所述第一比率的正数,包括:
将所述指定比率重新设置为不大于所述指定比率的当前值和所述第一比率的正数。
6.根据权利要求5所述的方法,其中,所述将所述指定比率重新设置为不大于所述指定比率的当前值和所述第一比率的正数,包括:
将所述指定比率重新设置为小于所述当前值并且不大于所述第一比率的正数。
7.一种用于压缩神经网络的装置,包括:
获取单元,配置用于获取待压缩的经训练后的神经网络,其中,所述神经网络的占用空间超出占用空间阈值;
选取单元,配置用于从所述神经网络的各层中选取至少一层作为待压缩层;
处理单元,配置用于按照待压缩层在所述神经网络中所处的层级的层级数由大到小的顺序,依次对每个待压缩层执行以下处理步骤:基于该待压缩层所包括的参数的总数量确定裁剪比率,基于所述裁剪比率和参数值阈值,从该待压缩层所包括的参数中选取参数进行裁剪,并利用机器学习方法,基于预置的训练样本对经裁剪后的神经网络进行训练;
存储单元,配置用于将对选取出的各个待压缩层进行所述处理步骤后所得的神经网络确定为经压缩后的神经网络,并存储所述经压缩后的神经网络;
所述处理单元包括:
第一处理子单元,配置用于执行以下裁剪训练操作:将指定比率与所述总数量的乘积作为裁剪数量,按照参数值的绝对值由小到大的顺序,从该待压缩层所包括的参数中选取所述裁剪数量个参数值的绝对值不大于所述参数值阈值的参数进行裁剪,其中,所述指定比率不大于所述裁剪比率。
8.根据权利要求7所述的装置,其中,所述选取单元包括:
选取子单元,配置用于若所述神经网络包括卷积层和全连接层,则选取至少一个卷积层和/或至少一个全连接层作为待压缩层。
9.根据权利要求7所述的装置,其中,所述处理单元包括:
所述第一处理子单元,还配置用于执行所述裁剪训练操作:利用机器学习方法,基于所述训练样本对经裁剪后的神经网络进行训练;如果当前经训练后的神经网络的精度低于预设精度,或该待压缩层中的被裁减的参数的数量与所述总数量的比值不低于所述裁减比率,则停止执行所述裁剪训练操作;
第二处理子单元,配置用于如果当前经训练后的神经网络的精度不低于所述预设精度并且所述比值低于所述裁减比率,则基于所述裁减比率和所述比值重新设置所述指定比率,并继续执行所述裁剪训练操作。
10.根据权利要求9所述的装置,其中,所述第二处理子单元包括:
设置模块,配置用于将所述裁减比率减去所述比值得到第一比率,将所述指定比率重新设置为不大于所述第一比率的正数。
11.根据权利要求10所述的装置,其中,所述设置模块包括:
设置子模块,配置用于将所述指定比率重新设置为不大于所述指定比率的当前值和所述第一比率的正数。
12.根据权利要求11所述的装置,其中,所述设置子模块进一步配置用于:
将所述指定比率重新设置为小于所述当前值并且不大于所述第一比率的正数。
13.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711473963.3A CN108038546B (zh) | 2017-12-29 | 2017-12-29 | 用于压缩神经网络的方法和装置 |
US16/143,719 US11379723B2 (en) | 2017-12-29 | 2018-09-27 | Method and apparatus for compressing neural network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711473963.3A CN108038546B (zh) | 2017-12-29 | 2017-12-29 | 用于压缩神经网络的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108038546A CN108038546A (zh) | 2018-05-15 |
CN108038546B true CN108038546B (zh) | 2021-02-09 |
Family
ID=62098792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711473963.3A Active CN108038546B (zh) | 2017-12-29 | 2017-12-29 | 用于压缩神经网络的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11379723B2 (zh) |
CN (1) | CN108038546B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT201800007377A1 (it) * | 2018-07-20 | 2020-01-20 | Rete neurale avente un numero ridotto di parametri | |
CN109165720A (zh) * | 2018-09-05 | 2019-01-08 | 深圳灵图慧视科技有限公司 | 神经网络模型压缩方法、装置和计算机设备 |
CN109299780A (zh) * | 2018-09-05 | 2019-02-01 | 深圳灵图慧视科技有限公司 | 神经网络模型压缩方法、装置和计算机设备 |
CN109166118A (zh) * | 2018-09-05 | 2019-01-08 | 深圳灵图慧视科技有限公司 | 织物表面属性检测方法、装置及计算机设备 |
US11636343B2 (en) * | 2018-10-01 | 2023-04-25 | Neuralmagic Inc. | Systems and methods for neural network pruning with accuracy preservation |
WO2020133364A1 (zh) * | 2018-12-29 | 2020-07-02 | 华为技术有限公司 | 一种神经网络压缩方法及装置 |
CN109886394B (zh) * | 2019-03-05 | 2021-06-18 | 北京时代拓灵科技有限公司 | 嵌入式设备中三值神经网络权值处理方法及装置 |
CN111522837B (zh) * | 2020-04-23 | 2023-06-23 | 北京百度网讯科技有限公司 | 用于确定深度神经网络的耗时的方法和装置 |
US11164084B1 (en) * | 2020-11-11 | 2021-11-02 | DeepCube LTD. | Cluster-connected neural network |
CN114692816B (zh) * | 2020-12-31 | 2023-08-25 | 华为技术有限公司 | 神经网络模型的处理方法和设备 |
CN114819045A (zh) * | 2021-01-28 | 2022-07-29 | 伊姆西Ip控股有限责任公司 | 训练和部署神经网络的方法、电子设备和计算机程序产品 |
CN113011588B (zh) * | 2021-04-21 | 2023-05-30 | 华侨大学 | 一种卷积神经网络的剪枝方法、装置、设备和介质 |
CN113516163B (zh) * | 2021-04-26 | 2024-03-12 | 合肥市正茂科技有限公司 | 基于网络剪枝的车辆分类模型压缩方法、装置及存储介质 |
CN113408724A (zh) * | 2021-06-17 | 2021-09-17 | 博众精工科技股份有限公司 | 模型压缩方法及装置 |
US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
JP2023063944A (ja) | 2021-10-25 | 2023-05-10 | 富士通株式会社 | 機械学習プログラム、機械学習方法、及び、情報処理装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242101B (zh) * | 2007-02-09 | 2011-07-20 | 上海磁浮交通工程技术研究中心 | 电力***负荷谐波稳态模型的建立方法及仿真方法 |
US8326781B2 (en) * | 2007-09-27 | 2012-12-04 | Intel Mobile Communications GmbH | Method for the compressed transmission of data packet header fields in a packet-oriented data stream, method for compressing data packet header fields in a packet-oriented data stream, method for decompressing data packet header fields in a packet-oriented data stream, compression/decompression system, compression apparatus and decompression apparatus |
US20100106458A1 (en) * | 2008-10-28 | 2010-04-29 | Leu Ming C | Computer program and method for detecting and predicting valve failure in a reciprocating compressor |
CN101487466B (zh) * | 2009-02-25 | 2010-12-01 | 华东理工大学 | 一种离心式压缩机压缩比和多变效率的在线软测量方法 |
CN104778496A (zh) * | 2015-04-29 | 2015-07-15 | 江南大学 | 一种能自组织的关联模糊神经网络 |
CN106612437A (zh) * | 2016-01-11 | 2017-05-03 | 四川用联信息技术有限公司 | 一种图形图像压缩方法 |
CN107689224B (zh) * | 2016-08-22 | 2020-09-01 | 北京深鉴智能科技有限公司 | 合理使用掩码的深度神经网络压缩方法 |
CN106650928A (zh) * | 2016-10-11 | 2017-05-10 | 广州视源电子科技股份有限公司 | 一种神经网络的优化方法及装置 |
CN106485316B (zh) * | 2016-10-31 | 2019-04-02 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
CN106779068A (zh) * | 2016-12-05 | 2017-05-31 | 北京深鉴智能科技有限公司 | 调整人工神经网络的方法和装置 |
CN106919942B (zh) * | 2017-01-18 | 2020-06-26 | 华南理工大学 | 用于手写汉字识别的深度卷积神经网络的加速压缩方法 |
CN106779075A (zh) * | 2017-02-16 | 2017-05-31 | 南京大学 | 一种计算机中采用剪枝方法改进的神经网络 |
CN107396124B (zh) * | 2017-08-29 | 2019-09-20 | 南京大学 | 基于深度神经网络的视频压缩方法 |
-
2017
- 2017-12-29 CN CN201711473963.3A patent/CN108038546B/zh active Active
-
2018
- 2018-09-27 US US16/143,719 patent/US11379723B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11379723B2 (en) | 2022-07-05 |
US20190205759A1 (en) | 2019-07-04 |
CN108038546A (zh) | 2018-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108038546B (zh) | 用于压缩神经网络的方法和装置 | |
CN108805091B (zh) | 用于生成模型的方法和装置 | |
JP6755849B2 (ja) | 人工ニューラルネットワークのクラスに基づく枝刈り | |
CN110956202B (zh) | 基于分布式学习的图像训练方法、***、介质及智能设备 | |
CN110807515A (zh) | 模型生成方法和装置 | |
CN109740018B (zh) | 用于生成视频标签模型的方法和装置 | |
CN110852421A (zh) | 模型生成方法和装置 | |
CN111523640A (zh) | 神经网络模型的训练方法和装置 | |
CN109977905B (zh) | 用于处理眼底图像的方法和装置 | |
CN108256646A (zh) | 模型生成方法和装置 | |
CN111368973A (zh) | 用于训练超网络的方法和装置 | |
CN109993298A (zh) | 用于压缩神经网络的方法和装置 | |
CN115145812B (zh) | 测试用例生成方法、装置、电子设备和存储介质 | |
CN114898177B (zh) | 缺陷图像生成方法、模型训练方法、设备、介质及产品 | |
CN115205736A (zh) | 视频数据的识别方法和装置、电子设备和存储介质 | |
CN114529796A (zh) | 模型训练方法、图像识别方法、装置及电子设备 | |
CN112396100B (zh) | 一种细粒度分类模型的优化方法、***及相关装置 | |
CN113742593A (zh) | 用于推送信息的方法和装置 | |
CN111949860B (zh) | 用于生成相关度确定模型的方法和装置 | |
CN113761289A (zh) | 图学习方法、框架、计算机***及可读存储介质 | |
CN113392902A (zh) | 数据集处理方法、装置、存储介质及电子设备 | |
CN111523639A (zh) | 用于训练超网络的方法和装置 | |
CN111726476A (zh) | 图像处理方法、装置、设备和计算机可读介质 | |
CN111210279A (zh) | 一种目标用户预测方法、装置和电子设备 | |
CN111767085B (zh) | Storm平台参数配置方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |