数据处理方法和装置与流程

文档序号:12122767阅读:340来源:国知局
数据处理方法和装置与流程

本申请涉及计算机技术领域,具体涉及数据处理技术领域,尤其涉及数据处理方法和装置。



背景技术:

计算机处理的数值数据多为小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点在一个固定的位置上,这种小数称为定点数据;一种是小数点位置可以浮动,这种小数称为浮点数据。定点数据的运算过程被称为定点运算,浮点数据的运算过程被称为浮点运算;通常,浮点运算所耗费的运算资源大于定点运算所耗费的运算资源。

然而,现有的数据处理方式通常是对接收到的浮点数据进行浮点运算,再返回浮点形式的运算结果,浮点数据的运算过程中耗费大量的运算资源和运算时间,从而,存在着数据处理效率低的问题。



技术实现要素:

本申请的目的在于提出一种改进的数据处理方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种数据处理方法,上述方法包括:接收电子设备发送的浮点数据;根据接收到的浮点数据的数据长度和数值范围,将接收到的浮点数据转换为定点数据;根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据;将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至上述电子设备。

第二方面,本申请提供了一种数据处理装置,上述装置包括:接收单元,用于接收电子设备发送的浮点数据;转换单元,用于根据接收到的浮点数据的数据长度和数值范围,将接收到的浮点数据转换为定点数据;运算单元,用于根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据;发送单元,用于将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至上述电子设备。

本申请提供的数据处理方法和装置,通过接收电子设备发送的浮点数据;根据接收到的浮点数据的数据长度和数值范围,将接收到的浮点数据转换为定点数据;根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据;将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至上述电子设备,从而可以对浮点数据进行处理效率更高的定点运算,提高了处理数据的效率。

附图说明

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

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的数据处理方法的一个实施例的流程图;

图3是根据本申请的数据处理方法中,将浮点数据转换为定点数据的一种实现方式的流程图;

图4是根据本申请的数据处理方法的又一个实施例的流程图;

图5是根据本申请的数据处理装置的一个实施例的结构示意图。

具体实施方式

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

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

图1示出了可以应用本申请的数据处理方法的实施例的示例性系统架构100。如图1所示,系统架构100可以包括通用处理器101和专用服务器102。

通用处理器101用于将浮点数据发送给专用处理器102,专用处理器102可以将接收到的浮点数据转换为定点数据,然后根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据,再将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至通用处理器101。其中,通用处理器101也可以称为主机,而专用处理器102可以是由FPGA(Field-Programmable Gate Array,即现场可编程门阵列)设计而成,当然,专用处理器102也可以在通用处理器101上实现,为与102所示的电子设备进行区分,在这里称为专用处理器。

需要说明的是,本申请实施例涉及的电子设备一般是指图1中的通用处理器101,而本申请实施例所提供的数据处理方法一般由专用处理器102执行,相应地,数据处理装置一般设置于专用处理器102中。

应该理解,图1中的通用处理器101和专用处理器102的数目仅仅是示意性的。根据实现需要,可以具有任意数目的通用处理器和专用处理器。

继续参考图2,其示出了根据本申请的数据处理方法的一个实施例的流程200。上述的数据处理方法,包括以下步骤:

步骤201,接收电子设备发送的浮点数据。

在本实施例中,数据处理方法运行于其上的处理器(例如图1所示的专用处理器102)可以接收电子设备(例如图1所示的通用处理器101)发送的浮点数据。

在本实施例的一些可选的实现方式中,上述浮点数据可以是应用接收的数据;例如,上述浮点数据可以是搜索类应用接收的搜索请求,上述浮点数据还可以是语音类助手类应用接收的待识别语音数据。

步骤202,根据接收到的浮点数据的数据长度和数值范围,将接收到的浮点数据转换为定点数据。

在本实施例中,数据处理方法运行于其上的处理器(例如图1所示的专用处理器102)可以首先确定接收到的浮点数据的数据长度和数值范围,然后根据确定的数据长度和数值范围,将接收到的浮点数据转换为定点数据。

