CN110334802A - 一种神经网络模型的构建方法、装置、设备及存储介质 - Google Patents
一种神经网络模型的构建方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110334802A CN110334802A CN201910435113.7A CN201910435113A CN110334802A CN 110334802 A CN110334802 A CN 110334802A CN 201910435113 A CN201910435113 A CN 201910435113A CN 110334802 A CN110334802 A CN 110334802A
- Authority
- CN
- China
- Prior art keywords
- data
- data type
- network model
- neural network
- weight
- 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
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及一种神经网络模型的构建方法、设备及系统,包括:获取预设神经网络模型;在所述预设神经网络模型的隐藏层后增加伪量化层,得到新的神经网络模型;所述伪量化层用于将隐藏层输出的第一数据类型的数据量化为第二数据类型的数据,以及对所述第二数据类型的数据进行取整计算,以及将所述进行取整计算后的第二数据类型的数据反量化为第一数据类型的数据;基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型,实现了在对神经网络模型的训练结果不会造成太大影响的情况下,减小了神经网络模型文件的占用空间,减少内存带宽,降低计算资源的需要,获取更高性能,实现低功耗运行。
Description
技术领域
本公开涉及机器学习技术领域,具体涉及一种神经网络模型的构建方法、装置、设备及存储介质。
背景技术
在电脑侧开发神经网络时,一般采取32-bit浮点型来进行网络流动的数值计算以及存储网络的权值,且电脑侧可以使用拥有大量浮点计算单元的GPU对神经网络进行加速。然而在移动互联网时代,越来越多的AI算法需要在移动端落地,而原先在PC机上运行的神经网络模型在资源紧张的移动端设备上,效率便成为很大的瓶颈。
为了让AI算法更好地落地,有待提出一种适应资源紧张的终端设备运行AI算法的方案。
发明内容
本公开提出了一种神经网络模型的构建方法、装置、设备及存储介质,能够压缩经网络模型文件大小,减少神经网络模型文件的占用空间。本公开具体是以如下技术方案实现的:
一方面,本公开提供了一种神经网络模型的构建方法,包括:
获取预设神经网络模型;
在所述预设神经网络模型的隐藏层后增加伪量化层,得到新的神经网络模型;所述伪量化层用于将隐藏层输出的第一数据类型的数据量化为第二数据类型的数据,以及对所述第二数据类型的数据进行取整计算,以及将所述进行取整计算后的第二数据类型的数据反量化为第一数据类型的数据;
基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型。
另一方面,本公开提供了一种神经网络模型的构建装置,包括:
第一获取模块,用于获取预设神经网络模型;
伪量化层增加模块,用于在所述预设神经网络模型的隐藏层后增加伪量化层,得到新的神经网络模型;所述伪量化层用于将隐藏层输出的第一数据类型的数据量化为第二数据类型的数据,以及对所述第二数据类型的数据进行取整计算,以及将所述进行取整计算后的第二数据类型的数据反量化为第一数据类型的数据;
训练模块,用于基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型。
在一些实施例中,所述装置还包括:
第三获取模块,用于获取所述收敛的神经网络模型中每个神经元在训练过程中输入数据的最大值、最小值和权重的最大值、最小值;
第二保存模块,用于保存所述输入数据的最大值、最小值和权重的最大值、最小值。
在一些实施例中,所述装置还包括:
第四获取模块,用于获取测试输入数据,所述测试输入数据的数据类型为第一数据类型;
量化模块,用于将所述测试输入数据量化为第二数据类型;
输入模块,用于将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重输入所述收敛的神经网络模型的隐藏层;
隐藏层训练模块,用于所述隐藏层基于所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重进行训练处理,得到隐藏层的输出数据,所述输出数据为第二数据类型;
反量化模块,用于将所述第二数据类型的输出数据进行反量化处理,得到第一输出类型的输出数据。
在一些实施例中,所述隐藏层训练模块包括:
反量化单元,用于在所述隐藏层中,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重;
处理单元,用于在所述隐藏层中,基于所述反量化后的第一数据类型的测试数据和所述第一数据类型的权重进行处理,得到第一数据类型的输出数据;
量化单元,用于在所述隐藏层中,将所述第一数据类型的输出数据量化为第二数据类型的输出数据,所述第二数据类型的输出数据为所述隐藏层的输出数据。
在一些实施例中,所述反量化单元包括:
反量化子单元,用于在所述隐藏层中,基于所述保存的所述输入数据的最大值、最小值和所述权重的最大值、最小值,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重。
另一方面,本公开提供了一种神经网络模型的构建设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如前述的神经网络模型的构建方法。
另一方面,本公开提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如前述的神经网络模型的构建方法。
本公开提供了一种神经网络模型的构建方法、装置、设备及存储介质,通过在所述预设神经网络模型的隐藏层后增加伪量化层,对隐藏层输出的第一数据类型的数据进行量化得到第二数据类型的数据,再对所述第二数据类型的数据进行取整计算,最后将所述进行取整计算后的第二数据类型的数据进行反量化得到第一数据类型的数据,从而可以基于新的神经网络模型进行训练得到收敛的神经网络模型。利用本申请实施例提供的技术方案通过伪量化层的处理,舍弃了隐藏层输出数据量化后数据的小数表示的细节,模拟了第二数据类型数据的表述能力进行量化训练,实现了在对神经网络模型的训练结果不会造成太大影响的情况下,减小了神经网络模型文件的占用空间,减少内存带宽,降低计算资源的需要,获取更高性能,实现低功耗运行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的一种神经网络模型的构建方法的流程示意图;
图2是本发明实施例提供的一种神经网络模型构建成功后的模型保存方法的流程示意图;
图3是本发明实施例提供的一种神经网络模型构建成功后的训练数据保存方法的流程示意图;
图4是本发明实施例提供的一种新的神经网络模型的训练过程的示意图;
图5是本发明实施例提供的一种基于新的神经网络模型进行测试的测试过程的流程示意图;
图6是本发明实施例提供的一种新的神经网络模型中隐藏层的训练处理方法的流程示意图;
图7是本发明实施例提供的一种新的神经网络模型的示意图;
图8是本发明实施例提供的一种基于新的神经网络模型进行测试的测试过程的另一流程示意图;
图9是本发明实施例提供的一种新的神经网络模型中QuantizedRelu层的计算步骤示意图;
图10是本发明实施例提供的一种神经网络模型的构建装置;
图11是本申请实施例提供的一种热度预测方法的服务器的硬件结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
以下介绍本发明神经网络模型的构建方法,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本说明书实施例提供的神经网络模型的构建方法包括训练过程和测试过程,训练过程是通过大量样本的有监督学习,获得效果优秀的神经网络模型的过程,可以理解为利用数据集和标签进行数值分析得到一个网络(归纳结题思路)的过程,测试过程是在已有模型上流动输入数据,加权所有神经元激励得到最后的输出的过程,可以理解为用训练过程得到的网络对测试集进行数值分析得到一个输出的过程(结题)。下面分别进行介绍。
图1是本发明实施例提供的一种神经网络模型的构建方法的流程示意图,如图1所示,所述方法具体包括:
S101:获取预设神经网络模型。
该步骤中,预设神经网络模型可以是ART网络、LVQ网络、Kohonen网络Hopfield网络等常用模型,在此不作限定。神经网络模型一般可以包括输入层、输出层以及一个或多个隐藏层(也叫中间层)。
S103:在所述预设神经网络模型的隐藏层后增加伪量化层,得到新的神经网络模型;所述伪量化层用于将隐藏层输出的第一数据类型的数据量化为第二数据类型的数据,以及对所述第二数据类型的数据进行取整计算,以及将所述进行取整计算后的第二数据类型的数据反量化为第一数据类型的数据。
在本说明书的实施例中,第一数据类型可以是高比特位的数据,例如32位的浮点型数据,第二数据类型可以是低比特位的数据,例如8位的整型数据。因此,步骤S103可以是先将高比特位的数据量化为低比特的数据,再对结果取整,舍弃小数表示的细节,最后再将取整后的低比特的数据反量化为高比特的数据,从而模拟低比特数据的表述能力进行量化训练,这种方式比纯浮点数的训练更贴近量化网络的表述能力。
S105:基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型。
目标任务可以是训练过程希望达到的任意的目标任务,在此不做限定。
步骤S101-S105描述的是训练过程。
本说明书的实施例,通过伪量化层的设置,舍弃了量化后离散值的小数表示的细节,模拟低比特数据的表达能力进行量化训练,训练得到收敛的神经网络模型的速度相比利用高比特数据进行训练更快。
S107:保存所述新的神经网络模型的数据。
训练结束后,对训练得到的收敛的神经网络模型的数据进行保存,以便后期利用该新的神经网络模型进行测试(前向推导)。
对于步骤S107,在本说明书的实施例中,可以保存所述新的神经网络模型的本身的数据,具体步骤如图2所示:
S201:获取所述收敛的神经网络模型在训练过程中每个神经元对应的权重。
新的神经网络训练完成后,每个神经元都有对应的权重,以每个隐藏层为单位获取其中所有神经元的权重。
S203:分别统计所述权重的最大值、最小值。
步骤S201获取到每个隐藏层中所有神经元对应的权重后,确定出该隐藏层中所有神经元对应的权重的最大值、最小值。
S205:基于所述权重的最大值、最小值将所述收敛的神经网络模型中每个神经元的权重的数据类型由第一数据类型分别量化为第二数据类型。
具体的,基于步骤S203中确定的每一隐藏层所有神经元对应的权重的最大值、最小值将该隐藏层中每一神经元对应的权重的数据类型由第一数据类型分别量化为第二数据类型。
S207:保存量化后的第二数据类型的权重。
保存步骤205量化后的第二数据类型的权重,从而保存该新的神经网络模型。
对于步骤S107,在本说明书的实施例中,可以保存在所述新的神经网络模型训练过程中的数据,以便测试时量化使用,具体步骤如图3所示:
S301:获取所述收敛的神经网络模型中每个神经元在训练过程中输入数据的最大值、最小值和权重的最大值、最小值。
S303:保存所述输入数据的最大值、最小值和权重的最大值、最小值。
在本说明书的实施例中,如图4所示还提供了一种新的神经网络模型的训练过程的示意图,具体过程如下。
图4中具体示出了两个隐藏层,一个是CONV卷积层,一个是ReLU6版本层。训练过程的输入数据包括输入数据集和输出数据集。训练采用伪量化的训练方式,使用32-bit浮点数值进行训练,训练的过程中记录每个blob(神经网络里的数据单位)数据的最大值、最小值,通过在每个层后面增加fake-quant伪量化层。fake-quant层是将浮点数值转化为值域范围量化成255个刻度后相对应的离散值,舍弃了小数表示的细节,模拟8-bit数据的表述能力进行量化训练,这种方式比纯浮点数的训练更加贴近量化网络的表述能力。
模型的参数在训练完成后,统计每个层的权重的最大值、最小值,将32-bit浮点参数值(权重值)通过量化的公式(公式如下),转换成8-bit整数保存,并且保存下每个blob在训练过程中统计输入数据的最大值、最小值,以及网络参数的最大值、最小值供前向推导时量化使用,其中,网络参数可以是权重,也可以是权重和偏置项。其中,最大值/最小值的统计,根据权值的分布,将一些出现频次比较少的最大最小值舍弃,获取更贴合实际的最大值/最小值,以获得更好的量化效果。
将32bit浮点型数据量化为8bit整形的量化公式如下,根据样本确认数据的最大值max和最小值min,按min、max确定数值的值域范围,量化为8-bit表征的255个数值。
u8=(f32-min)*255/(max-min)。
在本说明书的实施例中,如图5还提供了一种基于新的神经网络模型进行测试的测试过程的流程示意图,具体过程包括:
S501:获取测试输入数据,所述测试输入数据的数据类型为第一数据类型。
其中,测试输入数据包括输入数据集,例如为32bit的浮点型数据。
S503:将所述测试输入数据量化为第二数据类型。
其中,第二数据类型例如为8bit的整型,量化过程采用的公式为:u8=(f32-min)*255/(max-min)。
S505:将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重输入所述收敛的神经网络模型的隐藏层。
其中,量化后的第二数据类型的权重为步骤S207保存的权重。
S507:所述隐藏层基于所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重进行训练处理,得到隐藏层的输出数据,所述输出数据为第二数据类型。
其中,训练处理包括但不限于:卷积、矩阵乘、激活函数、下采样、拼接、量化、反量化等计算处理。
S509:将所述第二数据类型的输出数据进行反量化处理,得到第一输出类型的输出数据。
在整个测试过程中,隐藏层之间传输的数据都是第二数据类型,从而减少了传输过程中需要占用的资源。
在本说明书的实施例中,针对步骤S507还提供了一种新的神经网络模型中隐藏层的训练处理方法,具体流程示意图如图6所示。
S601:在所述隐藏层中,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重。
在所述隐藏层中,基于所述保存的所述输入数据的最大值、最小值和所述权重的最大值、最小值,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重。
将量化为第二数据类型的测试输入数据和量化后的第二数据类型的权重进行反量化是为了便于利用实际的数据大小进行计算,提高了结果的准确性。
S603:在所述隐藏层中,基于所述反量化后的第一数据类型的测试数据和所述第一数据类型的权重进行处理,得到第一数据类型的输出数据。
其中,该处理包括但不限于:卷积、矩阵乘、激活函数、下采样、拼接等。此处,以只有一个隐藏层,且函数为y=wx为例,那么反量化后的第一数据类型的权重即为w,反量化为第一数据类型的测试数据即为x,计算得到的输出数据y也为第一数据类型。
S605:在所述隐藏层中,将所述第一数据类型的输出数据量化为第二数据类型的输出数据,所述第二数据类型的输出数据为所述隐藏层的输出数据。
将量化后的第二数据类型的输出数据继续传输给下一层。
若收敛的神经网络模型(新的神经网络模型)中包括多个隐藏层,则在隐藏层内部作与步骤S601-605同样的步骤,其中,下一隐藏层的输入数据即为上衣隐藏层的输出数据。若只有一个隐藏层,则直接作为输出值输出。
本发明提出一种量化模型的模型加速方法,意在用更小的数值存储表示网络权值,减少内存带宽,降低计算资源的需要,获取更高性能,低功耗的运行方案。这里提出用8-bit整型数值进行量化模型,其量化效果明显,且能支持大量嵌入式DSP设备,具有广泛的应用场景。
图7是本说明书实施例提供的一种新的神经网络模型的示意图,图8是本说明书实施例提供的一种基于新的神经网络模型进行测试的测试过程的另一流程示意图。下面结合图7、图8进行说明。
以图7的示例作为本说明书实施例中通过训练得到的收敛的神经网络模型,该收敛的神经网络模型包括输入层、多个隐藏层以及输出层。参数d为输入层神经元个数,q和p分别为第一隐层和最后隐层神经元个数,l为输出层神经元个数,min为输入层第i个神经元和第一隐层第k个神经元的连接权值(即权重),whj为最后隐层第h个神经元和输出层第j个神经元的连接权值,ck和bh分别为第一隐层和最后隐层神经元的输出。
如图8所示,中间的QuantizedRelu层是指量化版本的relu层,它的前后是量化和反量化的一些操作,共同作为一个新的量化relu层。
在模型前向推导过程中,input数据在网络的开始便从32-bit量化成8-bit数据进行存储,并在网络中以8-bit的数据流通。每个运算层需要运行8-bit量化版本的运算,这些运算符包括卷积、矩阵乘、激活函数、下采样和拼接等,它们接受8-bit的输入,在内部根据最大值、最小值计算相应的scale和zero将8-bit数据反量化至实际的数据大小进行计算,最后将结果量化为8-bit数据传输给下一个层。其中部分层之间可以进行重写融合,抵消相邻之间的量化/反量化操作,消除冗余步骤。
图9是本说明书实施例提供的一种如图8所示的QuantizedRelu层的计算步骤示意图。
图中的Qin为层的输入,Qout为层的输出,Qin和Qout均为量化后的8-bit数据,Rin为计算输入数据,Rout为计算输出数据,Rin和Rout为反量化后的数值。其中,Rin=Sin(Qin-Zin),Qout=Rout/Sout+Zout。量化和反量化通过公式S=scale=(max-min)/255和Z=zero=(0-min)/scale来实现。
总结起来,量化网络实际上输入输出依旧是float,只不过中间的计算是用过8bit来计算的,它就是把权重以及内部的节点运算都转化成使用8位的数值来进行计算和存储,从而达到模型压缩和模型加速的目的。
本发明实施例还提供了一种神经网络模型的构建装置,如图10所示,所述装置包括:
第一获取模块1001,用于获取预设神经网络模型。
伪量化层增加模块1003,用于在所述预设神经网络模型的隐藏层后增加伪量化层,得到新的神经网络模型;所述伪量化层用于将隐藏层输出的第一数据类型的数据量化为第二数据类型的数据,以及对所述第二数据类型的数据进行取整计算,以及将所述进行取整计算后的第二数据类型的数据反量化为第一数据类型的数据。
训练模块1005,用于基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型。
在一些实施例中,所述装置还包括:
第二获取模块,用于获取所述收敛的神经网络模型在训练过程中每个神经元对应的权重。
统计模块,用于分别统计所述权重的最大值、最小值。
量化模块,用于基于所述权重的最大值、最小值将所述收敛的神经网络模型中每个神经元的权重的数据类型由第一数据类型分别量化为第二数据类型。
第一保存模块,用于保存量化后的第二数据类型的权重。
在一些实施例中,所述装置还包括:
第三获取模块,用于获取所述收敛的神经网络模型中每个神经元在训练过程中输入数据的最大值、最小值和权重的最大值、最小值;
第二保存模块,用于保存所述输入数据的最大值、最小值和权重的最大值、最小值。
在一些实施例中,所述装置还包括:
第四获取模块,用于获取测试输入数据,所述测试输入数据的数据类型为第一数据类型;
量化模块,用于将所述测试输入数据量化为第二数据类型;
输入模块,用于将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重输入所述收敛的神经网络模型的隐藏层;
隐藏层训练模块,用于所述隐藏层基于所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重进行训练处理,得到隐藏层的输出数据,所述输出数据为第二数据类型;
反量化模块,用于将所述第二数据类型的输出数据进行反量化处理,得到第一输出类型的输出数据。
在一些实施例中,所述隐藏层训练模块包括:
反量化单元,用于在所述隐藏层中,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重;
处理单元,用于在所述隐藏层中,基于所述反量化后的第一数据类型的测试数据和所述第一数据类型的权重进行处理,得到第一数据类型的输出数据;
量化单元,用于在所述隐藏层中,将所述第一数据类型的输出数据量化为第二数据类型的输出数据,所述第二数据类型的输出数据为所述隐藏层的输出数据。
在一些实施例中,所述反量化单元包括:
反量化子单元,用于在所述隐藏层中,基于所述保存的所述输入数据的最大值、最小值和所述权重的最大值、最小值,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重。
所述的装置实施例中的装置与方法实施例基于同样的发明构思。
本发明还提供了一种神经网络模型的构建设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如前述的神经网络模型的构建方法。
本发明还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如前述的神经网络模型的构建方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书实施例中,所述存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图11是本申请实施例提供的一种热度预测方法的服务器的硬件结构框图。如图11所示,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)1110(处理器1110可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1130,一个或一个以上存储应用程序1123或数据1122的存储介质1120(例如一个或一个以上海量存储设备)。其中,存储器1130和存储介质1120可以是短暂存储或持久存储。存储在存储介质1120的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1110可以设置为与存储介质1120通信,在服务器1100上执行存储介质1120中的一系列指令操作。服务器1100还可以包括一个或一个以上电源1160,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1140,和/或,一个或一个以上操作系统1121,例如Windows Server TM,MacOS XTM,Unix TM,Linux TM,Free BSD TM等等。
输入输出接口1140可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1100的通信供应商提供的无线网络。在一个实例中,输入输出接口1140包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1140可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1100还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
由上述本发明提供的神经网络模型的构建方法、装置、设备及存储介质的实施例可见,本说明书实施例通过在所述预设神经网络模型的隐藏层后增加伪量化层,对隐藏层输出的第一数据类型的数据进行量化得到第二数据类型的数据,再对所述第二数据类型的数据进行取整计算,最后将所述进行取整计算后的第二数据类型的数据进行反量化得到第一数据类型的数据,从而可以基于新的神经网络模型进行训练得到收敛的神经网络模型。利用本申请实施例提供的技术方案通过伪量化层的处理,舍弃了隐藏层输出数据量化后数据的小数表示的细节,模拟了第二数据类型数据的表述能力进行量化训练,实现了在对神经网络模型的训练结果不会造成太大影响的情况下,减小了神经网络模型文件的占用空间,减少内存带宽,降低计算资源的需要,获取更高性能,实现低功耗运行。
本发明提供的神经网络模型的构建方法具有如下技术效果:
(1)8-bit的数值存储压缩了模型占用空间,只占原先的25%。
(2)8-bit的数值存储只占据了原先25%的内存带宽,为数据读取减少了大量内存访问,甚至可以更好地利用cache,降低了读取压力,避免访存瓶颈。
(3)8-bit量化版本运算符中,尽管仍需反量化回实际的数据大小,量化/反量化的操作与运算符之间的重新组合,数据可以更多的在8-bit/16-bit的数据大小上进行计算,相比32-bit数据提高了计算效率,在同样的向量化、多核并行计算单元下,在一个时钟周期内获得更大的计算能力,同时降低了功耗的产生。
(4)纯定点化的数据处理是无浮点计算单元的嵌入式dsp设备的唯一解决方案,许多处理器对8位计算十分友好。
经过实验,使用ResNet在ImageNet数据集上进行验证。实验结果如下,8-bit量化版本与32-bit浮点版本在准确率上,差异控制在2%之内,尚可接受。
性能方面,通过MobileNet网络,一个轻量级适合移动端的模型,在高通835平台单核单线程情况(大核2.45GHz)下进行前向推导实验,有接近30%的性能提升。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、系统和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种神经网络模型的构建方法,其特征在于,所述方法包括:
获取预设神经网络模型;
在所述预设神经网络模型的隐藏层后增加伪量化层,得到新的神经网络模型;所述伪量化层用于将隐藏层输出的第一数据类型的数据量化为第二数据类型的数据,以及对所述第二数据类型的数据进行取整计算,以及将所述进行取整计算后的第二数据类型的数据反量化为第一数据类型的数据;
基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型。
2.根据权利要求1所述的方法,其特征在于,在所述基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型之后,所述方法还包括:
获取所述收敛的神经网络模型在训练过程中每个神经元对应的权重;
分别统计所述权重的最大值、最小值;
基于所述权重的最大值、最小值将所述收敛的神经网络模型中每个神经元的权重的数据类型由第一数据类型分别量化为第二数据类型;
保存量化后的第二数据类型的权重。
3.根据权利要求2所述的方法,其特征在于,在所述基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型之后,所述方法还包括:
获取所述收敛的神经网络模型中每个神经元在训练过程中输入数据的最大值、最小值和权重的最大值、最小值;
保存所述输入数据的最大值、最小值和权重的最大值、最小值。
4.根据权利要求3所述的方法,其特征在于,在所述保存所述输入数据的最大值、最小值和权重的最大值、最小值之后,所述方法还包括:
获取测试输入数据,所述测试输入数据的数据类型为第一数据类型;
将所述测试输入数据量化为第二数据类型;
将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重输入所述收敛的神经网络模型的隐藏层;
所述隐藏层基于所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重进行训练处理,得到隐藏层的输出数据,所述输出数据为第二数据类型;
将所述第二数据类型的输出数据进行反量化处理,得到第一输出类型的输出数据。
5.根据权利要求4所述的方法,其特征在于,所述隐藏层基于所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重进行训练处理,得到隐藏层的输出数据包括:
在所述隐藏层中,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重;
在所述隐藏层中,基于所述反量化后的第一数据类型的测试数据和所述第一数据类型的权重进行处理,得到第一数据类型的输出数据;
在所述隐藏层中,将所述第一数据类型的输出数据量化为第二数据类型的输出数据,所述第二数据类型的输出数据为所述隐藏层的输出数据。
6.根据权利要求5所述的方法,其特征在于,所述在所述隐藏层中,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重包括:
在所述隐藏层中,基于所述保存的所述输入数据的最大值、最小值和所述权重的最大值、最小值,将所述量化为第二数据类型的测试输入数据和所述量化后的第二数据类型的权重反量化为第一数据类型的测试数据和第一数据类型的权重。
7.一种神经网络模型的构建装置,其特征在于,所述装置包括:
第一获取模块,用于获取预设神经网络模型;
伪量化层增加模块,用于在所述预设神经网络模型的隐藏层后增加伪量化层,得到新的神经网络模型;所述伪量化层用于将隐藏层输出的第一数据类型的数据量化为第二数据类型的数据,以及对所述第二数据类型的数据进行取整计算,以及将所述进行取整计算后的第二数据类型的数据反量化为第一数据类型的数据;
训练模块,用于基于目标任务,对所述新的神经网络模型进行训练得到收敛的神经网络模型。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述收敛的神经网络模型在训练过程中每个神经元对应的权重;
统计模块,用于分别统计所述权重的最大值、最小值;
量化模块,用于基于所述权重的最大值、最小值将所述收敛的神经网络模型中每个神经元的权重的数据类型由第一数据类型分别量化为第二数据类型;
第一保存模块,用于保存量化后的第二数据类型的权重。
9.一种神经网络模型的构建设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6中任一权利要求所述的神经网络模型的构建方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-6中任一权利要求所述的神经网络模型的构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435113.7A CN110334802A (zh) | 2019-05-23 | 2019-05-23 | 一种神经网络模型的构建方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435113.7A CN110334802A (zh) | 2019-05-23 | 2019-05-23 | 一种神经网络模型的构建方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110334802A true CN110334802A (zh) | 2019-10-15 |
Family
ID=68139670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910435113.7A Pending CN110334802A (zh) | 2019-05-23 | 2019-05-23 | 一种神经网络模型的构建方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110334802A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110970048A (zh) * | 2019-12-03 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 音频数据的处理方法及装置 |
CN111598237A (zh) * | 2020-05-21 | 2020-08-28 | 上海商汤智能科技有限公司 | 量化训练、图像处理方法及装置、存储介质 |
CN111652351A (zh) * | 2020-05-09 | 2020-09-11 | 济南浪潮高新科技投资发展有限公司 | 一种神经网络模型的部署方法、设备及介质 |
CN111797983A (zh) * | 2020-05-25 | 2020-10-20 | 华为技术有限公司 | 一种神经网络构建方法以及装置 |
CN112988366A (zh) * | 2019-12-12 | 2021-06-18 | 中科寒武纪科技股份有限公司 | 参数服务器、主从客户机、权值参数的处理方法及系统 |
CN113033762A (zh) * | 2019-12-09 | 2021-06-25 | 中科寒武纪科技股份有限公司 | 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质 |
CN113033760A (zh) * | 2019-12-09 | 2021-06-25 | 中科寒武纪科技股份有限公司 | 用于测试神经网络中算子精度的方法、测试装置及其系统 |
CN113392973A (zh) * | 2021-06-25 | 2021-09-14 | 广东工业大学 | 一种基于fpga的ai芯片神经网络加速方法 |
CN113762452A (zh) * | 2020-06-04 | 2021-12-07 | 合肥君正科技有限公司 | 一种量化prelu激活函数的方法 |
CN113780513A (zh) * | 2020-06-10 | 2021-12-10 | 杭州海康威视数字技术股份有限公司 | 网络模型量化、推理方法、装置、电子设备及存储介质 |
WO2021258752A1 (zh) * | 2020-06-24 | 2021-12-30 | 苏州浪潮智能科技有限公司 | 一种神经网络的4比特量化方法及系统 |
-
2019
- 2019-05-23 CN CN201910435113.7A patent/CN110334802A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110970048B (zh) * | 2019-12-03 | 2023-01-17 | 腾讯科技(深圳)有限公司 | 音频数据的处理方法及装置 |
CN110970048A (zh) * | 2019-12-03 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 音频数据的处理方法及装置 |
CN113033760A (zh) * | 2019-12-09 | 2021-06-25 | 中科寒武纪科技股份有限公司 | 用于测试神经网络中算子精度的方法、测试装置及其系统 |
CN113033762B (zh) * | 2019-12-09 | 2024-05-10 | 中科寒武纪科技股份有限公司 | 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质 |
CN113033760B (zh) * | 2019-12-09 | 2024-05-10 | 中科寒武纪科技股份有限公司 | 用于测试神经网络中算子精度的方法、测试装置及其系统 |
CN113033762A (zh) * | 2019-12-09 | 2021-06-25 | 中科寒武纪科技股份有限公司 | 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质 |
CN112988366A (zh) * | 2019-12-12 | 2021-06-18 | 中科寒武纪科技股份有限公司 | 参数服务器、主从客户机、权值参数的处理方法及系统 |
CN111652351A (zh) * | 2020-05-09 | 2020-09-11 | 济南浪潮高新科技投资发展有限公司 | 一种神经网络模型的部署方法、设备及介质 |
CN111598237A (zh) * | 2020-05-21 | 2020-08-28 | 上海商汤智能科技有限公司 | 量化训练、图像处理方法及装置、存储介质 |
CN111797983A (zh) * | 2020-05-25 | 2020-10-20 | 华为技术有限公司 | 一种神经网络构建方法以及装置 |
CN113762452A (zh) * | 2020-06-04 | 2021-12-07 | 合肥君正科技有限公司 | 一种量化prelu激活函数的方法 |
CN113762452B (zh) * | 2020-06-04 | 2024-01-02 | 合肥君正科技有限公司 | 一种量化prelu激活函数的方法 |
CN113780513A (zh) * | 2020-06-10 | 2021-12-10 | 杭州海康威视数字技术股份有限公司 | 网络模型量化、推理方法、装置、电子设备及存储介质 |
CN113780513B (zh) * | 2020-06-10 | 2024-05-03 | 杭州海康威视数字技术股份有限公司 | 网络模型量化、推理方法、装置、电子设备及存储介质 |
WO2021258752A1 (zh) * | 2020-06-24 | 2021-12-30 | 苏州浪潮智能科技有限公司 | 一种神经网络的4比特量化方法及系统 |
CN113392973A (zh) * | 2021-06-25 | 2021-09-14 | 广东工业大学 | 一种基于fpga的ai芯片神经网络加速方法 |
CN113392973B (zh) * | 2021-06-25 | 2023-01-13 | 广东工业大学 | 一种基于fpga的ai芯片神经网络加速方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110334802A (zh) | 一种神经网络模型的构建方法、装置、设备及存储介质 | |
US10915816B2 (en) | System and method of executing neural networks | |
Stamoulis et al. | Single-path nas: Designing hardware-efficient convnets in less than 4 hours | |
Li et al. | Auto-tuning neural network quantization framework for collaborative inference between the cloud and edge | |
US10963787B2 (en) | Systems and methods for generation of sparse code for convolutional neural networks | |
US20190392300A1 (en) | Systems and methods for data compression in neural networks | |
CN112101525A (zh) | 一种通过nas设计神经网络的方法、装置和系统 | |
Sudharsan et al. | RCE-NN: a five-stage pipeline to execute neural networks (cnns) on resource-constrained iot edge devices | |
Cai et al. | Automl for architecting efficient and specialized neural networks | |
CN109445935A (zh) | 云计算环境下一种高性能大数据分析系统自适应配置方法 | |
CN112764893B (zh) | 数据处理方法和数据处理系统 | |
CN109961147B (zh) | 一种基于Q-Learning算法的自动化模型压缩方法 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
CN116796631A (zh) | 一种计及约束条件的锂电池寿命预测方法 | |
CN115168027A (zh) | 一种基于深度强化学习的算力资源度量方法 | |
CN113902108A (zh) | 一种量化位宽动态选择的神经网络加速硬件架构及方法 | |
CN116450486A (zh) | 多元异构计算系统内节点的建模方法、装置、设备及介质 | |
CN116680063A (zh) | 任务调度方法、装置、计算系统、电子设备和存储介质 | |
JP2021519454A (ja) | 並列性及びオンチップ・メモリを介した時間、空間及びエネルギー効率のよいニューラル推論 | |
CN116011681A (zh) | 一种气象数据预测方法、装置、存储介质及电子装置 | |
CN115170002A (zh) | 一种基于神经网络的保障能力评估方法及其应用 | |
CN115564987A (zh) | 一种基于元学习的图像分类模型的训练方法及应用 | |
Rehaiem et al. | A neural networks based approach for the real-time scheduling of reconfigurable embedded systems with minimization of power consumption | |
WO2021061172A1 (en) | System and method of executing neural networks | |
Jooya et al. | GPU design space exploration: NN-based models |
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 |