CN109800877A - 神经网络的参数调整方法、装置及设备 - Google Patents

神经网络的参数调整方法、装置及设备 Download PDF

Info

Publication number
CN109800877A
CN109800877A CN201910127149.9A CN201910127149A CN109800877A CN 109800877 A CN109800877 A CN 109800877A CN 201910127149 A CN201910127149 A CN 201910127149A CN 109800877 A CN109800877 A CN 109800877A
Authority
CN
China
Prior art keywords
layer
parameter
bit wide
network
decimal
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.)
Granted
Application number
CN201910127149.9A
Other languages
English (en)
Other versions
CN109800877B (zh
Inventor
孟玉
王玉伟
于潇宇
高剑林
朱建平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910127149.9A priority Critical patent/CN109800877B/zh
Publication of CN109800877A publication Critical patent/CN109800877A/zh
Application granted granted Critical
Publication of CN109800877B publication Critical patent/CN109800877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)

Abstract

本申请实施例公开了一种神经网络的参数调整方法、装置及设备,属于计算机技术领域。所述方法包括:获取已训练的神经网络的参数和训练样本,训练样本包括输入数据,且参数和输入数据为精度相同的浮点数;对于神经网络中的第i层网络,对第i层输入数据和第i层参数进行预定运算得到第一运算结果;将第i层输入数据和第i层参数分别转换为符合第i层网络的小数位宽的定点数,并对转换后的第i层输入数据和第i层参数进行预定运算得到第二运算结果;当第二运算结果与第一运算结果的误差小于误差阈值时,将转换后的第i层参数确定为第i层网络的目标参数。本申请实施例可以在保证神经网络的精度的前提下提高参数调整的效率。

Description