在本申请中,根据接收到的浮点数据的数据长度和数值范围,进行定浮点转换,相对于现有技术中预先设置较大的数据长度和数值范围进行转换,提高了转换的精度。

在本实施例的一些可选的实现方式中,如图3所示,步骤202“根据接收到的浮点数据的数据长度和数值范围,将接收到的浮点数据转换为定点数据”可以通过如下步骤来实现:

步骤301,获取为浮点数据预先分配的存储空间的地址。

在本实现方式中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以获取为所述浮点数据预先分配的存储空间的地址。在这里,上述存储空间包括第一存储空间和第二存储空间。

作为示例,上述浮点数据的数据长度可以是4字节、8字节等。

步骤302,根据接收到的浮点数据的数据长度和数值范围,确定浮点数据与定点数据之间相互转换的转换信息。

在本实现方式中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以根据接收到的接收到的浮点数据的数据长度和数值范围,确定浮点数据与定点数据之间相互转换的转换信息。

在本实施例的一些可选的实现方式中,可以根据每个接收到的浮点数据的数据长度和数值范围,确定浮点数据与定点数据之间相互转换的转换信息。

在本实施例的一些可选的实现方式中,上述根据接收到的浮点数据的数据长度和数值范围,确定浮点数据与定点数据之间相互转换的转换信息,可以包括:将接收到的预定数目个浮点数据作为浮点数据集合;比较上述浮点数据集合中各个浮点数据的数值范围,确定第一最大数值范围;根据上述第一数据长度和第一最大数值范围,确定第一转换信息,其中,上述第一转换信息用于将上述浮点数据集合中各个浮点数据转换为定点数据。

在本实现方式中,在比较上述浮点数据集合中各个浮点数据的数值范围之前,可以先将接收到的预设数目个浮点数据存入临时存储空间,然后再进行比较、确定的步骤。

在本实现方式中,上述第一转换信息可以包括上述第一数据长度和第一最大数值范围。

在本实现方式中,上述第一转换信息可以包括上述第一数据长度、第一最大数值范围和第一转换精度,其中,上述第一转换精度为上述第一最大数值范围的倒数。

在本实现方式中,上述第一转换信息可以包括上述第一数据长度和第一转换精度,其中,上述第一转换精度为上述第一最大数值范围的倒数。

作为示例,将接收到的10个浮点数据作为浮点数据集合,比较浮点数据集合中这十个浮点数据的数据长度和数值范围,确定第一最大数值范围,并且确定预设的第一数据长度,例如,第一数据长度为x,第一最大数值范围为y,那么可以得到第一转换精度为第一最大数值范围的倒数,即1/y;确定(x,y,1/y)为第一转换信息,即浮点数据集合中这十个浮点数据的转换为定点数据的转换信息。

步骤303,根据所确定的转换信息,将接收到的浮点数据转换为定点数据。

在本实现方式中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以根据所确定的转换信息,将接收到的浮点数据转换为定点数据。

作为示例,浮点数据为a,确定的第一转换信息为第一数据长度和第一转换精度(x,1/y),定点数据为a×(1/y)×(1<<(x-1)-1),其中,“<<”为左移符,另外,第一数据长度减1再左移是因为一般会在浮点数据的最左端设置符号位,如果未采用在浮点数据的最左端设置符号位的方式,也可以不对第一数据长度减1再左移。

本领域技术人员可以理解,在确定了转换信息后,如何根据所确定的转换信息将浮点数据转换为定点数据是本领域技术人员所公知的,本实施例相对于现有技术的关键点在于如何确定转换信息,因此,对如何根据所确定的转换信息将浮点数据转换为定点数据在此不再赘述。

步骤304,将所确定的转换信息和转换得到的定点数据对应存储至第一存储空间和第二存储空间。

在本实现方式中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以将所确定的转换信息和转换得到的定点数据对应存储至第一存储空间和第二存储空间。

