一种数据处理方法及装置与流程

文档序号:18602211发布日期:2019-09-03 22:48阅读:141来源:国知局
一种数据处理方法及装置与流程
本发明涉及数据处理
技术领域
,尤其涉及一种数据处理方法及装置。
背景技术
:人工神经网络(artificialneuralnetwork,ann),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activationfunction)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。最近十多年来,人工神经网络的研究工作不断深入,已经取得了很大的进展。例如,在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。由于神经网络中涉及到大量的数据处理,例如前向传播计算(前向计算)、反向传播计算(反向计算),减少数据处理时间,提高数据处理速度,对于提高神经网络的性能而言,具有极高的重要性。技术实现要素:本发明实施例提供一种数据处理方法及装置,以解决现有技术中的一个或多个技术问题。第一方面,本发明实施例提供了一种数据处理方法,包括:利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据;将所述中间数据存入缓存单元;从所述缓存单元中读取所述中间数据;利用所述中间数据进行神经网络的反向计算,获得反向计算结果。在一种实施方式中,所述还包括:将所述反向计算结果存入全局内存单元。在一种实施方式中,所述神经网络为递归神经网络rnn(recurrentneuralnetwork),所述全局数据包括:前一次前向计算的输出数据、前一次前向计算的输出数据的权重、本次前向计算的输入数据、本次前向计算的输入数据的权重。在一种实施方式中,利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据之前,还包括:利用所述全局数据进行神经网络的前向计算,获得本次前向计算的输出数据;将所述本次前向计算的输出数据存入全局内存单元。在一种实施方式中,所述缓存单元为寄存器或高速缓冲存储器。第二方面,本发明提供一种数据处理装置,包括:前向复算模块:用于利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据;中间数据存储模块:用于将所述中间数据存入缓存单元;中间数据读取模块:用于从所述缓存单元中读取所述中间数据;反向计算模块:用于利用所述中间数据进行神经网络的反向计算,获得反向计算结果。在一种实施方式中,所述装置还包括:反向计算结果存储模块:用于将所述反向计算结果存入全局内存单元。在一种实施方式中,所述神经网络为递归神经网络rnn,所述全局数据包括:前一次前向计算的输出数据、前一次前向计算的输出数据的权重、本次前向计算的输入数据、本次前向计算的输入数据的权重。在一种实施方式中,所述装置还包括:前向计算模块:用于利用所述全局数据进行神经网络的前向计算,获得本次前向计算的输出数据;前向计算结果存储模块:用于将所述本次前向计算的输出数据存入全局内存单元。在一种实施方式中,所述缓存单元为寄存器或高速缓冲存储器。第三方面,本发明实施例提供了一种数据处理装置,所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述装置的结构中包括处理器和存储器,所述存储器用于存储支持所述装置执行上述数据处理方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信接口,用于与其他设备或通信网络通信。第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储数据处理装置所用的计算机软件指令,其包括用于执行上述数据处理方法所涉及的程序。上述技术方案中的一个技术方案具有如下优点或有益效果:本发明实施例中,在执行反向计算时,首先获取全局数据进行前向计算,然后根据本次进行前向计算获得的结果进行反向计算,相当于除了前向计算时对数据采用前向传播算法进行前向计算之外,在反向计算时还要再对数据执行一次前向计算。虽然计算次数增加,但是无需前向计算时将数据存储在全局内存,且由于全局数据的数据量小于前向计算的中间数据的数据量,在反向计算时,读全局内存的次数减少,从而计算时间消耗减少,提高了数据处理速度。上述技术方案中的另一个技术方案具有如下优点或有益效果:在本发明实施例中,在前向计算时,仅仅需要将前向计算的输出数据存入全局内存,无需将中间结果存入全局内存,不仅减少了全局内存的写数据次数,提高数据处理速度,而且节省了全局内存空间。当前向计算中间结果数据量大时,无需预备大空间的内存存储这些中间数据,也优化了神经网络的结构。上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。附图说明在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。图1示出根据本发明实施例的数据处理方法的流程图。图2示出根据本发明实施例的数据处理方法的流程图。图3示出根据本发明实施例的数据处理方法的流程图。图4示出根据本发明实施例的数据处理方法的流程图。图5示出根据本发明实施例的数据处理方法的流程图。图6示出根据本发明实施例的数据处理装置的结构框图。图7示出根据本发明实施例的数据处理装置的结构框图。图8示出根据本发明实施例的数据处理装置的结构框图。图9a、图9b、图9c、图9d示出采用本发明实施例的数据处理方法改进前后的数据读写示意图。图10示出根据本发明实施例的数据处理设备的结构框图。具体实施方式在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。图1示出根据本发明实施例的数据处理方法的流程图。如图1所示,该数据处理方法包括:步骤s11:利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据。步骤s12:将所述中间数据存入缓存单元。步骤s13:从所述缓存单元中读取所述中间数据。步骤s14:利用所述中间数据进行神经网络的反向计算,获得反向计算结果。神经网络包含多层架构,每一层数据处理都包括前向计算和反向计算。通常,神经网络先执行前向计算,后执行反向计算。反向计算会依赖于前向计算的中间数据。进行前向计算之后,会将前向计算的结果存入全局内存,结果包括前向计算的输出数据和中间数据。在进行反向计算的时候,从全局内存中读出反向计算所需要的中间数据和前一次前向计算的输出数据,直接进行反向计算。然而,全局内存的读写操作需要占用数百始终周期量级,执行前向计算仅仅需要个位数的时钟周期,节省的计算开销弥补不了全局内存访问造成的开销。本发明实施例中,在执行反向计算时,首先获取全局数据进行前向计算,然后根据本次进行前向计算获得的结果进行反向计算。相当于除了前向计算时对数据采用前向传播算法进行前向计算之外,在反向计算时还要再对数据执行一次前向计算。虽然计算次数增加,但是无需前向计算时将数据存储在全局内存,且由于全局数据的数据量小于前向计算的中间数据的数据量,在反向计算时,读全局内存的次数减少,从而计算时间消耗减少,提高了数据处理速度。图2示出根据本发明实施例的数据处理方法的流程图。本实施例中的步骤s11-s14可以参见上述实施例中的相关描述,在此不再赘述。与上述实施例的不同之处在于,如图2所示,该数据处理方法还包括:步骤s21:将所述反向计算结果入全局内存单元。在本发明实施例中,在nvidiagpu(graphicsprocessingunitgpu)硬件体系结构中,片上共享显存、寄存器的访存延时,以及计算指令延迟都比全局显存小100倍左右。因此通过重复计算来减少全局内存访问,减少中间结果保存对于提高数据处理速度具有非常显著的效果。在一种实施方式中,所述神经网络为递归神经网络rnn,所述全局数据包括:前一次前向计算的输出数据、前一次前向计算的输出数据的权重、本次前向计算的输入数据、本次前向计算的输入数据的权重。假设某个rnn神经网络中,前向计算可以采用下述公式。其中w1,w2表示神经网络权重,at表示输入,ft表示输出,xt,yt,zt为中间结果,t表示t时刻。对应前向公式如下:xt=atw1+ft-1w2,公式1yt=xtft-1,公式2zt=xtyt,公式3ft=ytzt,公式4假设代价函数为l,利用链式法对前向计算的公式进行推导可以得到反向公式如下:针对rnn,目前普遍采用如下方法实现:前向过程如下先计算公式1-4,将中间结果xt,yt,zt保存在全局内存中以供反向使用。根据保存的中间变量,反向过程可以复用的中间结果对应表格如下:表1通过本发明实施例提供的方法,前向计算无需保存中间结果,前向过程可以省去xt,yt,zt几个中间结果的保存。反向的时候重新计算一下公式1-4。由于反向会在一个核函数上面实现,并且将中间结果存储在寄存器上面供后续计算使用,而寄存器读取只需要一个时钟周期,而计算指令也是个位数时钟周期量级,故其开销可忽略不计。所以只需要对比优化前后全局内存访问情况,即可分析出性能差异。其中,前向过程全局内存访存的对照如下,r表示读取,w表示写入,优化前表示通常方法,优化后表示本发明实施例提供的方法。表2反向过程全局内存访存如下:atw1w2ft-1xtytztft优化前rrrrr优化后rrrr表3根据表2和表3可知,优化前总访问存储次数为13次,优化后变为9次。可以初略估计出该实现速度性能提升44%,中间结果xt,yt,zt全部不需要保存,节省全局显存开销。在本发明实施例中,数据处理方法适用于常见rnn及其变种,如lstm(longshort-termmemory,长短期记忆网络),lstmp(lstmprojectionlayer,lstm投射层网络),gpu(graphicsprocessingunit,图形处理器),sru(simplerecurrentunits,简单循环单元网络),wavernn(波rnn)等,具有极强的泛化性。图3示出根据本发明实施例的数据处理方法的流程图。本实施例中的步骤s11-s14可以参见上述实施例中的相关描述,在此不再赘述。与上述实施例的不同之处在于,如图3所示,利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据之前,还包括:s31:利用所述全局数据进行神经网络的前向计算,获得本次前向计算的输出数据。例如,参见上述的公式1-4,本次前向计算的输出数据包括ft。s32:将所述本次前向计算的输出数据存入全局内存单元。例如,参见上述的公式可以是公式1-4中的ft,本次前向计算结果包括ft。在本发明实施例中,在前向计算时,仅将前向计算的输出数据存入全局内存,无需将中间结果存入全局内存,不仅减少了全局内存的写数据次数,提高数据处理速度,而且节省了全局内存空间。当前向计算中间结果数据量大时,无需预备大空间的内存存储这些中间数据,也优化了神经网络的结构。在一种实施方式中,所述缓存单元为寄存器或高速缓冲存储器。在反向计算的过程中,执行前向计算时,可以只计算中间数据,不计算输出数据。在本发明一种示例中,如图4所示,数据处理方法包括:步骤s41:利用所述全局数据进行神经网络的前向计算,获得本次前向计算的输出数据。例如,输出数据可以是公式1-4中的ft。步骤s42:将所述本次前向计算的输出数据存入全局内存单元。步骤s43:利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据。步骤s44:将所述中间数据存入缓存单元。步骤s45:从所述缓存单元中读取所述中间数据。步骤s46:利用所述中间数据进行神经网络的反向计算,获得反向计算结果。步骤s47:将所述反向计算结果存入全局内存单元。在反向计算的过程中,执行前向计算时,可以既计算中间数据,又计算输出数据。在本发明另一种示例中,如图5所示,数据处理方法包括:步骤s51:利用所述全局数据进行神经网络的前向计算,获得本次前向计算的中间数据和输出数据。例如,输出数据可以是公式1-4中的ft,中间数据可以是公式1-4中的xt,yt,zt。步骤s52:将所述本次前向计算的输出数据存入全局内存单元。步骤s53:利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据和本次前向计算的输出数据。步骤s54:将所述中间数据存入缓存单元。步骤s55:从所述缓存单元中读取所述中间数据。步骤s56:利用所述中间数据进行神经网络的反向计算,获得反向计算结果。步骤s57:将所述反向计算结果存入全局内存单元。本发明还提供一种数据处理装置,如图6所示,该装置可以包括:前向复算模块61:用于利用全局数据进行神经网络的前向计算,获得用于神经网络的反向计算的中间数据;中间数据存储模块62:用于将所述中间数据存入缓存单元;中间数据读取模块63:用于从所述缓存单元中读取所述中间数据;反向计算模块64:用于利用所述中间数据进行神经网络的反向计算,获得反向计算结果。图7示出根据本发明实施例的数据处理方法的流程图。本实施例中的前向复算模块61、中间数据存储模块62、中间数据读取模块63、反向计算模块64可以参见上述实施例中的相关描述,在此不再赘述。与上述实施例的不同之处在于,如图7所示,所述装置还包括:反向计算结果存储模块71:用于将所述反向计算结果存入全局内存单元。在一种实施方式中,所述神经网络为递归神经网络rnn,所述全局数据包括:前一次前向计算的输出数据、前一次前向计算的输出数据的权重、本次前向计算的输入数据、本次前向计算的输入数据的权重。图8示出根据本发明实施例的数据处理方法的流程图。本实施例中的前向复算模块61、中间数据存储模块62、中间数据读取模块63、反向计算模块64可以参见上述实施例中的相关描述,在此不再赘述。与上述实施例的不同之处在于,如图8所示,所述装置还包括:前向计算模块81:用于利用所述全局数据进行神经网络的前向计算,获得本次前向计算的输出数据;前向计算结果存储模块82:用于将所述本次前向计算的输出数据存入全局内存单元。在一种实施方式中,所述缓存单元为寄存器或高速缓冲存储器。本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。图9a、图9b、图9c、图9d示出采用本发明实施例的数据处理方法改进前后的数据读写示意图。图9a为改进前的前向计算数据读写和处理示意图,图9b为改进前的反向计算的数据读写和处理示意图,图9c为改进后的前向计算数据读写和处理示意图,图9d为改进后的反向计算数据读写和处理示意图。采用本发明实施例提供的数据处理方法,反向计算时,无需从全局内存中读取中间数据,只需要读取全局数据,反向计算时使用的全局数据的数据量小于前向计算时的中间数据的数据量。前向计算时,无需将中间数据存入全局内存,只需要将输出数据存入全局内存。因而能够减少全局内存的访问次数,减少全局数据的读写次数,提高数据处理速度。图10示出根据本发明实施例的数据处理设备的结构框图。如图10所示,该设备包括:存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。所述处理器920执行所述计算机程序时实现上述实施例中的数据处理方法。所述存储器910和处理器920的数量可以为一个或多个。该设备还包括:通信接口930,用于与外界设备进行通信,进行数据交互传输。存储器910可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(isa,industrystandardarchitecture)总线、外部设备互连(pci,peripheralcomponentinterconnect)总线或扩展工业标准体系结构(eisa,extendedindustrystandardarchitecture)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述实施例中任一所述的方法。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属
技术领域
的技术人员所理解。在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。本
技术领域
的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1