神经网络的参数调整方法、装置及设备
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种神经网络的参数调整方法、装置及设备。
背景技术
神经网络具有较高的识别准确度和较好的可并行性,近年来在图像识别、物体分类、模式识别等领域得到了广泛的应用。其中,神经网络的应用涉及训练和推理这两个阶段,训练是指利用海量的训练样本对神经网络中的参数进行训练;推理是指利用具有训练好的参数的神经网络对输入数据进行处理,得到推理结果。
由于训练阶段对数据精度的要求较高,且神经网络具有一定的健壮性,所以,可以降低推理阶段对数据精度的要求,以减少推理阶段所使用的硬件资源。相关技术中,服务器可以针对推理阶段的数据精度,在训练阶段重新训练神经网络的参数。例如,服务器先对神经网络的参数进行非线性变换和低位宽转换,得到低位宽变换参数;再通过神经网络反向过程获取该低位宽变换参数的待更新梯度值;最后根据该待更新梯度值对该参数进行更新。
由于重新训练神经网络时计算复杂度较高,所以,训练的耗时较长,难度较高,导致参数调整的效率较低。
发明内容
本申请实施例提供了一种神经网络的参数调整方法、装置及设备,用于解决针对推理阶段的数据精度重新训练神经网络的参数时,参数调整的效率较低的问题。所述技术方案如下:
一方面,提供了一种神经网络的参数调整方法,所述方法包括:
获取已训练的神经网络的参数和训练样本,所述训练样本包括输入数据,且所述参数和所述输入数据为精度相同的浮点数;
对于所述神经网络中的第i层网络,根据所述输入数据获取第i层输入数据,获取所述参数中的第i层参数,并对所述第i层输入数据和所述第i层参数进行预定运算得到第一运算结果,i为正整数;
将所述第i层输入数据和所述第i层参数分别转换为符合所述第i层网络的小数位宽的定点数,并对转换后的所述第i层输入数据和所述第i层参数进行所述预定运算得到第二运算结果,所述小数位宽用于指示定点数中的小数位的位数;
当所述第二运算结果与所述第一运算结果的误差小于误差阈值时,将转换后的所述第i层参数确定为所述第i层网络的目标参数。
一方面,提供了一种神经网络的参数调整装置,所述装置包括:
获取模块,用于获取已训练的神经网络的参数和训练样本,所述训练样本包括输入数据,且所述参数和所述输入数据为精度相同的浮点数;
运算模块,用于对于所述神经网络中的第i层网络,根据所述获取模块得到的所述输入数据获取第i层输入数据,获取所述参数中的第i层参数,并对所述第i层输入数据和所述第i层参数进行预定运算得到第一运算结果,i为正整数;
所述运算模块,还用于将所述第i层输入数据和所述第i层参数分别转换为符合所述第i层网络的小数位宽的定点数,并对转换后的所述第i层输入数据和所述第i层参数进行所述预定运算得到第二运算结果,所述小数位宽用于指示定点数中的小数位的位数;
确定模块,用于在所述运算模块得到的所述第二运算结果与所述第一运算结果的误差小于误差阈值时,将转换后的所述第i层参数确定为所述第i层网络的目标参数。
一方面,提供了一种神经网络的参数调整设备,所述神经网络的参数调整设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的神经网络的参数调整方法。
本申请实施例提供的技术方案的有益效果至少包括:
通过对浮点数格式的第i层输入数据和第i层参数进行预定运算得到第一运算结果,对定点数格式的第i层输入数据和第i层参数进行预定运算得到第二运算结果,当第二运算结果与第一运算结果之间的误差小于误差阈值时,将该第i层参数确定为第i层网络的目标参数,由于可以直接将每层网络的参数由浮点数转换为定点数,而不需要重新训练神经网络,所以,可以提高参数调整的效率。
另外,由于神经网络的层数比较深,对于噪声和精度损失不是很敏感,所以,单层网络的参数调整对神经网络最终的精度影响较小,从而可以在保证神经网络的精度的前提下提高参数调整的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据部分示例性实施例示出的一种神经网络的参数调整系统的结构示意图;
图2是本申请一个实施例提供的神经网络的参数调整方法的方法流程图;
图3是本申请另一实施例提供的神经网络的参数调整方法的方法流程图;
图4是本申请另一实施例提供的位宽调整单元的框图;
图5是本申请另一实施例提供的两次参数调整的框图;
图6是本申请另一实施例提供的神经网络的参数调整系统的框图;
图7是本申请一个实施例提供的神经网络的参数调整装置的结构框图;
图8是本申请一个实施例提供的终端的结构框图;
图9是本申请再一实施例提供的服务器的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面对本申请实施例涉及的名词进行解释。
定点数:定点数是小数点位置固定不变的数据。计算机通常事先约定小数点在数据中的固定位置,而不在数据中标示出小数点。本实施例中,可以用于小数位宽来约定小数点在数据中的固定位置,该小数位宽用于指示定点数中的小数位的位数。比如小数位宽为5,则指示数据中小数位的位数为5,即小数点之后有5位数字。
定点数的格式可以包括多种,比如int64格式、int32格式、int8格式等等,其中int之后的数字代表该格式的定点数所占用的比特(bit)数。
浮点数:浮点数是小数点位置不固定的数据。浮点数包括小数和指数,从而通过指数来达到浮动小数点的效果。比如,123.45可以表示为1.2345×102,通过指数2来表示小数点之后有2位数字;12.345可以表示为1.2345×103,通过指数3来表示小数点之后有3位数字。
浮点数的格式可以包括多种,比如双精度浮点FP64格式、单精度浮点FP32格式、半精度浮点FP16格式等等,其中FP之后的数字代表该格式的浮点数所占用的比特数。
需要说明的是,双精度浮点FP64格式包括1个符号位、11个指数位和52个小数位;单精度浮点FP32格式包括1个符号位、8个指数位和23个小数位;半精度浮点FP16格式包括1个符号位、5个指数位和10个小数位。
由于GPU(Graphics Processing Unit,图形处理器)具有精度高、并行性好的特点,所以,神经网络的训练通常由GPU完成,从而通过GPU快速训练出神经网络的参数。在神经网络训练完成后,可以在推理平台应用该神经网络。由于神经网络具有一定的健壮性,且推理平台对数据精度的要求没有训练阶段的数据精度高,所以,推理平台呈现多样化的发展趋势,比如推理平台可以为CPU(Central Processing Unit,中央处理器)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,特定用途集成电路)等多种平台共存的平台。
为了减少神经网络在推理阶段使用时所占用的硬件资源,提升神经网络在推理阶段的性能,人们开始尝试降低神经网络中的计算单元的精度,比如,设计基于单精度浮点FP32格式、半精度浮点FP16格式、定点int16格式或定点int8格式、二值网络格式的计算单元,此时还需要将神经网络中的高精度参数转换为低精度参数,以适用于该低精度的计算单元。
目前,将神经网络的高精度参数转换成低精度参数的常用做法是:针对推理平台的精度要求重新训练神经网络,但其代价是训练时间较长,且训练难度较高,导致训练的功耗较高,也就使得参数调整的效率较低。另外,考虑到训练平台和推理平台由不同的厂家提供,所以,需要不同厂家来协调组织神经网络的重新训练,使得训练往往停留在纸面上。
请参考图1,本实施例中,可以先根据已训练的神经网络的参数、训练样本和位宽调整参数算法预获取每层网络的参数,再根据位宽调整加速引擎来选择参数调整效果不好的网络层,基于位宽调整区间重新端对端地对这些网络层的参数进行调整,再根据调整后的参数、训练样本和位宽调整参数算法重新预获取每层网络的参数,直至每层网络的参数调整效果较好时停止。之后,可以在推理平台使用该神经网络,即,将推理平台中的现网数据输入该神经网络,以得到数据结果,比如,数据结果是图片识别、图片分类等等。其中,位宽调整参数算法用于确定调整每层网络的参数,位宽调整加速引擎用于选择参数调整效果不好的网络层,位宽调整区间用于指示本层网络相对于上层网络的参数的小数位宽的调整范围,详见下文中的描述。
由于可以直接将每层网络的参数由浮点数转换为定点数,而不需要重新训练神经网络,所以,可以提高参数调整的效率。另外,由于神经网络的层数比较深,对于噪声和精度损失不是很敏感,所以,单层网络的参数调整对神经网络最终的精度影响较小,从而可以在保证神经网络的精度的前提下提高参数调整的效率。
由于本实施例可以降低神经网络的参数调整的功耗,所以,本实施例可以应用于对于功耗敏感的场景中,比如,本实施例可以应用于诸如终端之类的端侧设备中。其中,终端可以是手机、计算机、平板电脑、可穿戴设备、无人机等等,本实施例不作限定。当然,本实施例还可以应用于诸如服务器之类的云侧设备中,本实施例不作限定。下文将端侧设备和云侧设备统称为设备。
请参考图2,其示出了本申请一个实施例提供的神经网络的参数调整方法的方法流程图。该神经网络的参数调整方法,包括:
步骤201,获取已训练的神经网络的参数和训练样本,该训练样本包括输入数据,且该参数和该输入数据为精度相同的浮点数。
神经网络是已经在训练平台利用海量的训练样本训练好的神经网络,所以,神经网络的参数是已知数。由于神经网络处理输入数据时,通常涉及到卷积运算和偏置运算,即,先将输入数据和权重参数(weight)进行卷积运算,得到卷积运算结果,再将卷积运算结果加上偏置参数(bias),得到输出结果,所以,神经网络的参数包括权重参数和偏置参数。其中,训练样本是在训练阶段训练神经网络的样本,且训练样本中包含输入数据。
可选的,设备可以获取至少一个训练样本。本实施例中,设备获取的训练样本的数量可以是百或千数量级的,远小于训练阶段的海量训练样本的数量级。
需要说明的是,本实施例中的参数和输入数据为精度相同的浮点数。比如,参数和输入数据均为FP64格式的浮点数,或者,参数和输入数据均为FP32格式的浮点数,或者,参数和输入数据均为FP16格式的浮点数。
假设神经网络包括n层网络,下面以调整第i层网络的参数为例进行说明,i的取值为1至n,且i和n均为正整数。即先设置i为1,执行步骤202-204,之后将i更新为i+1,继续执行步骤202-204,直至得到第n层网络的参数后停止。
步骤202,对于神经网络中的第i层网络,根据该输入数据获取第i层输入数据,获取该参数中的第i层参数,并对第i层输入数据和第i层参数进行预定运算得到第一运算结果。
当i为1时,第i层输入数据为训练样本中的输入数据,此时设备可以直接获取训练样本中的输入数据;当i大于1时,第i层输入数据为第i-1层网络的输出数据,此时设备可以直接获取第i-1层网络的输出数据。
由于神经网络的参数包括每层网络的参数,所以,设备可以直接获取到参数中的第i层参数。
在一种可能的实现方式中,预定算法包括步骤201中所说的卷积运算和偏置运算,此时,设备先将第i层输入数据和第i层参数中的权重参数进行卷积运算,将卷积运算结果加上第i层参数中的偏置参数,得到第一运算结果。
需要说明的是,由于第i层输入数据和第i层参数均为浮点数,所以,第一运算结果也为浮点数。
步骤203,将第i层输入数据和第i层参数分别转换为符合第i层网络的小数位宽的定点数,并对转换后的第i层输入数据和第i层参数进行预定运算得到第二运算结果。
小数位宽用于指示定点数中的小数位的位数。
本实施例中,设备可以有多种确定第i层网络的小数位宽的实现方式,下面以其中的三种实现方式为例进行说明。
在第一种实现方式中,设备可以预设默认的小数位宽,将该默认的小数位宽作为第i层网络的小数位宽。其中,该默认的小数位宽可以是经验值。
在第二种实现方式中,设备可以确定第i层输入数据中的最大值和最小值,根据该最大值和最小值确定第i层网络的小数位宽。
在第三种实现方式中,设备可以确定第i层输入数据中的数据分布,根据分布密度较大的数据区间确定第i层网络的小数位宽。
在确定了第i层网络的小数位宽后,设备可以对第i层输入数据和第i层参数分别进行转换,使得转换后的第i层输入数据和第i层参数均为定点数,且转换后的第i层输入数据中的小数位的位数等于该小数位宽所指示的小数位的位数,转换后的第i层参数中的小数位的位数等于该小数位宽所指示的小数位的位数。
需要说明的是,第i层输入数据和第i层参数可以由设备进行转换,或者,由于第i层参数可以由外部导入设备,所以,可选的,还可以在导入该第i层参数之前对该第i层参数进行转换,设备接收到的第i层参数已经是转换后的定点数,此时,设备只需要对第i层输入数据进行转换即可。
在得到转换后的第i层输入数据和第i层参数后,设备可以采用预定算法计算第二运算结果,计算流程详见步骤202中的描述,此处不作赘述。
步骤204,当第二运算结果与第一运算结果的误差小于误差阈值时,将转换后的第i层参数确定为第i层网络的目标参数。
设备计算第二运算结果相对于第一运算结果的误差,再将该误差与预设的误差阈值进行比较,当该误差小于该误差阈值时,说明转换后的第i层参数对输入数据的处理的影响在可接受的误差范围内,此时可以将该转换后的第i层参数确定为第i层网络最终的目标参数;当该误差大于或等于该误差阈值时,重新调整该第i层参数,详见下文中的描述。其中,误差可以是均值和方差中的至少一种,本实施例不作限定。
综上所述,本申请实施例提供的神经网络的参数调整方法,通过对浮点数格式的第i层输入数据和第i层参数进行预定运算得到第一运算结果,对定点数格式的第i层输入数据和第i层参数进行预定运算得到第二运算结果,当第二运算结果与第一运算结果之间的误差小于误差阈值时,将该第i层参数确定为第i层网络的目标参数,由于可以直接将每层网络的参数由浮点数转换为定点数,而不需要重新训练神经网络,所以,可以提高参数调整的效率。
另外,由于神经网络的层数比较深,对于噪声和精度损失不是很敏感,所以,单层网络的参数调整对神经网络最终的精度影响较小,从而可以在保证神经网络的精度的前提下提高参数调整的效率。
请参考图3,其示出了本申请另一实施例提供的神经网络的参数调整方法的方法流程图。该神经网络的参数调整方法,包括:
步骤301,获取已训练的神经网络的参数和训练样本,该训练样本包括输入数据,且该参数和该输入数据为精度相同的浮点数。
其中,参数、训练样本、输入数据的解释详见步骤201中的描述。
假设神经网络包括n层网络,下面以调整第i层网络的参数为例进行说明,i的取值为1至n,且i和n均为正整数。即当1≤i<n时,执行步骤301-303,当此时的误差小于误差阈值时执行步骤304,之后将i更新为i+1,继续执行步骤301-303,当此时的误差大于或等于误差阈值时执行步骤305-307,之后将i更新为i+1,继续执行步骤301-303;当i=n时,执行步骤301-303,当此时的误差小于误差阈值时执行步骤304,当此时的误差大于或等于误差阈值时执行步骤308-310。
步骤302,对于神经网络中的第i层网络,根据该输入数据获取第i层输入数据,获取该参数中的第i层参数,并对第i层输入数据和第i层参数进行预定运算得到第一运算结果。
其中,获取第i层输入数据、第i层参数和第一运算结果的流程详见步骤202中的描述。
步骤303,将第i层输入数据和第i层参数分别转换为符合第i层网络的小数位宽的定点数,并对转换后的第i层输入数据和第i层参数进行预定运算得到第二运算结果。
在确定了第i层网络的小数位宽后,设备可以对第i层输入数据和第i层参数分别进行转换,使得转换后的第i层输入数据和第i层参数均为定点数,且转换后的第i层输入数据中的小数位的位数等于该小数位宽所指示的小数位的位数,转换后的第i层参数中的小数位的位数等于该小数位宽所指示的小数位的位数。
需要说明的是,第i层输入数据和第i层参数可以由设备进行转换,或者,由于第i层参数可以由外部导入设备,所以,可选的,还可以在导入该第i层参数之前对该第i层参数进行转换,设备接收到的第i层参数已经是转换后的定点数,此时,设备只需要对第i层输入数据进行转换即可。
在转换第i层输入数据时,当i=1时,可以计算第1层输入数据的小数位宽相对于第1层网络的小数位宽的位宽变化量k,从位宽调整单元中选择k个级联的移位单元,每个移位单元用于对数据进行一个小数位宽的调整,将第1层输入数据输入k个级联的移位单元,得到转换后的第i层输入数据。其中,k为正整数。可选的,位宽调整单元还可以包括选择器,以选择k个级联的移位单元。
比如,当k为3时,设备从位宽调整单元中选择3个级联的移位单元,则将第1层输入数据输入第1个移位单元后,该第1个移位单元对该第1层输入数据进行一个小数位宽的调整,将调整后的数据输出给第2个移位单元,该第2个移位单元对该数据进行一个小数位宽的调整,将调整后的数据输出给第3个移位单元,该第3个移位单元对该数据进行一个小数位宽的调整,得到转换后的第1层输入数据。
通常,在将浮点数转换为定点数时,通常不会大范围调整小数位宽,所以,不需要设置与定点数的位数相等的数量个移位单元,而只需要设置少量的移位单元即可满足神经网络的应用,从而可以在底层加速平台上,利用少量的代价完成浮点数到定点数的转换。比如,以定点数为int16格式为例,则不需要设置16个移位单元,而只需要设置4个移位单元即可满足神经网络的应用,使得位宽调整单元占用的数量为原来的1/4,请参考图4。
需要说明的是,由于进行位宽调整时,可能需要增大小数位宽,也可能需要减小小数位宽,所以,在位宽调整单元还可以包括用于增大小数位宽的移位单元(也称左移的移位单元)和用于减小小数位宽的移位单元(也称为右移的移位单元),则在从位宽调整单元中选择k个级联的移位单元时,还需要先确定小数位宽的调整方向,再选择该调整方向上的k个级联的移位单元。
当i>1时,即当第i层输入数据为第i-1层输出数据时,可以获取第i层网络的小数位宽相对于第i-1层网络的小数位宽的位宽变化量k;从位宽调整单元中选择k个级联的移位单元,每个移位单元用于对数据进行一个小数位宽的调整;将第i层输入数据输入k个级联的移位单元,得到转换后的第i层输入数据。比如,第i-1层输入数据的小数位宽为7,第i层网络的小数位宽为5,则位宽变化量为减小2个小数位宽,也即小数点右移2位,此时可以选择右移的2个级联的移位单元。
在得到转换后的第i层输入数据和第i层参数后,设备可以采用预定算法计算第二运算结果。由于第i层输入数据和第i层参数都是定点数,而定点数在卷积运算后小数位宽会膨胀,所以,设备还需要对卷积运算结果进行调整。此时,对转换后的第i层输入数据和第i层参数进行预定运算得到第二运算结果,包括:对转换后的第i层输入数据和第i层参数进行卷积运算,得到卷积运算结果,卷积运算结果的小数位宽大于第i层网络的小数位宽;将卷积运算结果调整为符合第i层网络的小数位宽的中间数据;对中间数据进行偏置运算,得到第二运算结果。
比如,第i层输入数据和第i层参数的小数位宽均为2,则卷积运算结果的小数位宽为4,此时设备需要截断卷积运算结果中的最后两位小数,使得得到的中间数据的小数位宽为2。
步骤304,当第二运算结果与第一运算结果的误差小于误差阈值时,将转换后的第i层参数确定为第i层网络的目标参数。
设备计算第二运算结果相对于第一运算结果的误差,再将该误差与预设的误差阈值进行比较,当该误差小于该误差阈值时,说明转换后的第i层参数对输入数据的处理的影响在可接受的误差范围内,此时可以将该转换后的第i层参数确定为第i层网络最终的目标参数;当该误差大于或等于该误差阈值时,重新调整该第i层参数,详见下文中的描述。其中,误差可以是均值和方差中的至少一种,本实施例不作限定。
需要说明的是,设备可以直接存储第i层网络的目标参数,此时,设备中存储有各层网络的目标参数。或者,可选的,设备可以计算第i层网络的目标参数相对于第i-1层网络的目标参数的位宽变化量,存储该位宽变化量,此时,设备中存储有第1层网络的小数位宽以及每相邻两层网络的小数位宽的位宽变化量。请参考表一,其中将第i层网络的位宽调整区间称为delta_i,第i层参数的小数位宽称为w_i。
表一
网络的层数 位宽调整区间 参数的小数位宽
1 delta_1 w_1
2 delta_2 w_2
n delta_n w_n
在步骤305中,当第i层网络不是神经网络中的最后一层网络,且第二运算结果与第一运算结果的误差大于或等于误差阈值时,增大第i层网络的小数位宽。
当误差大于或等于误差阈值时,说明转换后的第i层参数对输入数据的处理的影响不在可接受的误差范围内,定点数的精度太低,此时可以增加小数位宽,以提高定点数的精度。
在增加小数位宽时,设备可以在原来的小数位宽的基础上增加预设数值,比如1、2、3等等,本实施例不作限定。
在步骤306中,再次将第i层输入数据和第i层参数分别转换为符合增大后的第i层网络的小数位宽的定点数,并对再次转换后的第i层输入数据和第i层参数进行预定运算得到第二运算结果。
设备可以利用步骤305中计算得到的小数位宽更新第i层网络原来的小数位宽,再次执行步骤303来计算第二运算结果,计算过程详见步骤303中的描述。
在步骤307中,当再次得到的第二运算结果与第一运算结果的误差小于误差阈值时,将再次转换后的第i层参数确定为第i层网络的目标参数。
当再次得到的第二运算结果与第一运算结果的误差小于误差阈值时,将再次转换后的的第i层参数确定为第i层网络的目标参数;当再次得到的第二运算结果与第一运算结果的误差大于或等于误差阈值时,循环执行步骤305-306,直至再次得到的第二运算结果与第一运算结果的误差小于误差阈值时停止。
在步骤308中,若神经网络中最后一层网络的误差大于或等于误差阈值,则从所有的误差中选择数值最大的m个误差。
设备可以对所有层网络产生的误差进行排序,并从中选择数值最大的m个误差,m为正整数。这里的m可以是经验值,也可以是根据预定算法计算得到的数值,本实施例不作限定。
在步骤309中,对于m个误差中的每个误差,确定产生误差的第j层网络的位宽调整区间,并根据位宽调整区间和第j-1层网络的小数位宽增大第j层网络的小数位宽。
位宽调整区间包括至少一个位宽调整数据,该位宽调整数据用于指示本层网络相对于上层网络的小数位宽的位宽变化量。比如,第j-1层网络的小数位宽为7,第j层网络的位宽调整区间为[-2,2],则第j层网络的小数位宽的范围为[9,5]。其中,j≥2。
可选的,根据位宽调整区间和第j-1层网络的小数位宽增大第j层网络的小数位宽,包括:从位宽调整区间中选择一个位宽调整数据;将第j-1层网络的小数位宽和位宽调整数据相加或相减,得到第j层网络的小数位宽,更新后的第j层网络的小数位宽大于更新前的第j层网络的小数位宽。
其中,选择的位宽调整数据需要满足下述条件:更新后的第j层网络的小数位宽大于更新前的第j层网络的小数位宽。比如,第j-1层网络的小数位宽为7,更新前选择的位宽调整数据为1,则更新前第j层网络的小数位宽为6,那么可选择的位宽调整数据为[-2,0],使得更新后的第j层网络的小数位宽的取值区间为[9,7],大于更新前的第j层网络的小数位宽6。
本实施例中,可以将步骤303中获取的小数位宽称为参数预获取步骤,即上述实施环境中所说的位宽调整参数算法获取每层网络的参数;可以将对上述m个误差对应的网络层的参数的调整称为端到端调整,即上述实施环境中所述的位宽调整加速引擎来选择参数调整效果不好的网络层,请参考图5,其示出了参数调整的框图。
在步骤310中,根据输入数据、参数和神经网络中每层网络的小数位宽重新计算每层网络的目标参数。
在更新了m个误差中每个误差对应的网络层的参数后,设备再次执行本实施例提供的方法,以重新计算每层网络的目标参数。
需要说明的第一点是,当对浮点数进行卷积运算时,需要针对不同格式的浮点数设计不同的卷积运算单元,而对定点数进行卷积运算时,由于计算机并不体现小数位,所以,无论定点数的小数位宽是多少,都可以通过一个卷积运算单元进行卷积运算,在得到卷积运算结果后再确定小数位,从而实现利用一个卷积运算单元循环进行所有网络层的卷积运算,以达到归一化计算单元的效果。
需要说明的第二点是,设备可以包括两个位宽调整单元,其中,位宽调整单元1用于根据小数位宽,将输入数据转换成定点数;位宽调整单元2用于根据参数的小数位宽对卷积运算结果进行调整,使得调整后的卷积运算结果的小数位宽等于参数的小数位宽。
由于本实施例中具有归一化的计算单元,且位宽调整单元的数量较少,可以最大程度地减少底层硬件资源的消耗。另外,本实施例的核心部分由位宽调整参数算法和位宽调整加速引擎两部分构成,两者协同工作。即,先利用位宽调整参数算法,基于部分训练样本以及参数进行参数预获取和端到端参数调整,再结合位宽调整加速引擎支持的位宽调整区间来快速调整参数,相比于重新训练神经网络来调整参数的方案来说,计算复杂度大幅降低,普通计算机几分钟之内即可完成参数调整。
请参考图6,其示出了神经网络的参数调整系统的框图,其中,输入缓存单元用于缓存输入数据,输出缓存单元用于缓存输出数据,参数缓存单元用于缓存权重参数和偏置参数,位宽调整加速引擎用于根据轻量的位宽调整参数算法获取每层网络的参数,再驱动位宽调整单元进行参数调整。可选的,神经网络的参数调整系统还可以包括池化单元等其他计算单元,本实施例不作限定。
综上所述,本申请实施例提供的神经网络的参数调整方法,通过对浮点数格式的第i层输入数据和第i层参数进行预定运算得到第一运算结果,对定点数格式的第i层输入数据和第i层参数进行预定运算得到第二运算结果,当第二运算结果与第一运算结果之间的误差小于误差阈值时,将该第i层参数确定为第i层网络的目标参数,由于可以直接将每层网络的参数由浮点数转换为定点数,而不需要重新训练神经网络,所以,可以提高参数调整的效率。
另外,由于神经网络的层数比较深,对于噪声和精度损失不是很敏感,所以,单层网络的参数调整对神经网络最终的精度影响较小,从而可以在保证神经网络的精度的前提下提高参数调整的效率。
由于本实施例中具有归一化的计算单元,且位宽调整单元的数量较少,可以最大程度地减少底层硬件资源的消耗。
在将浮点数转换为定点数时,通常不会大范围调整小数位宽,所以,不需要设置与定点数的位数相等的数量个移位单元,而只需要设置少量的移位单元即可满足神经网络的应用,从而可以在底层加速平台上,利用少量的代价完成浮点数到定点数的转换。
请参考图7,其示出了本申请一个实施例提供的神经网络的参数调整装置的结构框图。该神经网络的参数调整装置,包括:
获取模块701,用于获取已训练的神经网络的参数和训练样本,训练样本包括输入数据,且参数和输入数据为精度相同的浮点数;
运算模块702,用于对于神经网络中的第i层网络,根据获取模块701得到的输入数据获取第i层输入数据,获取参数中的第i层参数,并对第i层输入数据和第i层参数进行预定运算得到第一运算结果,i为正整数;
运算模块702,还用于将第i层输入数据和第i层参数分别转换为符合第i层网络的小数位宽的定点数,并对转换后的第i层输入数据和第i层参数进行预定运算得到第二运算结果,小数位宽用于指示定点数中的小数位的位数;
确定模块703,用于在运算模块702得到的第二运算结果与第一运算结果的误差小于误差阈值时,将转换后的第i层参数确定为第i层网络的目标参数。
在一种可能的实现方式中,该装置还包括:
选择模块,用于在神经网络中最后一层网络的误差大于或等于误差阈值时,从所有的误差中选择数值最大的m个误差,m为正整数;
第一调整模块,用于对于m个误差中的每个误差,确定产生选择模块选择的误差的第j层网络的位宽调整区间,并根据位宽调整区间和第j-1层网络的小数位宽增大第j层网络的小数位宽,j≥2;
计算模块,用于根据输入数据、参数和神经网络中每层网络的小数位宽重新计算每层网络的目标参数。
在一种可能的实现方式中,第一调整模块,还用于:
从位宽调整区间中选择一个位宽调整数据;
将第j-1层网络的小数位宽和位宽调整数据相加或相减,得到第j层网络的小数位宽,更新后的第j层网络的小数位宽大于更新前的第j层网络的小数位宽。
在一种可能的实现方式中,当第i层网络不是神经网络中的最后一层网络时,该装置还包括:
第二调整模块,用于在第二运算结果与第一运算结果的误差大于或等于误差阈值时,增大第i层网络的小数位宽;
运算模块702,还用于再次将第i层输入数据和第i层参数分别转换为符合增大后的第i层网络的小数位宽的定点数,并对再次转换后的第i层输入数据和第i层参数进行预定运算得到第二运算结果;
确定模块703,还用于在再次得到的第二运算结果与第一运算结果的误差小于误差阈值时,将再次转换后的第i层参数确定为第i层网络的目标参数。
在一种可能的实现方式中,当预定运算包括卷积运算和偏置运算时,运算模块702,还用于:
对转换后的第i层输入数据和第i层参数进行卷积运算,得到卷积运算结果,卷积运算结果的小数位宽大于第i层网络的小数位宽;
将卷积运算结果调整为符合第i层网络的小数位宽的中间数据;
对中间数据进行偏置运算,得到第二运算结果。
在一种可能的实现方式中,当第i层输入数据为第i-1层输出数据时,运算模块702,还用于:
获取第i层网络的小数位宽相对于第i-1层网络的小数位宽的位宽变化量k,k为正整数;
从位宽调整单元中选择k个级联的移位单元,每个移位单元用于对数据进行一个小数位宽的调整;
将第i层输入数据输入k个级联的移位单元,得到转换后的第i层输入数据。
综上所述,本申请实施例提供的神经网络的参数调整装置,通过对浮点数格式的第i层输入数据和第i层参数进行预定运算得到第一运算结果,对定点数格式的第i层输入数据和第i层参数进行预定运算得到第二运算结果,当第二运算结果与第一运算结果之间的误差小于误差阈值时,将该第i层参数确定为第i层网络的目标参数,由于可以直接将每层网络的参数由浮点数转换为定点数,而不需要重新训练神经网络,所以,可以提高参数调整的效率。
另外,由于神经网络的层数比较深,对于噪声和精度损失不是很敏感,所以,单层网络的参数调整对神经网络最终的精度影响较小,从而可以在保证神经网络的精度的前提下提高参数调整的效率。
由于本实施例中具有归一化的计算单元,且位宽调整单元的数量较少,可以最大程度地减少底层硬件资源的消耗。
在将浮点数转换为定点数时,通常不会大范围调整小数位宽,所以,不需要设置与定点数的位数相等的数量个移位单元,而只需要设置少量的移位单元即可满足神经网络的应用,从而可以在底层加速平台上,利用少量的代价完成浮点数到定点数的转换。
图8示出了本申请一个示例性实施例提供的终端800的结构框图。该终端800可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中方法实施例提供的神经网络的参数调整方法。
在一些实施例中,终端800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。
外围设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏805用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置终端800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位终端800的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件808可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源809用于为终端800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以终端800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制触摸显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测终端800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端800的3D动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在终端800的侧边框和/或触摸显示屏805的下层。当压力传感器813设置在终端800的侧边框时,可以检测用户对终端800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在触摸显示屏805的下层时,由处理器801根据用户对触摸显示屏805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置终端800的正面、背面或侧面。当终端800上设置有物理按键或厂商Logo时,指纹传感器814可以与物理按键或厂商Logo集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制触摸显示屏805的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏805的显示亮度;当环境光强度较低时,调低触摸显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在终端800的前面板。接近传感器816用于采集用户与终端800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端800的正面之间的距离逐渐变小时,由处理器801控制触摸显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端800的正面之间的距离逐渐变大时,由处理器801控制触摸显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请还提供了一种服务器,该服务器包括处理器和存储器,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的神经网络的参数调整方法。需要说明的是,该服务器可以是如下图9所提供的服务器。
请参考图9,其示出了本申请一个示例性实施例提供的服务器的结构示意图。具体来讲:所述服务器900包括中央处理单元(CPU)901、包括随机存取存储器(RAM)902和只读存储器(ROM)903的系统存储器904,以及连接系统存储器904和中央处理单元901的系统总线905。所述服务器900还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)906,和用于存储操作系统913、应用程序914和其他程序模块915的大容量存储设备907。
所述基本输入/输出系统906包括有用于显示信息的显示器908和用于用户输入信息的诸如鼠标、键盘之类的输入设备909。其中所述显示器908和输入设备909都通过连接到系统总线905的输入输出控制器910连接到中央处理单元901。所述基本输入/输出系统906还可以包括输入输出控制器910以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器910还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备907通过连接到系统总线905的大容量存储控制器(未示出)连接到中央处理单元901。所述大容量存储设备907及其相关联的计算机可读存储介质为服务器900提供非易失性存储。也就是说,所述大容量存储设备907可以包括诸如硬盘或者CD-ROI驱动器之类的计算机可读存储介质(未示出)。
不失一般性,所述计算机可读存储介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器904和大容量存储设备907可以统称为存储器。
存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元901执行,一个或多个程序包含用于实现上述神经网络的参数调整方法的指令,中央处理单元901执行该一个或多个程序实现上述各个方法实施例提供的神经网络的参数调整方法。
根据本发明的各种实施例,所述服务器900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器900可以通过连接在所述系统总线905上的网络接口单元911连接到网络912,或者说,也可以使用网络接口单元911来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本发明实施例提供的神经网络的参数调整方法中由服务器所执行的步骤。
本申请实施例还提供一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器910加载并执行以实现如上所述的神经网络的参数调整方法。
本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的神经网络的参数调整方法。
本申请一个实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述的神经网络的参数调整方法。
本申请一个实施例提供了一种神经网络的参数调整设备,所述神经网络的参数调整设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的神经网络的参数调整方法。
需要说明的是:上述实施例提供的神经网络的参数调整装置在进行神经网络的参数调整时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将神经网络的参数调整装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的神经网络的参数调整装置与神经网络的参数调整方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