在本实施例的一些可选的实现方式中,上述处理器还可以将第二存储空间的地址发送至上述电子设备,作为接收到的浮点数据的存储地址;上述电子设备默认第二存储空间即为浮点数据的存储地址,在对此浮点数据进行调用时,利用上述第二存储空间的地址,即可完成对存储于上述第二存储空间的浮点数据的调用。上述电子设备默认上述处理器对浮点数据的处理方式为浮点运算,即上述处理器的运算过程对电子设备透明,从而在上述处理器可以利用任意精度的定点运算,实现更为灵活的数据处理方式。

步骤203,根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据。

在本实现方式中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据。

作为示例,上述预设算法可以是加权算法,例如,转换得到十个定点数据,预先为这是个数据设置对应的权值,预设算法为各个定点数据与其对于的权值相乘,得到十个定点形式的结果数据。

作为示例,上述预设算法也可以是加权后求和的算法,例如,转换得到十个定点数据,预先为这是个数据设置对应的权值,预设算法为各个定点数据与其对于的权值相乘,再将得到的十个乘积相加,得到一个定点形式的结果数据。

本领域技术人员可以理解的是,预设算法可以是多种多样的,无法被穷举,因此在此不再赘述。

步骤204,将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至电子设备。

在本实现方式中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以首先将得到的定点形式的结果数据转换为浮点形式的结果数据,然后将浮点形式的结果数据发送至上述电子设备。

在本实施例的一些可选的实现方式中,可以根据预设算法和转换得到的定点数据的转换信息,将定点形式的结果数据转换为浮点形式的结果数据。

本领域技术人员可以理解,关于如何根据预设算法和转换得到的定点数据的转换信息,将定点形式的结果数据转换为浮点形式的结果数据的具体实现细节,本领域技术人员可以结合现有技术合理推导得到,如何转换的实现细节不是本步骤的关键点,在此不再赘述。

本实施例提供的数据处理方法,通过将接收自电子设备的浮点数据转换为定点数据后,进行定点运算,再将运算结果转换为浮点形式的结果数据发送至电子设备,对于电子设备来说,提高了数据处理的效率。

进一步参考图4,其示出了数据处理方法的又一个实施例的流程400。该数据处理方法的流程400,包括以下步骤:

步骤401,将接收到的待处理数据和各个计算层的预设权重数据转换为定点数据,得到待处理定点数据和各个计算层的预设权重定点数据。

在本实施例中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以将接收到的待处理数据和各个计算层的预设权重数据转换为定点数据,由此得到待处理定点数据和各个计算层的预设权重定点数据。在这里,上述待处理定点数据是定点形式的待处理数据,上述预设权重定点数据是定点形式的预设权重数据。

在这里,上述待处理数据和各个计算层的预设权重数据为上述电子设备接收到的数据;上述各个计算层为预设的神经网络模型的计算层,即神经网络模型包括至少一个包括预设算法和预设权重数据的计算层。

本领域技术人员可以理解的是,神经网络模型的计算层可以是多种类型,例如卷积层、全连接层、池化层等;有的层,例如池化层,可能没有预设权重数据;神经网络模型可以包括至少一个包括预设算法和预设权重数据的计算层,也可以包括不设置预设权重数据的计算层,本实施例中讨论的计算层是包括预设算法和预设权重数据的计算层。

关于如何将接收到的各个计算层的预设权重数据转换为定点数据,可以参考图2和图3对应的实施例中的相关说明,在此不再赘述。

步骤402,将转换得到的待处理定点数据导入神经网络模型。

在本实施例中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以将步骤401转换得到的待处理定点数据导入上述神经网络模型。

步骤403,根据上述神经网络模型中各层的预设算法和预设权重定点数据,对导入上述神经网络模型的待处理定点数据进行运算,并得到定点形式的结果数据。

在本实施例中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以根据上述神经网络模型中各层的预设算法和预设权重定点数据,对导入上述神经网络模型的待处理定点数据进行运算,并得到定点形式的结果数据。

