数据处理方法、装置、设备及计算机可读存储介质
技术领域
本公开涉及计算机
技术领域
,尤其涉及一种数据处理方法、装置、设备及计算机可读存储介质。背景技术
深度学习模型广泛应用在计算机视觉、自然语言处理等领域中,极大地推动了安防、语言识别和机器翻译等行业的发展。通过对大量已标注数据进行训练学习,深度学习模型可以实现对图片、语言等信息的识别与理解。
深度学习模型具有强大的功能,但是深度学习模型通常会占用大量的计算资源,并且在处理任务时会耗费大量的计算时间。
发明内容
本公开实施例提供一种数据处理方法、装置、设备及计算机可读存储介质,能够提高深度学习网络对数据的处理效率。
本公开实施例的技术方案是这样实现的:
本公开实施例提供一种数据处理方法,包括:获取第一数据类型的待处理数据;基于第一分段方式对所述待处理数据进行分段量化,得到第二数据类型的目标数据;其中,所述第二数据类型为数据精度小于所述第一数据类型的1bit整数型;利用深度学习网络对所述目标数据进行处理,得到所述深度学习网络的至少一个网络层的处理结果;所述至少一个网络层中的目标网络参数是基于第二分段方式对网络参数进行分段量化得到的1bit整数型。
上述方法中,所述待处理数据包括以下至少一种:图像信息、语音信息、基于所述图像信息得到的中间信息和基于所述语音信息得到的中间信息。
上述方法中,所述第一分段方式包括:基于第一预设分段阈值分段的第一预设值和第二预设值;所述第一预设值和所述第二预设值为1bit整数型;所述基于第一分段方式对所述待处理数据进行分段量化,得到第二数据类型的目标数据,包括:在所述待处理数据大于所述第一预设分段阈值的情况下,将所述待处理数据分段量化为所述第一预设值的所述目标数据;在所述待处理数据等于所述第一预设分段阈值的情况下,将所述待处理数据分段量化为所述第二预设值的所述目标数据。
上述方法中,所述利用深度学习网络对所述目标数据进行处理,得到所述深度学习网络的至少一个网络层的处理结果,包括:利用所述深度学习网络的当前网络层的目标网络参数,与所述目标数据进行相乘,得到2bit的输出结果;基于所述第一分段方式,对所述输出结果进行分段量化后,得到第二数据类型的子处理结果;对所述子处理结果与所述深度学习网络的下一个网络层的目标网络参数继续进行处理,直至完成了所述至少一个网络层的处理的情况下,得到所述处理结果。
上述方法还包括:获取所述第一数据类型的训练样本数据;基于所述第一分段方式对所述训练样本数据进行分段量化,得到第二数据类型的目标训练数据;以及基于所述第二分段方式对初始深度学习网络的至少一个网络层的网络参数进行分段量化,得到第二数据类型的训练网络参数;利用所述初始深度学习网络的所述训练网络参数对所述目标训练数据进行处理,得到当前训练结果;基于所述当前训练结果和所述训练样本数据对应的真实结果,对所述初始深度学习网络的所述训练网络参数进行持续训练,直至得到的损失小于等于预设损失阈值的情况下,确定包含目标网络参数的所述深度学习网络。
上述方法中,所述基于所述当前训练结果和所述训练样本数据对应的真实结果,对所述初始深度学习网络的训练网络参数进行持续训练,直至得到的损失小于等于预设损失阈值的情况下,确定包含目标网络参数的所述深度学习网络,包括:基于所述当前训练结果与所述训练样本数据对应的真实结果进行损失计算,得到第一数据类型的当前损失;在所述当前损失大于所述预设损失阈值的情况下,基于所述当前损失,确定每一个网络层的所述训练网络参数的梯度值;所述梯度值为所述第一数据类型;基于所述第二分段方式对所述梯度值进行分段量化,得到第二数据类型的当前梯度值;采用所述当前梯度值,对对应的每一个网络层的所述训练网络参数进行更新,直至得到目标网络参数的情况下,完成对所述初始深度学习网络的训练网络参数的持续训练,得到所述深度学习网络;其中,所述目标网络参数对所述目标训练数据进行处理后,得到的损失小于等于所述预设损失阈值。
上述方法中,所述第二分段方式包括:基于第二预设分段阈值分段的第三预设值和第四预设值;所述第三预设值和所述第四预设值为1bit整数型;所述基于所述第二分段方式对初始深度学习网络的至少一个网络层的网络参数进行分段量化,得到第二数据类型的训练网络参数,包括:在所述初始深度学习网络的至少一个网络层的网络参数大于所述第二预设分段阈值的情况下,将所述网络参数分段量化为所述第三预设值的所述训练网络参数;在所述初始深度学习网络的至少一个网络层的网络参数小于所述第二预设分段阈值的情况下,将所述网络参数分段量化为所述第四预设值的所述训练网络参数。
上述方法中,所述第一数据类型为多bit浮点型。
本公开实施例提供一种数据处理装置,包括:获取单元,用于获取第一数据类型的待处理数据;量化单元,用于基于第一分段方式对所述待处理数据进行分段量化,得到第二数据类型的目标数据;其中,所述第二数据类型为数据精度小于所述第一数据类型的1bit整数型;处理单元,用于利用深度学习网络对所述目标数据进行处理,得到所述深度学习网络的至少一个网络层的处理结果;所述至少一个网络层中的目标网络参数是基于第二分段方式对网络参数进行分段量化得到的1bit整数型。
上述装置中,所述待处理数据包括以下至少一种:图像信息、语音信息、基于所述图像信息得到的中间信息和基于所述语音信息得到的中间信息。
上述装置中,所述第一分段方式包括:基于第一预设分段阈值分段的第一预设值和第二预设值;所述第一预设值和所述第二预设值为1bit整数型;所述量化单元,还用于在所述待处理数据大于所述第一预设分段阈值的情况下,将所述待处理数据分段量化为所述第一预设值的所述目标数据;在所述待处理数据等于所述第一预设分段阈值的情况下,将所述待处理数据分段量化为所述第二预设值的所述目标数据。
上述装置中,所述处理单元,还用于利用所述深度学习网络的当前网络层的目标网络参数,与所述目标数据进行相乘,得到2bit的输出结果;基于所述第一分段方式,对所述输出结果进行分段量化后,得到第二数据类型的子处理结果;对所述子处理结果与所述深度学习网络的下一个网络层的目标网络参数继续进行处理,直至完成了所述至少一个网络层的处理的情况下,得到所述处理结果。
上述装置中,所述获取单元,还用于获取所述第一数据类型的训练样本数据;所述量化单元,还用于基于所述第一分段方式对所述训练样本数据进行分段量化,得到第二数据类型的目标训练数据;以及基于所述第二分段方式对初始深度学习网络的至少一个网络层的网络参数进行分段量化,得到第二数据类型的训练网络参数;所述装置还包括:训练单元,用于利用所述初始深度学习网络的所述训练网络参数对所述目标训练数据进行处理,得到当前训练结果;基于所述当前训练结果和所述训练样本数据对应的真实结果,对所述初始深度学习网络的所述训练网络参数进行持续训练,直至得到的损失小于等于预设损失阈值的情况下,确定包含目标网络参数的所述深度学习网络。
上述装置中,所述训练单元,还用于基于所述当前训练结果与所述训练样本数据对应的真实结果进行损失计算,得到第一数据类型的当前损失;在所述当前损失大于所述预设损失阈值的情况下,基于所述当前损失,确定每一个网络层的所述训练网络参数的梯度值;所述梯度值为所述第一数据类型;基于所述第二分段方式对所述梯度值进行分段量化,得到第二数据类型的当前梯度值;采用所述当前梯度值,对对应的每一个网络层的所述训练网络参数进行更新,直至得到目标网络参数的情况下,完成对所述初始深度学习网络的训练网络参数的持续训练,得到所述深度学习网络;其中,所述目标网络参数对所述目标训练数据进行处理后,得到的损失小于等于所述预设损失阈值。
上述装置中,所述第二分段方式包括:基于第二预设分段阈值分段的第三预设值和第四预设值;所述第三预设值和所述第四预设值为1bit整数型;所述量化单元,还用于在所述初始深度学习网络的至少一个网络层的网络参数大于所述第二预设分段阈值的情况下,将所述网络参数分段量化为所述第三预设值的所述训练网络参数;在所述初始深度学习网络的至少一个网络层的网络参数小于所述第二预设分段阈值的情况下,将所述网络参数分段量化为所述第四预设值的所述训练网络参数。
上述装置中,所述第一数据类型为多bit浮点型。
本公开实施例提供一种电子设备,包括:存储器,用于存储可执行计算机程序;处理器,用于执行所述存储器中存储的可执行计算机程序时,实现上述的数据处理方法。
本公开实施例提供一种计算机可读存储介质,存储有计算机程序,用于引起处理器执行时,实现上述的数据处理方法。
本公开实施例提供的数据处理方法、装置、设备及计算机可读存储介质,获取第一数据类型的待处理数据,并采用第一分段方式将待处理数据分段量化为数据精度小于第一数据类型的1bit整数型的目标数据,以及,利用网络层的目标网络参数是采用第二分段方式对网络参数进行分段量化而得到的1bit整数型的深度学习网络对目标数据进行处理,最终得到相应的处理结果;减少了待处理数据的数据量,从而提高了深度学习网络对数据的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1为本公开实施例提供的数据处理方法的一个可选的流程示意图;
图2为本公开实施例提供的示例性地一种深度学习网络为神经网络时的结构示意图;
图3为本公开实施例提供的示例性地通过深度学习网络的至少一个网络层得到处理结果的流程示意图;
图4为本公开实施例提供的数据处理方法的一个可选的流程示意图;
图5为本公开实施例提供的数据处理方法的一个可选的流程示意图;
图6为公开实施例提供的训练初始深度学习网络方法的一个可选的流程图;
图7为本公开实施例提供的数据处理方法的一个可选的流程示意图;
图8为本公开实施例提供的数据处理方法的一个可选的流程示意图;
图9为本公开实施例提供的示例性地在对初始深度学习网络进行训练的过程中,针对每个网络层的网络参数进行训练的流程示意图;
图10为本公开实施例提供的数据处理装置的结构示意图;
图11为本公开实施例提供的电子设备的结构示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
深度学习模型具有强大的能力,但是复杂的模型带来了巨大的计算量,需要耗费大量时间去训练深度学习模型才能在实际应用中使用。深度学习模型的训练包含大量的矩阵卷积计算,计算量通常超过模型训练总量的60%。目前,常用的深度模型大多都是以32位浮点数进行卷积计算的,相关技术,为了减少深度学习网络的计算量,可以将数据由高精度转换为低精度,例如,将32位浮点数据转换为8位定点(INT8)数据。这种方式虽然可以减少深度学习网络的计算量,但是这会导致深度学习网络严重的精度损失,深度学习网络无法进行较高精度需求的任务。而本公开实施例提供的深度学习网络训练方式,既可以减少深度学习网络的计算量,提高深度学习网络的处理效率,还可以减少深度学习网络的精度损失,使得深度学习网络可以应用于较高精度需求的任务,如,可以应用于图像识别、图像分类、目标检测等任务。
本公开实施例提供的数据处理方案,可以应用于深度学习网络的训练过程,如应用于一些对精度需求较高的任务的训练过程,例如,应用于图像分类任务、图像识别任务、目标检测任务的训练过程。或者,还可以应用于利用训练好的深度学习网络处理一些对精度需求较高的任务中,例如,应用于图像分类任务、图像识别任务、目标检测任务、语音识别和语义识别等场景中。本公开实施例不对具体的应用场景进行限制,只要包括本公开实施例提供的数据处理方案均在本公开的保护范围内。
本公开实施例提供一种数据处理方法,能够提高深度学习网络对数据的处理效率。本公开实施例提供的数据处理方法应用于电子设备。
下面说明本公开实施例提供的电子设备的示例性应用,本公开实施例提供的电子设备可以实施为AR眼镜、笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端(以下简称终端),也可以实施为服务器。
下面,将说明电子设备实施为终端时的示例性应用。图1是本公开实施例提供的数据处理方法的一个可选的流程示意图,将结合图1示出的步骤进行说明。
S101、获取第一数据类型的待处理数据。
在本公开实施例中,终端在采用深度学习网络进行识别或分类任务之前,先获取第一数据类型的待处理数据。
这里,第一数据类型可以是高精度的数据类型,例如,多bit浮点型的数据类型,如32bit浮点型、64bit浮点型等。待处理数据可以是用于深度学习网络处理的数据,可以是图像信息、文本信息、语音信息等多种类型的信息中的一种或多种,还可以是基于图像信息、文本信息、语音信息等信息得到的中间信息。例如,待处理数据可以包括深度学习网络应用过程中或训练过程中的输入信息、深度学习网络对输入信息处理得到的中间信息、深度学习网络的输出信息等。其中,中间信息可以是深度学习网络的中间网络层对输入信息进行处理后得到的中间结果,或者,还可以是采用激活函数对输入信息进行处理后得到的激活数据等。
示例性地,在图像分类场景中,待处理数据可以是在某个场景中采集的目标图像。
在本公开实施例中,终端的存储单元(例如,内存等)中可以预先存储有待处理数据,且终端可以从自身的存储单元中获取第一数据类型的待处理数据;或者,终端还可以从其他设备处获取第一数据类型的待处理数据,例如,终端可以从摄像装置(例如,摄像头)等其他电子设备处获取对某个场景进行采集所得到的待处理数据。
S102、基于第一分段方式对待处理数据进行分段量化,得到第二数据类型的目标数据;其中,第二数据类型为数据精度小于第一数据类型的1bit整数型。
在本公开实施例中,终端在获取到待处理数据之后,可以采用第一分段方式对待处理数据进行分段量化,从而得到数据精度小于第一数据类型的1bit整数型的目标数据。通过第一分段方式可以将数值处于某个界限范围之外的数据限制在一定的界限范围内,从而在数据量化的过程中,通过第一分段方式的量化作用,可以将得到的第二数据类型的目标数据限制在一定的界限范围内,从而可以减小数据类型变换产生的变换误差,减少待处理数据的精度损失。
这里,由于第二数据类型的数据精度小于第一数据类型的数据精度,因而第二数据类型的目标数据的信息量小于1bit整数型的第一数据类型的待处理数据;从而利用深度学习网络对目标数据进行处理时,可以减少数据计算量,提高深度学习网络的处理效率。
S103、利用深度学习网络对目标数据进行处理,得到深度学习网络的至少一个网络层的处理结果;至少一个网络层中的目标网络参数是基于第二分段方式对网络参数进行分段量化得到的1bit整数型。
在本公开实施例中,深度学习网络可以包括一个或多个网络层,不同的网络层可以对应不同的网络参数以及处理过程。在利用深度学习网络对输入信息进行处理的情况下,可以利用量化后的第二数据类型的目标数据,最终得到深度学习网络的网络层的处理结果。
示例性地,图2是本公开实施例提供的示例性地一种深度学习网络为神经网络时的结构示意图。如图2所示,深度学习网络包括3层网络层,其中,隐层(中间层)输出值h1,…,hp的计算公式为公式(1):
其中,B=1,…,q,xm+1=1(偏置项),f(x)=1/(1+e-x),WAB是输入层第A个节点与隐层第B个节点之间的连接权值。
输出层y的计算为公式(2):
其中,其中βp是隐层第B个节点与输出层第k个节点之间的连接权值。
需要说明的是,网络参数W(矩阵)、β(向量)的求解过程如下:
W(深度学习网络中输入层与隐层之间的连接权值):根据极限学习机的原理,W可取为任意的随机值,例如位于[-1,1]之间的随机值。且一旦赋值,在后续的网络优化过程中就不再变化。因此,不管网络的输入变量有多少,都不影响网络的可调参数总个数。
超参数p:是深度学习网络的隐层节点数,也是整套算法中的唯一超参数,取得过小或过大,都可能导致欠拟合或过拟合,只能通过实验确定一个最佳值。
模型训练求β(深度学习网络中隐层与输出层之间的连接权值):按照极限学习机的原理,归结为求一个Moore-Penrose广义逆就可。总之,求得β之后,即可获得深度学习网络。
本公开实施例中,第二数据类型的目标数据可以作为深度学习网络的输入信息,也可以作为深度学习网络的上述激活数据等。处理结果可以是深度学习网络最终的输出信息,还可以是一个或多个中间网络层的输出信息,例如,处理结果可以是深度学习网络最终的输出信息,再例如,还可以是在反向传播过程中由输出参数的梯度值得到的权重参数对应的梯度值和激活对应的梯度值。示例性地,本公开实施例中,使用单精度浮点数(FP32)类型进行反向传播。
在本公开实施例中,深度学习网络需要处理的输入信息是1bit整数型的数据,在利用深度学习网络进行网络处理之前,先利用第二分段量化方式将深度学习网络的网络参数量化为1bit整数型的目标网络参数,如此可以保持数据类型的统一,以便通过深度学习网络对目标数据进行正确处理。
示例性地,在利用深度学习网络对输入图像进行目标检测的场景下,可以将深度学习网络的一个或多个网络层的32位浮点型的权重值(W)和激活值(a)变换为1bit整数型的数值,然后在1bit整数型的权重值和激活值的作用下,利用一个或多个网络层提取输入图像的对象特征,得到一个或多个网络层的特征提取结果。
在本公开实施例中,基于第二数据类型的目标数据所得到的处理结果是第二数据类型。为了满足一些实际需求,可以在得到第二数据类型的处理结果后,将处理结果从第二数据类型再转变为第一数据类型。例如,在网络层是卷积层的情况下,由于卷积计算是线性计算,为了保证处理结果的准确性,可以将得到的处理结果从第二数据类型转变为第一数据类型。又例如,为了满足存储方面的需求或数据精度方面的需求,或者,为了满足上述至少一个网络层以外其他网络层的计算需求,可以将得到的处理结果从第二数据类型转变为第一数据类型。
需要说明的是,本公开实施例的数据处理方案可以应用在深度学习网络的一个或多个网络层的信息处理过程中,多个网络层可以是连续的网络层也可以非连续的网络层,网络层可以是输入层、输出层或者中间层。以下通过一个卷积层的信息处理过程为例,对本公开实施例的数据处理方案进行说明。
图3为本公开实施例提供的示例性地通过深度学习网络的至少一个网络层得到处理结果的流程示意图。如图3所示,深度学习网络由一个卷积层(网络层)组成,网络参数是32bit浮点型的激活值(图3中表示为a(FP32))和32bit浮点型的权重值(图3中表示为W(FP32)),可以先通过第二分段方式将a(FP32)量化为1bit整数型的激活值(图3中表示为a(INT1)),以及通过第二分段方式将W(FP32)量化为1bit整数型的权重值(图3中表示为W(INT1)),得到目标网络参数;同时,通过第一分段方式将卷积层的待处理数据由32bit浮点型的数据量化为1bit整数型的目标数据(图3中未示出目标数据)。然后,在a(INT1)和W(INT1)的作用下,可以根据该卷积层的目标数据得到该卷积层的1bit整数型(第二数据类型)的处理结果(表示为Z(INT1)),为了保证处理结果的准确性,还可以将处理结果Z(INT1)从1bit整数型转换为32bit浮点型(第一数据类型)的处理结果(图3中表示为Z(FP32))。
本公开实施例中,获取第一数据类型的待处理数据,并采用第一分段方式将待处理数据分段量化为数据精度小于第一数据类型的1bit整数型的目标数据,以及,利用网络层的目标网络参数是采用第二分段方式对网络参数进行分段量化而得到的1bit整数型的深度学习网络对目标数据进行处理,最终得到相应的处理结果;减少了待处理数据的数据量,从而提高了深度学习网络对数据的处理效率。
在本公开的一些实施例中,上述S102可以通过S1021-S1022实现,将结合图4示出的步骤进行说明。
S1021、在待处理数据大于第一预设分段阈值的情况下,将待处理数据分段量化为第一预设值的目标数据;第一分段方式包括:基于第一预设分段阈值分段的第一预设值和第二预设值;第一预设值和第二预设值为1bit整数型。
S1022、在待处理数据等于第一预设分段阈值的情况下,将待处理数据分段量化为第二预设值的目标数据。
在本公开实施例中,终端通过第一预设分段阈值,以及1bit整数型的第一预设值和第二预设值,可以将待处理数据进行量化,从而得到1bit整数型的目标数据。
在一些实施例中,示例性的,第一预设分段阈值可以为0,第一预设值为1,且第二预设值为0,从而,终端可以在待处理数据大于0的情况下,将待处理数据量化为1的目标数据,在待处理数据等于0的情况下,将待处理数据量化为0的目标数据;即第一分段方式可以通过下述公式(3)表示:
其中,a表示待处理数据,round表示随机取整函数。
在本公开的一些实施例中,上述S103可以通过S1031-S1033实现,将以图1中的S103为例,结合图5示出的步骤进行说明。
S1031、利用深度学习网络的当前网络层的目标网络参数,与目标数据进行相乘,得到2bit的输出结果。
在本公开的实施例中,终端在得到1bit整数型的目标网络参数和1bit整数型的目标数据后,在通过深度学习网络的每个网络层进行数据处理的过程中,可以将目标网络参数和目标数据相乘,从而得到该每个网络层的输出结果。这里,由于目标网络参数和目标数据均是1bit整数型,因而相乘后得到的输出结果为2bit的输出结果。
S1032、基于第一分段方式,对输出结果进行分段量化后,得到第二数据类型的子处理结果。
终端在获得每一个网络层的输出结果,且在将输出结果输入至下一个网络层之前,可以同样采用第一分段方式对输出结果进行量化,其中,在输出结果大于第一预设分段阈值的情况下,将输出结果分段量化为第一预设值的子处理结果,在输出结果等于第一预设分段阈值的情况下,将输出结果分段量化为第二预设值的子处理结果,得到1bit整数型的子处理结果,从而保持了与待输入的网络层的目标网络参数之间的数据类型的一致性。
S1033、对子处理结果与深度学习网络的下一个网络层的目标网络参数继续进行处理,直至完成了至少一个网络层的处理的情况下,得到处理结果。
在本公开的实施例中,终端在获得上一个网络层的输出结果对应的子处理结果,且在利用下一个网络层对该子处理结果进行处理的情况下,与上述S1031中的步骤相同,同样会将子处理结果与该下一个网络层的目标网络参数进行相乘,得到该下一个网络层的2bit的输出结果,并对该下一个网络层的输出结果继续采用S1032所述的方法进行量化,从而得到该下一个网络层对应的子处理结果,再将该下一个网络层对应的子处理结果输入该下一个网络层的下一个网络层中继续处理,直至得到深度学习网络的最后一个网络层的输出结果的情况下,完成深度神经网络对目标数据的处理。
示例性地,在利用上述图2中的具有3层网络层的深度学习网络对目标数据进行处理的过程中,终端先将第1个网络层对应的目标网络参数与目标数据进行相乘,得到第1个网络层的2bit的输出结果,然后,通过第一分段方式,对第1个网络层的2bit的输出结果进行量化,得到第1个网络层的1bit整数型的子处理结果;再将第1个网络层的子处理结果输入第2个网络层,并将第2个网络层对应的目标网络参数与第1个网络层的子处理结果进行相乘,得到第2个网络层的2bit的输出结果;然后,通过第一分段方式,对第2个网络层的2bit的输出结果进行量化,得到第2个网络层的1bit整数型的子处理结果;再将第2个网络层的子处理结果输入第3个网络层,并将第3个网络层对应的目标网络参数与第2个网络层的子处理结果进行相乘,得到第3个网络层的2bit的输出结果,最后,仍然通过第一分段方式,对第3个网络层的2bit的输出结果进行量化,得到1bit整数型的最终处理结果。
需要说明的是,本公开实施例提供的数据处理方案,可以应用于利用深度学习网络的实际应用中,例如,利用训练好的深度学习网络对输入的图像信息进行分类,或者,利用深度学习网络对输入的图像信息进行识别,或者,利用深度学习网络对输入的图像信息进行目标检测。另外,本公开实施例提供的数据处理方案还可以应用于深度学习网络的训练过程中。
示例性地,图6为公开实施例提供的训练初始深度学习网络方法的一个可选的流程图,以下将结合图6示出的步骤进行说明。
S201、获取第一数据类型的训练样本数据。
在本公开实施例中,终端在对深度神经网络进行训练之前,可以先获取用于训练的样本数据。在一些实施例中,获取第一数据类型的训练样本数据可以通过S2011-S2012实现:
S2011、按照预设的配置比例获取正样本和负样本。
在一些实际检测或识别场景中各种结果会存在一定的比例,因而,为了提高最终训练得到的深度学习网络的检测或识别精度,终端可以将该比例作为配置比例,通过该配置比例进行正样本和负样本的数量配置。
S2012、提取正样本的特征和负样本的特征,将提取的样本特征作为获取的训练样本数据。
终端在配置好正样本和负样本的数量后,可以分别对正样本和负样本进行特征提取,从而得到用于进行训练的训练样本数据。
S202、基于第一分段方式对训练样本数据进行分段量化,得到第二数据类型的目标训练数据;以及基于第二分段方式对初始深度学习网络的至少一个网络层的网络参数进行分段量化,得到第二数据类型的训练网络参数。
本公开实施例中,终端在获取到训练样本数据后,由于训练样本数据通常是多bit浮点型的数据,所以,终端可以采用第一分段方式对训练样本数据进行量化,得到1bit整数型的目标训练数据。同时,为了保持与目标训练数据的数据类型的统一,终端可以根据第二分段方式将深度学习网络的每个网络层的网络参数均进行量化,从而得到每个网络层的1bit整数型的训练网络参数。
在本公开的一些实施例中,上述S202中的基于第二分段方式对初始深度学习网络的至少一个网络层的网络参数进行分段量化,得到第二数据类型的训练网络参数,可以通过S2021-S2022实现,以下将结合图7示出的步骤进行说明。
S2021、在初始深度学习网络的至少一个网络层的网络参数大于第二预设分段阈值的情况下,将网络参数分段量化为第三预设值的训练网络参数;第二分段方式包括:基于第二预设分段阈值分段的第三预设值和第四预设值;第三预设值和第四预设值为1bit整数型。
S2022、在初始深度学习网络的至少一个网络层的网络参数小于第二预设分段阈值的情况下,将网络参数分段量化为第四预设值的训练网络参数。
在本公开实施例中,终端通过第二预设分段阈值,以及1bit整数型的第三预设值和第四预设值,可以对网络参数进行量化,从而得到1bit整数型的训练网络参数。
在一些实施例中,示例性地,第二预设分段阈值可以为0,第一预设值为1,且第二预设值为-1,从而,终端可以在网络参数大于0的情况下,将网络参数量化为1的训练网络参数,在网络参数小于0的情况下,将网络参数量化为-1的训练网络参数;即第二分段方式可以通过下述公式(4)表示:
其中,W表示网络参数。
在本公开的一些实施例中,在深度学习网络应用的过程中,利用第一预设分段阈值对深度学习网络的待处理数据进行量化,以及,利用第二预设分段阈值对深度学习网络的网络参数,例如,权重值、激活值等进行量化的过程中,还可以对第一预设分段阈值和第二预设分段阈值进行调整。比如,在深度学习网络应用的过程中,每当获取一次待处理数据,便可以计算一次第一预设分段阈值,然后利用计算的第一预设分段阈值对待处理数据进行量化处理。再比如,在深度学习网络训练的过程中,利用第二预设分段阈值对网络参数对应的梯度值进行量化,每利用梯度值对网络参数进行一次调整,可以重新计算一次第二预设分段阈值,从而动态调整第二预设分段阈值。
S203、利用初始深度学习网络的训练网络参数对目标训练数据进行处理,得到当前训练结果。
终端在得到1bit整数型的目标训练数据和1bit整数型的训练网络参数的情况下,可以将1bit整数型的目标训练数据输入初始深度学习网络中,以通过初始深度学习网络的训练网络参数,对目标训练数据进行处理,得到一次训练的训练结果。这里,在每一次训练过程中,初始深度学习网络的网络层对目标训练数据的处理过程与上述S1031-S1033所述的过程相同。
S204、基于当前训练结果和训练样本数据对应的真实结果,对初始深度学习网络的训练网络参数进行持续训练,直至得到的损失小于等于预设损失阈值的情况下,确定包含目标网络参数的深度学习网络。
在本公开实施例中,终端可以利用1bit整数型的目标训练数据和训练网络参数,对深度学习网络进行训练,实现训练的反向传播过程。这里,终端在每得到一次训练结果后,可以将训练结果与训练样本数据对应的真实结果(通常为真实标注结果)进行比对,并在比对结果不满足预设条件的情况下,继续利用训练样本数据,对初始深度学习网络的训练网络参数进行持续训练,如此循环,直至在某次训练结束后,针对该某次训练得到的训练结果所计算出的损失小于等于预设损失阈值的情况下,将该某次训练中得到的初始深度学习网络的各个网络层的网络参数作为目标网络参数,从而得到包含目标网络参数的深度学习网络。
在一些实施例中,上述S204可以通过S2041-S2044实现,以下将结合图8示出的步骤进行说明。
S2041、基于当前训练结果与训练样本数据对应的真实结果进行损失计算,得到第一数据类型的当前损失。
在本公开的实施例中,终端在获得每一次的训练结果后,可以将该训练结果与训练样本数据对应的真实结果进行比对,从而得到比对结果,其中,训练结果可以对应预测值,真实结果可以对应真实值,从而可以将初始深度学习网络的输出结果与真实结果进行比对,根据对比结果可以计算出预测值相对于真实值的损失,从而得到该次训练对应的当前损失。
S2042、在当前损失大于预设损失阈值的情况下,基于当前损失,确定每一个网络层的训练网络参数的梯度值;梯度值为第一数据类型。
终端在得到每一次训练的当前损失后可以与预设的损失阈值进行比较,并在当前损失大于预设损失阈值的情况下,根据该当前损失值计算出每一个网络层的训练网络参数的梯度值,以后续通过该梯度值对初始深度学习网络的每一个网络层的训练网络参数进行更新,得到新的训练网络参数。
S2043、基于第二分段方式对梯度值进行分段量化,得到第二数据类型的当前梯度值。
在本公开的实施例中,由于得到的梯度值是数据精度较高的第一数据类型的数据,因而,终端可以采用第二分段方式将梯度值从第一数据类型量化为第二数据类型,以减少数据量。
S2044、采用当前梯度值,对对应的每一个网络层的训练网络参数进行更新,直至得到目标网络参数的情况下,完成对初始深度学习网络的训练网络参数的持续训练,得到深度学习网络;其中,目标网络参数对目标训练数据进行处理后,得到的损失小于等于预设损失阈值。
在本公开的实施例中,终端在得到第二数据类型的梯度值的情况下,可以采用第二数据类型的梯度值,对每个网络层的训练网络参数进行更新,得到新的训练网络参数,并利用新的训练网络参数继续对目标训练数据训练,并得到针对该次训练的当前训练结果,并返回继续采用上述S2041-2044的方法,直到在当前损失小于或等于预设损失阈值的情况下,将与该小于或等于预设损失阈值的当前损失对应的训练网络参数,作为目标网络参数,获得深度学习网络,从而通过反向传播实现初始深度学习网络的训练过程。
在该训练过程中,由于第二数据类型的目标训练数据,相对于第一数据类型的训练样本数据而言具有较少的信息量,以及,第二数据类型的网络参数,相对于第一数据类型的目标网络参数而言具有较少的信息量,因而可以提高初始深度学习网络的训练效率。需要说明的是,图6-图8示出的上述步骤可以在上述S103之前执行,或者,还可以在上述S101之前执行。
图9为本公开实施例提供的示例性地在对初始深度学习网络进行训练的过程中,针对每个网络层的网络参数进行训练的流程示意图。如图9所示,深度学习网络由一个卷积层组成,目标训练数据可以是由32bit浮点型的训练样本数据,经过量化而得到的1bit整数型的数据(图9中未示出),计算出的第一数据类型的梯度值可以是32bit浮点型的梯度值,可以表示为gz(FP32)。可以先通过第二分段方式将gz(FP32)量化为1bit整数型的梯度值(当前梯度值,图9中表示为gz(INT1));然后,可以利用gz(INT1)调整与更新卷积层的网络参数,如激活参数和权重参数。其中,ga(INT1)可以表示更新的激活参数,gW(INT1)可以表示更新的权重参数。ga(INT1)和gW(INT1)均为1bit整数型,为了满足一些存储或精度的需求,还可以将ga(INT1)和gW(INT1)转换为32bit浮点型的ga(FP32)和gW(FP32)。
这里,在对初始深度学习网络进行训练的过程中,可以通过调用整数型计算库中的指令实现卷积网络的反向传播过程,从而优化了数据类型变换过程(量化)的计算开销,可以周期性地对整数型计算库进行维护,可以减少整数型计算库更新的时间开销,进一步加快了深度学习网络的处理速度。可以在卷积层的反向传播上实现很大程度的加速,深度学习网络的训练速度有了显著提高。在图像分类、目标检测等对精度需求较高的任务中,可以达到与全精度接近的精度。
可以理解的是,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例。
本公开还提供一种数据处理装置,图10为本公开实施例提供的数据处理装置的结构示意图;如图10所示,数据处理装置1包括:获取单元10,用于获取第一数据类型的待处理数据;量化单元20,用于基于第一分段方式对所述待处理数据进行分段量化,得到第二数据类型的目标数据;其中,所述第二数据类型为数据精度小于所述第一数据类型的1bit整数型;处理单元30,用于利用深度学习网络对所述目标数据进行处理,得到所述深度学习网络的至少一个网络层的处理结果;所述至少一个网络层中的目标网络参数是基于第二分段方式对网络参数进行分段量化得到的1bit整数型。
在一些实施例中,所述待处理数据包括以下至少一种:图像信息、语音信息、基于所述图像信息得到的中间信息和基于所述语音信息得到的中间信息。
在一些实施例中,所述第一分段方式包括:基于第一预设分段阈值分段的第一预设值和第二预设值;所述第一预设值和所述第二预设值为1bit整数型;所述量化单元20,还用于在所述待处理数据大于所述第一预设分段阈值的情况下,将所述待处理数据分段量化为所述第一预设值的所述目标数据;在所述待处理数据等于所述第一预设分段阈值的情况下,将所述待处理数据分段量化为所述第二预设值的所述目标数据。
在一些实施例中,所述处理单元30,还用于利用所述深度学习网络的当前网络层的目标网络参数,与所述目标数据进行相乘,得到2bit的输出结果;基于所述第一分段方式,对所述输出结果进行分段量化后,得到第二数据类型的子处理结果;对所述子处理结果与所述深度学习网络的下一个网络层的目标网络参数继续进行处理,直至完成了所述至少一个网络层的处理的情况下,得到所述处理结果。
在一些实施例中,所述获取单元10,还用于获取所述第一数据类型的训练样本数据;所述量化单元20,还用于基于所述第一分段方式对所述训练样本数据进行分段量化,得到第二数据类型的目标训练数据;以及基于所述第二分段方式对初始深度学习网络的至少一个网络层的网络参数进行分段量化,得到第二数据类型的训练网络参数;所述装置还包括训练单元40(图中未示出),用于利用所述初始深度学习网络的所述训练网络参数对所述目标训练数据进行处理,得到当前训练结果;基于所述当前训练结果和所述训练样本数据对应的真实结果,对所述初始深度学习网络的所述训练网络参数进行持续训练,直至得到的损失小于等于预设损失阈值的情况下,确定包含目标网络参数的所述深度学习网络。
在一些实施例中,所述训练单元40,还用于基于所述当前训练结果与所述训练样本数据对应的真实结果进行损失计算,得到第一数据类型的当前损失;在所述当前损失大于所述预设损失阈值的情况下,基于所述当前损失,确定每一个网络层的所述训练网络参数的梯度值;所述梯度值为所述第一数据类型;基于所述第二分段方式对所述梯度值进行分段量化,得到第二数据类型的当前梯度值;采用所述当前梯度值,对对应的每一个网络层的所述训练网络参数进行更新,直至得到目标网络参数的情况下,完成对所述初始深度学习网络的训练网络参数的持续训练,得到所述深度学习网络;其中,所述目标网络参数对所述目标训练数据进行处理后,得到的损失小于等于所述预设损失阈值。
在一些实施例中,所述第二分段方式包括:基于第二预设分段阈值分段的第三预设值和第四预设值;所述第三预设值和所述第四预设值为1bit整数型;所述量化单元20,还用于在所述初始深度学习网络的至少一个网络层的网络参数大于所述第二预设分段阈值的情况下,将所述网络参数分段量化为所述第三预设值的所述训练网络参数;在所述初始深度学习网络的至少一个网络层的网络参数小于所述第二预设分段阈值的情况下,将所述网络参数分段量化为所述第四预设值的所述训练网络参数。
在一些实施例中,所述第一数据类型为多bit浮点型。
本公开实施例还提供一种电子设备,图11为本公开实施例提供的电子设备的结构示意图,如图10所示,电子设备2包括:存储器22和处理器23,其中,存储器22和处理器23通过总线21连接;存储器22,用于存储可执行计算机程序;处理器23,用于执行存储器22中存储的可执行计算机程序时,实现本公开实施例提供的方法,例如,本公开实施例提供的数据处理方法。
本公开实施例提供一种计算机可读存储介质,存储有计算机程序,用于引起处理器23执行时,实现本公开实施例提供的方法,例如,本公开实施例提供的数据处理方法。
在本公开的一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
计算机可读存储介质还可以是保持和存储由指令执行设备使用的指令的有形设备,可为易失性存储介质或非易失性存储介质。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:U盘、磁碟、光盘、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦拭可编程只读存储器(EPROM或闪存)、静态随机存储读取器(ROM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、记性编码设备、例如其上存储有指令的打孔卡或凹槽内凹起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电池波、通过波导或其他传媒介质传播的电池波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
在本公开的一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,采用本技术实现方案,获取第一数据类型的待处理数据,并采用第一分段方式将待处理数据分段量化为数据精度小于第一数据类型的1bit整数型的目标数据,以及,利用网络层的目标网络参数是采用第二分段方式对网络参数进行分段量化而得到的1bit整数型的深度学习网络对目标数据进行处理,最终得到相应的处理结果;减少了待处理数据的数据量,从而提高了深度学习网络对数据的处理效率。
以上所述,仅为本公开的实施例而已,并非用于限定本公开的保护范围。凡在本公开的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本公开的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:用于图像处理的神经网络模型训练方法及装置