Claims (13)

1.一种神经网络的参数调整方法,其特征在于,所述方法包括:
获取已训练的神经网络的参数和训练样本,所述训练样本包括输入数据,且所述参数和所述输入数据为精度相同的浮点数;
对于所述神经网络中的第i层网络,根据所述输入数据获取第i层输入数据,获取所述参数中的第i层参数,并对所述第i层输入数据和所述第i层参数进行预定运算得到第一运算结果,i为正整数;
将所述第i层输入数据和所述第i层参数分别转换为符合所述第i层网络的小数位宽的定点数,并对转换后的所述第i层输入数据和所述第i层参数进行所述预定运算得到第二运算结果,所述小数位宽用于指示定点数中的小数位的位数;
当所述第二运算结果与所述第一运算结果的误差小于误差阈值时,将转换后的所述第i层参数确定为所述第i层网络的目标参数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述神经网络中最后一层网络的误差大于或等于所述误差阈值,则从所有的误差中选择数值最大的m个误差,m为正整数;
对于所述m个误差中的每个误差,确定产生所述误差的第j层网络的位宽调整区间,并根据所述位宽调整区间和第j-1层网络的小数位宽增大所述第j层网络的小数位宽,j≥2;
根据所述输入数据、所述参数和所述神经网络中每层网络的小数位宽重新计算每层网络的目标参数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述位宽调整区间和第j-1层网络的小数位宽增大所述第j层网络的小数位宽,包括:
从所述位宽调整区间中选择一个位宽调整数据;
将所述第j-1层网络的小数位宽和所述位宽调整数据相加或相减,得到所述第j层网络的小数位宽,更新后的所述第j层网络的小数位宽大于更新前的所述第j层网络的小数位宽。
4.根据权利要求1所述的方法,其特征在于,当所述第i层网络不是所述神经网络中的最后一层网络时,所述方法还包括:
若所述第二运算结果与所述第一运算结果的误差大于或等于所述误差阈值,则增大所述第i层网络的小数位宽;
再次将所述第i层输入数据和所述第i层参数分别转换为符合增大后的所述第i层网络的小数位宽的定点数,并对再次转换后的所述第i层输入数据和所述第i层参数进行所述预定运算得到第二运算结果;
当再次得到的所述第二运算结果与所述第一运算结果的误差小于所述误差阈值时,将再次转换后的所述第i层参数确定为所述第i层网络的目标参数。
5.根据权利要求1至4任一所述的方法,其特征在于,当所述预定运算包括卷积运算和偏置运算时,所述对转换后的所述第i层输入数据和所述第i层参数进行所述预定运算得到第二运算结果,包括:
对转换后的所述第i层输入数据和所述第i层参数进行所述卷积运算,得到卷积运算结果,所述卷积运算结果的小数位宽大于所述第i层网络的小数位宽;
将所述卷积运算结果调整为符合所述第i层网络的小数位宽的中间数据;
对所述中间数据进行所述偏置运算,得到所述第二运算结果。
6.根据权利要求1至4任一所述的方法,其特征在于,当所述第i层输入数据为第i-1层输出数据时,所述将所述第i层输入数据转换为符合所述第i层网络的小数位宽的定点数,包括:
获取所述第i层网络的小数位宽相对于所述第i-1层网络的小数位宽的位宽变化量k,k为正整数;
从位宽调整单元中选择k个级联的移位单元,每个移位单元用于对数据进行一个小数位宽的调整;
将所述第i层输入数据输入所述k个级联的移位单元,得到转换后的所述第i层输入数据。
7.一种神经网络的参数调整装置,其特征在于,所述装置包括:
获取模块,用于获取已训练的神经网络的参数和训练样本,所述训练样本包括输入数据,且所述参数和所述输入数据为精度相同的浮点数;
运算模块,用于对于所述神经网络中的第i层网络,根据所述获取模块得到的所述输入数据获取第i层输入数据,获取所述参数中的第i层参数,并对所述第i层输入数据和所述第i层参数进行预定运算得到第一运算结果,i为正整数;
所述运算模块,还用于将所述第i层输入数据和所述第i层参数分别转换为符合所述第i层网络的小数位宽的定点数,并对转换后的所述第i层输入数据和所述第i层参数进行所述预定运算得到第二运算结果,所述小数位宽用于指示定点数中的小数位的位数;
确定模块,用于在所述运算模块得到的所述第二运算结果与所述第一运算结果的误差小于误差阈值时,将转换后的所述第i层参数确定为所述第i层网络的目标参数。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
选择模块,用于在所述神经网络中最后一层网络的误差大于或等于所述误差阈值时,从所有的误差中选择数值最大的m个误差,m为正整数;
第一调整模块,用于对于所述m个误差中的每个误差,确定产生所述选择模块选择的所述误差的第j层网络的位宽调整区间,并根据所述位宽调整区间和第j-1层网络的小数位宽增大所述第j层网络的小数位宽,j≥2;
计算模块,用于根据所述输入数据、所述参数和所述神经网络中每层网络的小数位宽重新计算每层网络的目标参数。
9.根据权利要求8所述的装置,其特征在于,所述第一调整模块,还用于:
从所述位宽调整区间中选择一个位宽调整数据;
将所述第j-1层网络的小数位宽和所述位宽调整数据相加或相减,得到所述第j层网络的小数位宽,更新后的所述第j层网络的小数位宽大于更新前的所述第j层网络的小数位宽。
10.根据权利要求7所述的装置,其特征在于,当所述第i层网络不是所述神经网络中的最后一层网络时,所述装置还包括:
第二调整模块,用于在所述第二运算结果与所述第一运算结果的误差大于或等于所述误差阈值时,增大所述第i层网络的小数位宽;
所述运算模块,还用于再次将所述第i层输入数据和所述第i层参数分别转换为符合增大后的所述第i层网络的小数位宽的定点数,并对再次转换后的所述第i层输入数据和所述第i层参数进行所述预定运算得到第二运算结果;
所述确定模块,还用于在再次得到的所述第二运算结果与所述第一运算结果的误差小于所述误差阈值时,将再次转换后的所述第i层参数确定为所述第i层网络的目标参数。
11.根据权利要求7至10任一所述的装置,其特征在于,当所述预定运算包括卷积运算和偏置运算时,所述运算模块,还用于:
对转换后的所述第i层输入数据和所述第i层参数进行所述卷积运算,得到卷积运算结果,所述卷积运算结果的小数位宽大于所述第i层网络的小数位宽;
将所述卷积运算结果调整为符合所述第i层网络的小数位宽的中间数据;
对所述中间数据进行所述偏置运算,得到所述第二运算结果。
12.根据权利要求7至10任一所述的装置,其特征在于,当所述第i层输入数据为第i-1层输出数据时,所述运算模块,还用于:
获取所述第i层网络的小数位宽相对于所述第i-1层网络的小数位宽的位宽变化量k,k为正整数;
从位宽调整单元中选择k个级联的移位单元,每个移位单元用于对数据进行一个小数位宽的调整;
将所述第i层输入数据输入所述k个级联的移位单元,得到转换后的所述第i层输入数据。
13.一种神经网络的参数调整设备,其特征在于,所述神经网络的参数调整设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至6任一所述的神经网络的参数调整方法。
CN201910127149.9A 2019-02-20 2019-02-20 神经网络的参数调整方法、装置及设备 Active CN109800877B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910127149.9A CN109800877B (zh) 2019-02-20 2019-02-20 神经网络的参数调整方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910127149.9A CN109800877B (zh) 2019-02-20 2019-02-20 神经网络的参数调整方法、装置及设备