在本实施例的一些可选的实现方式中,上述处理器还可以在每一计算层得出定点形式的结果数据后,将定点形式的结果数据转换为浮点形式的结果数据,再根据转换得到的浮点形式的结果数据,确定浮点形式的结果数据的转换信息;具体的实现方式可以参考以下说明:

在本实现方式中,对于上述神经网络模型中的每一包括预设算法和预设权重数据的计算层,根据该层的预设算法和预设权重定点数据,对输入该层的定点数据进行运算,得到该层的定点形式的各个输出数据,作为第一输出数据集合。作为示例,如果上述本实现方式中的计算层是神经网络模型的第一个包括预设算法和预设权重数据的计算层,可以将待处理定点数据作为本层的输入数据,首先将待处理定点数据与对应的预设权重定点数据相乘,利用本层的预设算法对各个乘积进行进一步运算,得到该层的定点形式的各个输出数据。作为示例,如果上述本实现方式中的计算层是神经网络模型的除第一个包括预设算法和预设权重数据的计算层之外的计算层,可以将上一层的定点形式的各个输出数据作为本层的输入数据,将本层的输入数据与本层的预设权重定点数据相乘,再利用本层的预设算法对各个乘积进行进一步运算,得到该层的定点形式的各个输出数据。

在本实现方式中,对于上述第一输出数据集合中的各个输出数据,根据得到的该输出数据的定点数据和预设权重定点数据的转换信息,将上述定点形式的输出数据转换为浮点形式的输出数据,并得到第二输出数据集合。在这里,得到的该输出数据的定点数据可以是该层的输入数据,得到的该输出数据的预设权重定点数据可以是与该层的输入数据的对应的权重定点数据。

本领域技术人员可以理解,如何根据得到该输出数据的定点数据和预设权重定点数据的转换信息,将定点形式的输出数据转换为浮点形式的输出数据,与预设算法有关,在本实施例的启示下,本领域技术人员可以在面对具体算法时,合理推导出如何根据得到的该输出数据的定点数据和预设权重定点数据的转换信息,将定点形式的输出数据转换为浮点形式的输出数据,在此不再赘述。

在本实现方式中,根据上述第二输出数据集合中的各个浮点形式的输出数据的最长数据长度和最大数值范围,确定上述第一输出数据集合中定点形式的输出数据的第二转换信息。在这里,上述第二转换信息用于将上述第一输出数据集合中定点形式的输出数据转换为浮点形式的输出数据;或者,当第一输出数据集合中的定点形式的输出数据作为下一层的输入数据时,可以根据上述第二转换信息确定定点形式的输出数据的转换信息,并由此将下一层的定点形式的输出结果转换为浮点形式的输出数据。

关于如何根据上述第二输出数据集合中的各个浮点形式的输出数据的最长数据长度和最大数值范围,确定上述第一输出数据集合中定点形式的输出数据的第二转换信息的实现细节,可参考图3对应实施例的相关说明,在此不再赘述。

步骤404,将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至上述电子设备。

在本实施例中,数据处理方法运行于其上的处理器(例如图1上述的专用处理器102)可以将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至上述电子设备

从图4中可以看出,与图2对应的实施例相比,本实施例中的数据处理方法的流程400对数据处理方法在神经网络模型中的应用进行了说明。由此,本实施例描述的方案可以提高利用神经网络模型进行数据处理的效率。

进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种数据处理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于图1所示的专用处理器102中。

如图5所示,本实施例上述的数据处理装置500包括:接收单元501、转换单元502、运算单元503和发送单元504。其中,接收单元501,用于接收电子设备发送的浮点数据;转换单元502,用于根据接收到的浮点数据的数据长度和数值范围,将接收到的浮点数据转换为定点数据;运算单元503,用于根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据;发送单元504,用于将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至上述电子设备。

在本实施例中,数据处理装置500的接收单元501可以接收电子设备(例如图1所示的通用处理器101)发送的浮点数据。

在本实施例中,基于接收单元501接收的浮点数据,转换单元502可以首先确定接收到的浮点数据的数据长度和数值范围,然后根据确定的数据长度和数值范围,将接收到的浮点数据转换为定点数据。