Publications (2)

Publication Number Publication Date
CN109800877A true CN109800877A (zh) 2019-05-24
CN109800877B CN109800877B (zh) 2022-12-30

Family

ID=66562255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910127149.9A Active CN109800877B (zh) 2019-02-20 2019-02-20 神经网络的参数调整方法、装置及设备

Country Status (1)

Country Link
CN (1) CN109800877B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110135568A (zh) * 2019-05-28 2019-08-16 赵恒锐 一种应用有界线性整流单元的全整数神经网络系统
CN110852434A (zh) * 2019-09-30 2020-02-28 成都恒创新星科技有限公司 基于低精度浮点数的cnn量化方法、前向计算方法及装置
CN110852416A (zh) * 2019-09-30 2020-02-28 成都恒创新星科技有限公司 基于低精度浮点数数据表现形式的cnn加速计算方法及系统
CN111831354A (zh) * 2020-07-09 2020-10-27 北京灵汐科技有限公司 数据精度配置方法、装置、芯片、芯片阵列、设备及介质
CN111831355A (zh) * 2020-07-09 2020-10-27 北京灵汐科技有限公司 权重精度配置方法、装置、设备及存储介质
CN111831356A (zh) * 2020-07-09 2020-10-27 北京灵汐科技有限公司 权重精度配置方法、装置、设备及存储介质
CN112085150A (zh) * 2019-06-12 2020-12-15 安徽寒武纪信息科技有限公司 量化参数调整方法、装置及相关产品
WO2020248423A1 (zh) * 2019-06-12 2020-12-17 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
CN112308216A (zh) * 2019-07-26 2021-02-02 杭州海康威视数字技术股份有限公司 数据块的处理方法、装置及存储介质
WO2021016932A1 (zh) * 2019-07-31 2021-02-04 深圳市大疆创新科技有限公司 数据处理方法、装置及计算机可读存储介质
WO2021021304A1 (en) * 2019-07-26 2021-02-04 Microsoft Technology Licensing, Llc Conformance testing machine learning operations executed on gpus
WO2021036892A1 (zh) * 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 循环神经网络的量化参数调整方法、装置及相关产品
CN112508167A (zh) * 2019-09-13 2021-03-16 富士通株式会社 信息处理装置和方法以及记录介质
CN112836806A (zh) * 2021-02-26 2021-05-25 上海阵量智能科技有限公司 一种数据格式调整方法、装置、计算机设备和存储介质
CN113033787A (zh) * 2019-12-24 2021-06-25 中科寒武纪科技股份有限公司 一种量化神经网络矩阵的方法、设备、计算机产品及板卡
CN113593538A (zh) * 2021-09-02 2021-11-02 北京声智科技有限公司 语音特征的分类方法、相关设备及可读存储介质
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US11797850B2 (en) 2020-07-09 2023-10-24 Lynxi Technologies Co., Ltd. Weight precision configuration method and apparatus, computer device and storage medium
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2048799A (en) * 1998-11-09 2000-05-29 Widex A/S Method for in-situ measuring and correcting or adjusting the output signal of a hearing aid with a model processor and hearing aid employing such a method
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置
US20160379112A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Training and operation of computational models
CN106412687A (zh) * 2015-07-27 2017-02-15 腾讯科技(深圳)有限公司 一种音视频片段的截取方法和装置
CN106570559A (zh) * 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 一种基于神经网络的数据处理方法和装置
CN106897734A (zh) * 2017-01-12 2017-06-27 南京大学 基于深度卷积神经网络的层内非均匀的k平均聚类定点量化方法
US20170286830A1 (en) * 2016-04-04 2017-10-05 Technion Research & Development Foundation Limited Quantized neural network training and inference
CN107239829A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种优化人工神经网络的方法
CN107679618A (zh) * 2017-07-28 2018-02-09 北京深鉴科技有限公司 一种静态策略定点化训练方法及装置
CN107688849A (zh) * 2017-07-28 2018-02-13 北京深鉴科技有限公司 一种动态策略定点化训练方法及装置
CN108229663A (zh) * 2018-01-29 2018-06-29 百度在线网络技术(北京)有限公司 用于生成卷积神经网络的方法和装置
WO2018140294A1 (en) * 2017-01-25 2018-08-02 Microsoft Technology Licensing, Llc Neural network based on fixed-point operations
US20180307950A1 (en) * 2017-04-24 2018-10-25 Intel Corporation Compute optimizations for neural networks
CN108898168A (zh) * 2018-06-19 2018-11-27 清华大学 用于目标检测的卷积神经网络模型的压缩方法和系统
US20180349758A1 (en) * 2017-06-06 2018-12-06 Via Alliance Semiconductor Co., Ltd. Computation method and device used in a convolutional neural network
CN109102064A (zh) * 2018-06-26 2018-12-28 杭州雄迈集成电路技术有限公司 一种高精度的神经网络量化压缩方法
US20190042948A1 (en) * 2017-08-04 2019-02-07 Samsung Electronics Co., Ltd. Method and apparatus for generating fixed-point quantized neural network
US20190041961A1 (en) * 2018-09-27 2019-02-07 Intel Corporation Power savings for neural network architecture with zero activations during inference
US20190050710A1 (en) * 2017-08-14 2019-02-14 Midea Group Co., Ltd. Adaptive bit-width reduction for neural networks

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2048799A (en) * 1998-11-09 2000-05-29 Widex A/S Method for in-situ measuring and correcting or adjusting the output signal of a hearing aid with a model processor and hearing aid employing such a method
US20160379112A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Training and operation of computational models
CN106412687A (zh) * 2015-07-27 2017-02-15 腾讯科技(深圳)有限公司 一种音视频片段的截取方法和装置
CN106570559A (zh) * 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 一种基于神经网络的数据处理方法和装置
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置
US20170286830A1 (en) * 2016-04-04 2017-10-05 Technion Research & Development Foundation Limited Quantized neural network training and inference
CN107239829A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种优化人工神经网络的方法
CN106897734A (zh) * 2017-01-12 2017-06-27 南京大学 基于深度卷积神经网络的层内非均匀的k平均聚类定点量化方法
WO2018140294A1 (en) * 2017-01-25 2018-08-02 Microsoft Technology Licensing, Llc Neural network based on fixed-point operations
US20180307950A1 (en) * 2017-04-24 2018-10-25 Intel Corporation Compute optimizations for neural networks
US20180349758A1 (en) * 2017-06-06 2018-12-06 Via Alliance Semiconductor Co., Ltd. Computation method and device used in a convolutional neural network
CN107688849A (zh) * 2017-07-28 2018-02-13 北京深鉴科技有限公司 一种动态策略定点化训练方法及装置
CN107679618A (zh) * 2017-07-28 2018-02-09 北京深鉴科技有限公司 一种静态策略定点化训练方法及装置
US20190034784A1 (en) * 2017-07-28 2019-01-31 Beijing Deephi Intelligence Technology Co., Ltd. Fixed-point training method for deep neural networks based on dynamic fixed-point conversion scheme
US20190042948A1 (en) * 2017-08-04 2019-02-07 Samsung Electronics Co., Ltd. Method and apparatus for generating fixed-point quantized neural network
US20190050710A1 (en) * 2017-08-14 2019-02-14 Midea Group Co., Ltd. Adaptive bit-width reduction for neural networks
CN108229663A (zh) * 2018-01-29 2018-06-29 百度在线网络技术(北京)有限公司 用于生成卷积神经网络的方法和装置
CN108898168A (zh) * 2018-06-19 2018-11-27 清华大学 用于目标检测的卷积神经网络模型的压缩方法和系统
CN109102064A (zh) * 2018-06-26 2018-12-28 杭州雄迈集成电路技术有限公司 一种高精度的神经网络量化压缩方法
US20190041961A1 (en) * 2018-09-27 2019-02-07 Intel Corporation Power savings for neural network architecture with zero activations during inference

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ELDAD MELLER等: ""Same,same But Different-Recovering Neural Network Quantization Error Through Weight Factorization"", 《ARXIV》 *
JACOB B等: ""Quantization and training of neural networks for efficient integer-arithmetic-only inference"", 《COMPUTER VISION AND PATTERN RECOGNITION》 *
余洋等: ""面向"边缘"应用的卷积神经网络量化与压缩方法"", 《计算机应用》 *
王磊等: ""面向嵌入式应用的深度神经网络模型压缩技术综述"", 《北京交通大学学报》 *
陈俊保等: ""卷积神经网络的定点化研究"", 《信息技术》 *

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11507370B2 (en) 2018-02-13 2022-11-22 Cambricon (Xi'an) Semiconductor Co., Ltd. Method and device for dynamically adjusting decimal point positions in neural network computations
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
CN110135568A (zh) * 2019-05-28 2019-08-16 赵恒锐 一种应用有界线性整流单元的全整数神经网络系统
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11675676B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN112085150A (zh) * 2019-06-12 2020-12-15 安徽寒武纪信息科技有限公司 量化参数调整方法、装置及相关产品
WO2020248423A1 (zh) * 2019-06-12 2020-12-17 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
CN112308216A (zh) * 2019-07-26 2021-02-02 杭州海康威视数字技术股份有限公司 数据块的处理方法、装置及存储介质
EP4339841A3 (en) * 2019-07-26 2024-04-03 Microsoft Technology Licensing, LLC Techniques for conformance testing computational operations
US11704231B2 (en) 2019-07-26 2023-07-18 Microsoft Technology Licensing, Llc Techniques for conformance testing computational operations
WO2021021304A1 (en) * 2019-07-26 2021-02-04 Microsoft Technology Licensing, Llc Conformance testing machine learning operations executed on gpus
WO2021016932A1 (zh) * 2019-07-31 2021-02-04 深圳市大疆创新科技有限公司 数据处理方法、装置及计算机可读存储介质
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium
WO2021036892A1 (zh) * 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 循环神经网络的量化参数调整方法、装置及相关产品
CN112508167A (zh) * 2019-09-13 2021-03-16 富士通株式会社 信息处理装置和方法以及记录介质
CN110852434A (zh) * 2019-09-30 2020-02-28 成都恒创新星科技有限公司 基于低精度浮点数的cnn量化方法、前向计算方法及装置
CN110852416A (zh) * 2019-09-30 2020-02-28 成都恒创新星科技有限公司 基于低精度浮点数数据表现形式的cnn加速计算方法及系统
CN110852434B (zh) * 2019-09-30 2022-09-23 梁磊 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置
CN110852416B (zh) * 2019-09-30 2022-10-04 梁磊 基于低精度浮点数数据表现形式的cnn硬件加速计算方法及系统
CN113033787A (zh) * 2019-12-24 2021-06-25 中科寒武纪科技股份有限公司 一种量化神经网络矩阵的方法、设备、计算机产品及板卡
WO2022007880A1 (zh) * 2020-07-09 2022-01-13 北京灵汐科技有限公司 数据精度配置方法和装置、神经网络设备、介质
CN111831354A (zh) * 2020-07-09 2020-10-27 北京灵汐科技有限公司 数据精度配置方法、装置、芯片、芯片阵列、设备及介质
CN111831355A (zh) * 2020-07-09 2020-10-27 北京灵汐科技有限公司 权重精度配置方法、装置、设备及存储介质
US11797850B2 (en) 2020-07-09 2023-10-24 Lynxi Technologies Co., Ltd. Weight precision configuration method and apparatus, computer device and storage medium
CN111831356A (zh) * 2020-07-09 2020-10-27 北京灵汐科技有限公司 权重精度配置方法、装置、设备及存储介质
CN112836806B (zh) * 2021-02-26 2023-12-22 上海阵量智能科技有限公司 一种数据格式调整方法、装置、计算机设备和存储介质
CN112836806A (zh) * 2021-02-26 2021-05-25 上海阵量智能科技有限公司 一种数据格式调整方法、装置、计算机设备和存储介质
CN113593538A (zh) * 2021-09-02 2021-11-02 北京声智科技有限公司 语音特征的分类方法、相关设备及可读存储介质
CN113593538B (zh) * 2021-09-02 2024-05-03 北京声智科技有限公司 语音特征的分类方法、相关设备及可读存储介质

Also Published As

Publication number Publication date
CN109800877B (zh) 2022-12-30

Similar Documents

Publication Publication Date Title
CN109800877A (zh) 神经网络的参数调整方法、装置及设备
CN110121118A (zh) 视频片段定位方法、装置、计算机设备及存储介质
CN108304265B (zh) 内存管理方法、装置及存储介质
CN110097019A (zh) 字符识别方法、装置、计算机设备以及存储介质
CN108629747A (zh) 图像增强方法、装置、电子设备及存储介质
CN107945163A (zh) 图像增强方法及装置
CN110110145A (zh) 描述文本生成方法及装置
CN110045960A (zh) 基于芯片的指令集处理方法、装置及存储介质
CN109816042B (zh) 数据分类模型训练的方法、装置、电子设备和存储介质
CN107978321A (zh) 音频处理方法及装置
CN109840584A (zh) 卷积神经网络模型、数据处理方法及装置
CN110210573A (zh) 对抗图像的生成方法、装置、终端及存储介质
CN110211593A (zh) 语音识别方法、装置、电子设备及存储介质
CN110147533A (zh) 编码方法、装置、设备及存储介质
CN109948581A (zh) 图文渲染方法、装置、设备及可读存储介质
CN110070143A (zh) 获取训练数据的方法、装置、设备及存储介质
CN109547843A (zh) 对音视频进行处理的方法和装置
CN109218751A (zh) 推荐音频的方法、装置及系统
CN110535890A (zh) 文件上传的方法和装置
CN109065068A (zh) 音频处理方法、装置及存储介质
CN110490389A (zh) 点击率预测方法、装置、设备及介质
CN109977570A (zh) 车身噪声确定方法、装置及存储介质
CN110166275A (zh) 信息处理方法、装置及存储介质
CN109147809A (zh) 音频信号处理方法、装置、终端及存储介质
CN110232417A (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
GR01 Patent grant
GR01 Patent grant