在本实施例中,运算单元503可以根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据。

在本实施例中,发送单元504可以首先将得到的定点形式的结果数据转换为浮点形式的结果数据,然后将浮点形式的结果数据发送至上述电子设备。

在本实施例的一些可选的实现方式中,上述转换单元502可以包括:获取子单元5021,用于获取为上述浮点数据预先分配的存储空间的地址,其中,上述存储空间包括第一存储空间和第二存储空间;确定子单元5022,用于根据接收到的浮点数据的数据长度和数值范围,确定浮点数据与定点数据之间相互转换的转换信息;转换子单元5023,用于根据所确定的转换信息,将接收到的浮点数据转换为定点数据;存储子单元5024,用于将所确定的转换信息和转换得到的定点数据对应存储至上述第一存储空间和上述第二存储空间。

在本实施例的一些可选的实现方式中,上述确定子单元5022,可以进一步用于:将接收到的预定数目个浮点数据作为浮点数据集合;比较上述浮点数据集合中各个浮点数据的数值范围,确定第一最大数值范围;根据预设的第一数据长度和上述第一最大数值范围,确定第一转换信息,其中,上述第一转换信息用于将上述浮点数据集合中各个浮点数据转换为定点数据。

在本实施例的一些可选的实现方式中,上述接收的浮点数据可以包括待处理数据和神经网络模型的各个计算层的预设权重数据,其中,上述神经网络模型包括至少一个预设算法和预设权重数据的计算层;以及上述转换单元502,可以进一步用于:将接收到的待处理数据和各个计算层的预设权重数据转换为定点数据,得到待处理定点数据和各个计算层的预设权重定点数据。

在本实施例的一些可选的实现方式中,上述运算单元503,可以进一步包括:导入子单元5031,用于将转换得到的待处理定点数据导入神经网络模型;神经网络子单元5032,用于根据上述神经网络模型中各层的预设算法和预设权重定点数据,对导入上述神经网络模型的待处理定点数据进行运算,并得到定点形式的结果数据。

在本实施例的一些可选的实现方式中,上述神经网络子单元5032,可以进一步用于:对于上述神经网络模型中的每一包括预设算法和预设权重数据的计算层,根据该层的预设算法和预设权重定点数据,对输入该层的定点数据进行运算,得到该层的定点形式的各个输出数据,作为第一输出数据集合;对于上述第一输出数据集合中的各个输出数据,根据得到该输出数据的定点数据和预设权重定点数据的转换信息,将上述定点形式的输出数据转换为浮点形式的输出数据,并得到第二输出数据集合;根据上述第二输出数据集合中的各个浮点形式的输出数据的最长数据长度和最大数值范围,确定上述第一输出数据集合中定点形式的输出数据的第二转换信息,其中,上述第二转换信息用于将上述第一输出数据集合中定点形式的输出数据转换为浮点形式的输出数据。

本实施例提供的数据处理装置的实现细节和技术效果可以参考图2-图4所对应的实施例的相关说明,在此不再赘述。

本申请上述实施例提供的数据处理方法可以应用于利用FPGA等硬件架构进行业务处理的系统中。其中FPGA可以包括计算单元和存储单元,FPGA通过PCI-E接口与包含上述通用处理器(例如CPU)的电子设备进行通信。可以通过PCI-E接口从通用处理器获取待处理浮点数据并将处理结果通过PCI-E接口返回上述通用处理器。

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

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、转换单元、信运算单元和发送单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“用于接收电子设备发送的浮点数据的单元”。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中上述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当上述一个或者多个程序被一个设备执行时,使得上述设备:接收电子设备发送的浮点数据;根据接收到的浮点数据的数据长度和数值范围,将接收到的浮点数据转换为定点数据;根据预设算法,对转换得到的定点数据进行运算,并得到定点形式的结果数据;将得到的定点形式的结果数据转换为浮点形式的结果数据,并将浮点形式的结果数据发送至上述电子设备。该实施方式提高了数据处理的效率。

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

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