首页 / 专利库 / 专利权 / 申请 / 数据处理方法、装置、计算机系统及存储介质

数据处理方法、装置、计算机系统及存储介质

阅读:124发布:2021-04-10

专利汇可以提供数据处理方法、装置、计算机系统及存储介质专利检索,专利查询,专利分析的服务。并且本 申请 涉及一种 数据处理 方法、装置、 计算机系统 及存储介质。本申请的数据处理方法、装置、计算机系统及存储介质可以大大的缩短循环神经网络 节点 的离线模型生成时间,进而提高处理器的处理速度及效率。,下面是数据处理方法、装置、计算机系统及存储介质专利的具体信息内容。

1.一种数据处理方法,其特征在于,所述方法包括:
获取循环神经网络节点,所述循环神经网络节点包括至少一个循环神经网络单元;
根据所述循环神经网络节点中单个的循环神经网络单元的模型数据集和模型结构参数,运行所述单个的循环神经网络单元,获得所述单个的循环神经网络单元对应的指令数据;
根据所述单个的循环神经网络单元对应的指令数据,获得所述单个的循环神经网络单元对应的第一离线模型;
其中,所述第一离线模型包括所述单个的循环神经网络单元的权值数据和指令数据。
2.根据权利要求1所述的方法,其特征在于,所述的根据所述单个的循环神经网络单元对应的指令数据获得所述单个的循环神经网络单元对应的第一离线模型的步骤,包括:
将所述单个的循环神经网络单元的权值数据和指令数据进行对应存储,获得所述单个的循环神经网络单元对应的第一离线模型。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
判断所述第一离线模型是否是有状态的;
若所述第一离线模型是有状态的,则所述第一离线模型还包括状态输入数据,所述状态输入数据为所述隐含层之前的上一循环神经网络单元的输出数据。
4.根据权利要求1或2所述的方法,其特征在于,所述获取循环神经网络节点的步骤,包括:
获取包含所述循环神经网络节点的原始网络;
根据所述原始网络的模型结构参数,确定所述原始网络中各个节点的依赖关系;
根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个所述循环神经网络节点的输入节点和输出节点
断开所述循环神经网络节点的输入节点和输出节点与所述循环神经网络节点之间的连接,获得至少一个所述循环神经网络节点。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个节点的执行顺序;
根据所述各个节点的执行顺序运行所述原始网络,获得所述原始网络中各个非循环神经网络节点的指令数据;
将各个所述非循环神经网络节点对应的权值数据和指令数据对应存储,获得第二离线模型;
其中,所述第二离线模型包括所述原始网络中各个非循环神经网络节点的权值数据和指令数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取新的原始网络;
若所述新的原始网络存在对应的离线模型,则获取所述新的原始网络对应的离线模型,并根据所述新的原始网络对应的离线模型运行所述新的原始网络,其中,所述新的原始网络对应的离线模型包括所述第一离线模型和所述第二离线模型。
7.一种数据处理装置,其特征在于,所述装置包括:
第一获取模,用于获取循环神经网络节点,所述循环神经网络节点包括至少一个循环神经网络单元;
运行模块,用于根据所述循环神经网络节点中单个的循环神经网络单元的模型数据集和模型结构参数,运行所述单个的循环神经网络单元,获得所述单个的循环神经网络单元对应的指令数据;
生成模块,用于根据所述单个的循环神经网络单元对应的指令数据,获得所述单个的循环神经网络单元对应的第一离线模型;
其中,所述第一离线模型包括所述单个的循环神经网络单元的权值数据和指令数据。
8.根据权利要求7所述的装置,其特征在于,所述生成模块还用于将所述单个的循环神经网络单元的权值数据和指令数据进行对应存储,获得所述单个的循环神经网络单元对应的第一离线模型。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括判断模块以及第一执行模块;
所述判断模块,用于判断所述第一离线模型是否是有状态的;
所述第一执行模块,用于若所述第一离线模型是有状态的,则所述第一离线模型还包括状态输入数据,所述状态输入数据为所述隐含层之前的上一循环神经网络单元的输出数据。
10.根据权利要求7所述的装置,其特征在于,所述获取模块包括:
第一获取单元,用于获取包含所述循环神经网络节点的原始网络;
第一确定单元,用于根据所述原始网络的模型结构参数,确定所述原始网络中各个节点的依赖关系;
所述第一确定单元,还用于根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个所述循环神经网络节点的输入节点和输出节点;
第一执行单元,用于断开所述循环神经网络节点的输入节点和输出节点与所述循环神经网络节点之间的连接,获得至少一个所述循环神经网络节点。
11.根据权利要求10所述的装置,其特征在于,所述获取模块还包括第二确定单元以及第二执行单元:
所述第二确定单元,用于根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个节点的执行顺序;
所述第二执行单元,用于根据所述各个节点的执行顺序运行所述原始网络,获得所述原始网络中各个非循环神经网络节点的指令数据;
所述生成模块,用于将各个所述非循环神经网络节点对应的权值数据和指令数据对应存储,获得第二离线模型;
其中,所述第二离线模型包括所述原始网络中各个非循环神经网络节点的权值数据和指令数据。
12.一种计算机系统,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,执行如权利要求1-6任一项所述的方法。
13.根据权利要求12所述的计算机系统,其特征在于,所述处理器包运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;
所述控制器单元,用于获取输入数据以及指令;
所述控制器单元,还用于解析所述指令得到多个指令数据,将多个指令数据以及所述输入数据发送给所述主处理电路;
所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和指令数据;
所述多个从处理电路,用于依据从所述主处理电路传输的数据以及指令数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述指令的结果。
14.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序,当所述计算机程序被一个或多个处理器执行时,执行如权利要求1-6任一项所述的方法。

说明书全文

数据处理方法、装置、计算机系统及存储介质

技术领域

[0001] 本申请涉及计算机技术领域,特别是涉及一种数据处理方法、装置、计算机系统及存储介质。

背景技术

[0002] 随着人工智能技术的发展,如今深度学习已无处不在且必不可少,并随之产生了许多可扩展的深度学习系统,例如,TensorFlow、MXNet、Caffe和PyTorch等等,上述深度学习系统可以用于提供各种能够在CPU或GPU等处理器上运行的神经网络模型。一般地,神经网络可以包括循环神经网络以及非循环神经网络等。
[0003] 然而,通常生成循环神经网络的时间与循环次数和层数的指数成正比,在一层循环神经网络中,若循环次数为10^2量级时,直接生成离线模型需要的时间超过12个小时,离线模型生成时间过长,导致处理效率低。发明内容
[0004] 基于此,有必要针对上述技术问题,提供一种能够提高处理效率的数据处理方法、装置、计算机系统及存储介质。
[0005] 一种数据处理方法,所述方法包括:
[0006] 获取循环神经网络节点,所述循环神经网络节点包括至少一个循环神经网络单元;
[0007] 根据所述循环神经网络节点中单个的循环神经网络单元的模型数据集和模型结构参数,运行所述单个的循环神经网络单元,获得所述单个的循环神经网络单元对应的指令数据;
[0008] 根据所述单个的循环神经网络单元对应的指令数据,获得所述单个的循环神经网络单元对应的第一离线模型;
[0009] 其中,所述第一离线模型包括所述单个的循环神经网络单元的权值数据和指令数据。
[0010] 在其中一个实施例中,将所述单个的循环神经网络单元的权值数据和指令数据进行对应存储,获得所述单个的循环神经网络单元对应的第一离线模型。
[0011] 在其中一个实施例中,判断所述第一离线模型是否是有状态的;
[0012] 若所述第一离线模型是有状态的,则所述第一离线模型还包括状态输入数据,所述状态输入数据为所述隐含层之前的上一循环神经网络单元的输出数据。
[0013] 在其中一个实施例中,获取包含所述循环神经网络节点的原始网络;
[0014] 根据所述原始网络的模型结构参数,确定所述原始网络中各个节点的依赖关系;
[0015] 根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个所述循环神经网络节点的输入节点和输出节点
[0016] 断开所述循环神经网络节点的输入节点和输出节点与所述循环神经网络节点之间的连接,获得至少一个所述循环神经网络节点。
[0017] 在其中一个实施例中,根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个节点的执行顺序;
[0018] 根据所述各个节点的执行顺序运行所述原始网络,获得所述原始网络中各个非循环神经网络节点的指令数据;
[0019] 将各个所述非循环神经网络节点对应的权值数据和指令数据对应存储,获得第二离线模型;
[0020] 其中,所述第二离线模型包括所述原始网络中各个非循环神经网络节点的权值数据和指令数据。
[0021] 在其中一个实施例中,获取新的原始网络;
[0022] 若所述新的原始网络存在对应的离线模型,则获取所述新的原始网络对应的离线模型,并根据所述新的原始网络对应的离线模型运行所述新的原始网络,其中,所述新的原始网络对应的离线模型包括所述第一离线模型和所述第二离线模型。
[0023] 一种数据处理装置,所述装置包括:
[0024] 第一获取模,用于获取循环神经网络节点,所述循环神经网络节点包括至少一个循环神经网络单元;
[0025] 运行模块,用于根据所述循环神经网络节点中单个的循环神经网络单元的模型数据集和模型结构参数,运行所述单个的循环神经网络单元,获得所述单个的循环神经网络单元对应的指令数据;
[0026] 生成模块,用于根据所述单个的循环神经网络单元对应的指令数据,获得所述单个的循环神经网络单元对应的第一离线模型;
[0027] 其中,所述第一离线模型包括所述单个的循环神经网络单元的权值数据和指令数据。
[0028] 在其中一个实施例中,所述生成模块还用于将所述单个的循环神经网络单元的权值数据和指令数据进行对应存储,获得所述单个的循环神经网络单元对应的第一离线模型。
[0029] 在其中一个实施例中,所述装置还包括判断模块以及第一执行模块;
[0030] 所述判断模块,用于判断所述第一离线模型是否是有状态的;
[0031] 所述第一执行模块,用于若所述第一离线模型是有状态的,则所述第一离线模型还包括状态输入数据,所述状态输入数据为所述隐含层之前的上一循环神经网络单元的输出数据。
[0032] 在其中一个实施例中,所述获取模块包括:
[0033] 第一获取单元,用于获取包含所述循环神经网络节点的原始网络;
[0034] 第一确定单元,用于根据所述原始网络的模型结构参数,确定所述原始网络中各个节点的依赖关系;
[0035] 所述第一确定单元,还用于根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个所述循环神经网络节点的输入节点和输出节点;
[0036] 第一执行单元,用于断开所述循环神经网络节点的输入节点和输出节点与所述循环神经网络节点之间的连接,获得至少一个所述循环神经网络节点。
[0037] 在其中一个实施例中,所述获取模块还包括第二确定单元以及第二执行单元:
[0038] 所述第二确定单元,用于根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个节点的执行顺序;
[0039] 所述第二执行单元,用于根据所述各个节点的执行顺序运行所述原始网络,获得所述原始网络中各个非循环神经网络节点的指令数据;
[0040] 所述生成模块,用于将各个所述非循环神经网络节点对应的权值数据和指令数据对应存储,获得第二离线模型;
[0041] 其中,所述第二离线模型包括所述原始网络中各个非循环神经网络节点的权值数据和指令数据。
[0042] 一种计算机系统,包括:包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,执行上述任一项所述的方法。
[0043] 在其中一个实施例中,所述处理器包运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;
[0044] 所述控制器单元,用于获取输入数据以及指令;
[0045] 所述控制器单元,还用于解析所述指令得到多个指令数据,将多个指令数据以及所述输入数据发送给所述主处理电路;
[0046] 所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和指令数据;
[0047] 所述多个从处理电路,用于依据从所述主处理电路传输的数据以及指令数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
[0048] 所述主处理电路,用于对所述多个中间结果执行后续处理得到所述指令的结果。
[0049] 一种计算机存储介质,所述计算机存储介质中存储有计算机程序,当所述计算机程序被一个或多个第一处理器执行时,执行如上述任一项所述的方法。
[0050] 上述数据处理方法、装置、计算机系统及存储介质,通过根据单个的循环神经网络单元的模型数据集和模型结构参数,运行该循环神经网络单元,获得单个的循环神经网络单元的指令数据,进而获得单个的循环神经网络单元对应的第一离线模型,第一离线模型包括单个的循环神经网络单元的权值数据和指令数据。本申请的数据处理方法,只需获得单个的循环神经网络单元的第一离线模型,无需对该循环神经网络节点中的所有循环神经网络单元进行编译及运算,从而可以大大的缩短循环神经网络节点的离线模型生成时间,进而提高处理器的处理速度及效率。附图说明
[0051] 图1为一实施例的计算机系统的系统框图
[0052] 图2为另一实施例的计算机系统的系统框图;
[0053] 图3为一实施例的处理器的系统框图;
[0054] 图4为一个实施例中数据处理方法的流程示意图;
[0055] 图5为一个实施例中循环神经网络的结构示意图;
[0056] 图6为步骤S310的流程示意图;
[0057] 图7为步骤S100的流程示意图;
[0058] 图8为一个实施例的数据处理方法的流程示意图;
[0059] 图9为一个实施例的神经网络的网络结构图;
[0060] 图10为一个实施例中数据处理装置的结构框图;
[0061] 图11为另一个实施例的数据处理方法的流程示意图;
[0062] 图12为一个实施例中数据处理方法的流程示意图;
[0063] 图13为一个实施例的运行等效网络的流程示意图;
[0064] 图14为另一个实施例的获取等效网络的流程示意图;
[0065] 图15为步骤S7012的流程示意图;
[0066] 图16为步骤S900的流程示意图;
[0067] 图17为一个实施例中数据处理装置的结构框图。

具体实施方式

[0068] 为了使本发明的技术方案更加清楚,以下结合附图,对本发明的神经网络处理方法、计算机系统及存储介质作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明并不用于限定本发明。
[0069] 图1为一实施例的计算机系统1000的框图,该计算机系统1000可以包括处理器110以及与该处理器110连接的存储器120。请继续参阅图2,其中,该处理器110用于提供计算和控制能,其可以包括获取模块111、运算模块113及控制模块112等等,其中,该获取模块111可以是IO(Input输入/Output输出)接口硬件模块,运算模块113及控制模块112均为硬件模块。例如,运算模块113及控制模块112可以为数字电路或模拟电路等等。上述硬件电路的物理实现包括但不限于物理器件,物理器件包括但不限于晶体管及忆阻器等等。
[0070] 可选地,处理器110可以是通用处理器,如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing  Unit,图形处理器)或DSP(Digital  Signal Processing,数字信号处理),该处理器110还可以为IPU(Intelligence Processing Unit,智能处理器)等专用神经网络处理器。当然,该处理器110还可以是指令集处理器、相关芯片组、专用微处理器(如,专用集成电路(ASIC))或用于缓存用途的板载存储器等等。
[0071] 可选地,请参阅图3,该处理器110用于执行机器学习计算,该处理器110包括:控制器单元20和运算单元12,其中,控制器单元20与运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路;
[0072] 控制器单元20,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
[0073] 上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
[0074] 控制器单元20,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
[0075] 主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
[0076] 多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
[0077] 主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
[0078] 本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
[0079] 可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
[0080] 对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
[0081] 上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
[0082] 对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有层,,对于第层和第层来说,我们将第层称为输入层,其中的神经元为所述输入神经元,第层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
[0083] 可选的,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
[0084] 可选的,该控制器单元20包括:指令存储单元210、指令处理单元211和存储队列单元212;
[0085] 指令存储单元210,用于存储所述人工神经网络运算关联的计算指令;
[0086] 所述指令处理单元211,用于对所述计算指令解析得到多个运算指令;
[0087] 存储队列单元212,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
[0088] 举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号
[0089] 该存储器120还可以存储有计算机程序,该计算机程序用于实现本申请实施例中提供的数据处理方法。具体地,该数据处理方法用于生成与该处理器110接收的原始网络中的循环神经网络节点相对应的第一离线模型,该第一离线模型中可以包含该单个的循环神经网络单元的权值数据和指令数据,其中,指令数据可以用于表明该节点用于执行何种计算功能,从而在处理器110再次运行该循环神经网络节点时,可以通过循环调用该循环神经网络单元对应的第一离线模型,无需对循环神经网络节点中各个网络单元重复进行编译等运算操作,大大缩短循环神经网络节点的离线模型生成时间,从而缩短处理器110运行该网络时的运行时间,进而提高处理器110的处理速度及效率。
[0090] 可选地,请继续参阅图2,该存储器120可以包括第一存储单元121、第二存储单元122和第三存储单元123,其中,该第一存储单元121可以用于存储计算机程序,该计算机程序用于实现本申请实施例中提供的数据处理方法。该第二存储单元122可以用于存储神经网络运行过程中相关数据,该第三存储单元123用于存储离线模型。可选地,该存储器包含的存储单元的数量还可以大于三个,此处不做具体限定。存储器120可以是内存储器,如缓存等易失性存储器,其可以用于存储神经网络运行过程中的相关数据,如输入数据、输出数据、权值及指令等等。存储器120也可以是外部存储器等非易失性存储器,可以用于存储神经网络对应的离线模型。因而,当计算机系统1000需要再次对同一神经网络进行编译以运行该网络时,可以直接从存储器中获取该网络对应的离线模型,从而提高处理器的处理速度及效率。
[0091] 可选地,该存储器120的数量可以是三个或三个以上。其中一个存储器120用于存储计算机程序,该计算机程序用于实现本申请实施例中提供的数据处理方法。其中一个存储器120用于存储神经网络运行过程中相关数据,可选地,该用于存储神经网络运行过程中相关数据的存储器可以是易失性存储器。另一个存储器120可以用于存储该神经网络对应的离线模型,可选地,该用于存储离线模型的存储器可以是非易失性存储器。
[0092] 应当清楚的是,本实施例中的运行原始网络是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。本实施例中,直接运行该原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。该原始网络可以包括循环神经网络,也可以包括非循环神经网络。
[0093] 在一个实施例中,如图4所示,本申请提供了一种数据处理方法,用于根据循环神经网络单元生成并存储第一离线模型,从而无需对该循环神经网络节点中的所有循环神经网络单元进行编译及运算,缩短循环神经网络节点的离线模型生成时间,进而提高处理器的处理速度及效率。具体地,上述方法包括如下步骤:
[0094] S100,获取循环神经网络节点。
[0095] 其中,循环神经网络节点(RNN,Recurrent Neural Network)由单个的循环神经网络单元经过各个连接循环构成,典型的RNN有门控循环网络(GRU)以及长短期记忆网络(LSTM)等。通常把一个RNN中一层计算单元称为一个RNN单元(RNN cell)。如图5所示,循环神经网络节点包括至少一个循环神经网络单元,具体地,该RNN单元可以包括输入层、隐含层和输出层,其中,隐含层的数量可以是一个以上。
[0096] 具体地,处理器获取到循环神经网络节点,用于后续步骤获取循环神经网络单元。进一步地,处理器可以获取该循环神经网络节点的模型数据集和模型结构参数,从而根据该循环神经网络节点的模型数据集和模型结构参数确定该循环神经网络节点。其中,该循环神经网络节点对应的模型数据集包括该循环神经网络节点中各个层对应的权值数据,图
5所示的循环神经网络单元中的W1~W3即用于表示单个的循环神经网络节点对应的权值数据。该循环神经网络节点对应的模型结构参数包括单个的循环神经网络单元中各层之间的依赖关系或者各个循环神经网络单元之间的依赖关系。
[0097] 可选地,该循环神经网络节点可以是独立的循环神经网络节点,该循环神经网络节点也可以置于一原始网络中,该原始网络可以包含至少一个循环神经网络节点和非循环神经网络节点。
[0098] 可选地,如图5所示,系统可以根据循环神经网络节点,确定出单个的循环神经网络单元。具体地,处理器获取到循环神经网络节点后,处理器可以根据该循环神经网络节点的结构确定出单个的循环神经网络单元。
[0099] S200,根据循环神经网络节点中单个的循环神经网络单元的模型数据集和模型结构参数,运行单个的循环神经网络单元,获得单个的循环神经网络单元对应的指令数据。
[0100] 具体地,处理器获取到单个的循环神经网络单元的模型数据集和模型结构参数,然后运行单个的循环神经网络单元,之后获得单个的循环神经网络单元对应的指令数据。应当清楚的是,本申请实施例中的运行循环神经网络单元是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0101] S300、根据单个的循环神经网络单元对应的指令数据,获得单个的循环神经网络单元对应的第一离线模型。
[0102] 其中,第一离线模型包括单个的循环神经网络单元的权值数据和指令数据。
[0103] 具体地,处理器可以根据该单个的循环神经网络单元对应的指令数据和权值数据,获得该单个的循环神经网络单元对应的第一离线模型,从而无需对该循环神经网络节点中的所有循环神经网络单元进行编译及运算,从而可以大大的缩短循环神经网络节点的离线模型生成时间,进而提高处理器的处理速度及效率。
[0104] 进一步地,当需要重复运行该循环神经网络节点时,可以通过循环调用第一离线模型来实现循环神经网络节点的运行,从而减少对神经网络中各个节点的编译等操作,提高运算效率。
[0105] 上述数据处理方法,根据单个的循环神经网络单元的模型数据集和模型结构参数,运行该循环神经网络单元,获得单个的循环神经网络单元的指令数据,进而获得单个的循环神经网络单元对应的第一离线模型,第一离线模型包括单个的循环神经网络单元的权值数据和指令数据。本申请的数据处理方法,只需获得单个的循环神经网络单元的第一离线模型,无需对该循环神经网络节点中的所有循环神经网络单元进行编译及运算,从而可以大大的缩短循环神经网络节点的离线模型生成时间,进而提高处理器的处理速度及效率。
[0106] 在其中一个实施例中,上述步骤S300可以包括:
[0107] S310,将单个的循环神经网络单元的权值数据和指令数据进行对应存储,获得单个的循环神经网络单元对应的第一离线模型。
[0108] 具体地,处理器可以将单个的循环神经网络单元的权值数据和指令数据存储至存储器中,以实现第一离线模型的生成及存储。其中,针对单个的循环神经网络单元,该单个的循环神经网络单元的权值数据及指令数据一一对应进行存储。这样,当再次运行循环神经网络节点时,可以直接从存储器中获取第一离线模型,并通过循环调用第一离线模型来运行循环神经网络节点。
[0109] 可选地,该处理器可以将单个的循环神经网络单元对应的权值数据和指令数据存储至非易失性的存储器中,以实现第一离线模型的生成及存储。当再次运行该循环神经网络单元时,可以直接从非易失性存储器中获取该循环神经网络单元对应的离线模型,并根据与其对应的离线模型运行循环神经网络单元。
[0110] 本实施例中无需对该循环神经网络节点中的所有循环神经网络单元进行编译及运算,缩短了循环神经网络节点生成离线模型的时间,提高了系统的运行速度及效率。
[0111] 可选地,如图6所示,上述步骤S310可以包括如下步骤:
[0112] S311,根据循环神经网络单元的模型数据集和模型结构参数,确定循环神经网络单元对应的内存分配方式。
[0113] 具体地,处理器可以根据循环神经网络单元的模型结构参数,获得循环神经网络单元中各层的执行顺序,并根据循环神经网络单元中各层的执行顺序确定当前循环神经网络单元的内存分配方式。例如,按执行顺序将循环神经网络单元中各层的相关数据保存至一个栈内。其中,内存分配方式是指确定循环神经网络单元中各层相关的数据(包括输入数据、输出数据、权值数据及中间结果数据等等)在内存空间(如存储器)上的存储位置。例如,可以采用数据表存储各层相关的数据(输入数据、输出数据、权值数据及中间结果数据等等)和内存空间的映射关系。
[0114] S312,根据循环神经网络单元对应的内存分配方式,将该循环神经网络单元运行过程中的相关数据存储至其中一个存储器或存储器的一个存储单元中。
[0115] 其中,循环神经网络单元运行过程中的相关数据包括循环神经网络单元的各层对应的权值数据、指令数据、输入数据、中间计算结果及输出数据等等。例如,如图5所示,X表示该循环神经网络单元的输入数据,Y表示该循环神经网络单元的输出数据,处理器可以将该循环神经网络单元的输出数据转换为控制机器人或不同数字接口的控制命令。W1~W3用于表示权值数据。处理器可以根据已确定的内存分配方式,将循环神经网络单元运行过程中的相关数据存储至其中一个存储器或存储器的一个存储单元中,如内存储器或缓存等易失性存储器。
[0116] S313,从上述的存储器或存储单元中获取循环神经网络单元的权值数据和指令数据,获得第一离线模型,并将该第一离线模型存储至一个非易失性存储器中或存储器的非易失性存储单元中。
[0117] 具体地,从上述的存储器或存储单元中获取循环神经网络单元的权值数据和指令数据,获得第一离线模型,并将该第一离线模型存储至一个非易失性存储器中或存储器的非易失性存储单元中,对应存储空间内存储的即为循环神经网络单元的对应的第一离线模型。
[0118] 在其中一个实施例中,如图7所示,上述数据处理方法中步骤S100可以包括:
[0119] S110,获取包含循环神经网络节点的原始网络。
[0120] 其中,该原始网络可以包括循环神经网络节点,也包括非循环神经网络节点。
[0121] 具体地,处理器可以通过获取原始网络的模型数据集及模型结构参数,进而通过该原始网络的模型数据集及模型结构参数可以获得该原始网络的网络结构图。其中,模型数据集包括原始网络中各个节点对应的权值数据等数据,图10所示的神经网络中的W1~W6即用于表示节点的权值数据。模型结构参数包括原始网络中多个节点的依赖关系及各个节点的计算属性,其中,各个节点之间的依赖关系用于表示各个节点之间是否有数据传递,例如,当多个节点之间具有数据流的传递时,则可以说明多个节点之间具有依赖关系。进一步地,各个节点的依赖关系可以包括输入关系和输出关系等等。
[0122] S120,根据原始网络的模型结构参数,确定原始网络中各个节点的依赖关系。
[0123] 具体地,处理器获取到原始网络的模型结构参数,该模型结构参数中可以包括原始网络中各个节点的依赖关系,所以处理器获取到原始网络的模型结构参数后,能够根据原始网络的模型结构参数,确定原始网络中各个节点的依赖关系。
[0124] S130,根据原始网络中各个节点的依赖关系,确定各个循环神经网络节点的输入节点和输出节点。
[0125] 其中,输入节点是指向循环神经网络节点输入数据的节点,输出节点是指循环神经网络节点向其输入数据的节点。
[0126] 具体地,处理器可以根据原始网络中各个节点的依赖关系,对各个节点进行排序,得到各个节点之间的线性序列,进而确定各个循环神经网络节点的输入节点和输出节点。
[0127] 例如,处理器可以根据图9(a)中的原始网络,确定出各个循环神经网络节点的输入节点和输出节点,可以得到非循环神经网络节点(非RNN)1的输出节点为非循环神经网络节点(非RNN)2和循环神经网络节点(RNN),非循环神经网络节点(非RNN)2的输入节点为非循环神经网络节点(非RNN)1,非循环神经网络节点(非RNN)2的输出节点为非循环神经网络节点(非RNN)3和非循环神经网络节点(非RNN)4,确定循环神经网络节点(RNN)的输入节点为非循环神经网络节点(非RNN)1,输出节点为非循环神经网络节点(非RNN)3。
[0128] S140,断开循环神经网络节点的输入节点和输出节点与循环神经网络节点之间的连接关系,获得至少一个循环神经网络节点。
[0129] 具体地,处理器确定各个循环神经网络节点的输入节点和输出节点后,断开循环神经网络节点的输入节点与循环神经网络节点之间的连接关系,同时也断开循环神经网络节点的输出节点与循环神经网络节点之间的连接关系,获得至少一个独立的循环神经网络节点。
[0130] 例如,如图9所示,在图b中,在确定出循环神经网络节点以及其输入节点和输出节点后,将图a中的循环神经网络节点与其输入节点之间的连接关系断开,以及将循环神经网络节点与其输出节点之间的连接关系断开,将各个循环神经网络节点分离出来,得到至少一个独立的循环神经网络节点,进而获得图b。
[0131] 在其中一个实施例中,如图8所示,所述方法还可以包括以下步骤:
[0132] S150,根据原始网络中各个节点的依赖关系,确定原始网络中各个节点的执行顺序。
[0133] 其中,该原始网络可以包括循环神经网络节点以及非循环神经网络节点。
[0134] 具体地,处理器可以通过获取原始网络的模型数据集及依赖关系,进而通过该原始网络的模型数据集及依赖关系可以获得该原始网络的网络结构图。其中,模型数据集包括原始网络中各个节点对应的权值数据等数据。各个节点之间的依赖关系用于表示各个节点之间是否有数据传递,例如,当多个节点之间具有数据流的传递时,则可以说明多个节点之间具有依赖关系。进一步地,各个节点的依赖关系可以包括输入关系和输出关系等等。根据得到的依赖关系,确定原始网络中各个节点的执行顺序。可选地,处理器可以根据原始网络中各个节点的依赖关系,确定出各个节点之间的执行方式;若节点之间没有依赖关系,执行节点时实行并行执行;若节点之间存在依赖关系,执行节点时实行依次执行。
[0135] 例如,确定图9所示的神经网络中各个节点的依赖关系,进而确定出各个节点的线性序列为非循环神经网络节点(非RNN)1-非循环神经网络节点(非RNN)2-循环神经网络节点(RNN)-非循环神经网络节点(非RNN)3-非循环神经网络节点(非RNN)4,同时各个节点之间的执行顺序也可以为非循环神经网络节点(非RNN)1-循环神经网络节点(RNN)-非循环神经网络节点(非RNN)3-非循环神经网络节点(非RNN)4-非循环神经网络节点(非RNN)2。
[0136] S160,根据各个节点的执行顺序运行原始网络,获得原始网络中各个非循环神经网络节点的指令数据。
[0137] 具体地,在处理器确定出各个节点的执行顺序后,按照各个节点的执行顺序,运行原始网络,然后分别获得原始网络中各个非循环神经网络节点的指令数据。
[0138] S170,将各个非循环神经网络节点对应的权值数据和指令数据对应存储,获得第二离线模型。
[0139] 其中,第二离线模型包括原始网络中各个非循环神经网络节点的权值数据和指令数据。
[0140] 具体地,处理器运行原始网络以后,可以将各个非循环神经网络节点对应的权值数据和指令数据对应存储,进而获得第二离线模型。可选地,该处理器可以将各个非循环神经网络节点对应的权值数据和指令数据存储至非易失性的存储器中,以实现第二离线模型的生成及存储。其中,针对非循环神经网络节点,该节点的权值数据及指令数据一一对应进行存储。这样,当再次运行非循环神经网络节点时,可以直接从非易失性存储器中获取对应的第二离线模型,并根据与其对应的第二离线模型运行非循环神经网络节点,无需在线对该更新后的非循环神经网络节点进行编译获得指令,提高了系统的运行速度及效率。
[0141] 可选地,上述步骤S170可以包括如下步骤:
[0142] S171,根据原始网络的模型数据集和模型结构参数,确定原始网络中各个非循环神经网络节点对应的内存分配方式。
[0143] 具体地,处理器可以根据原始网络的模型结构参数,获得原始网络中各个节点的执行顺序,并根据原始网络中各个计算节点的执行顺序确定当前网络的内存分配方式,进而获得原始网络中各个非循环神经网络节点对应的内存分配方式。例如,按各个节点的执行顺序将非循环神经网络节点在运行过程中的相关数据保存至一个栈内。其中,内存分配方式是指确定非循环神经网络节点的相关的数据(包括输入数据、输出数据、权值数据及中间结果数据等等)在内存空间(如存储器)上的存储位置。例如,可以采用数据表存储非循环神经网络节点的相关的数据(输入数据、输出数据、权值数据及中间结果数据等等)和内存空间的映射关系。
[0144] S172,根据非循环神经网络节点对应的内存分配方式,将该非循环神经网络节点运行过程中的相关数据存储至其中一个存储器或存储器的一个存储单元中。
[0145] 其中,非循环神经网络节点运行过程中的相关数据包括非循环神经网络节点对应的权值数据、指令数据、输入数据、中间计算结果及输出数据等等。处理器可以根据已确定的内存分配方式,将非循环神经网络节点运行过程中的相关数据存储至其中一个存储器或存储器的一个存储单元中,如内存储器或缓存等易失性存储器。
[0146] S173,从上述的存储器或存储单元中获取非循环神经网络节点的权值数据和指令数据,获得第二离线模型,并将该第二离线模型存储至一个非易失性存储器中或存储器的非易失性存储单元中。
[0147] 具体地,从上述的存储器或存储单元中获取非循环神经网络节点的权值数据和指令数据,获得第二离线模型,并将该第二离线模型存储至一个非易失性存储器中或存储器的非易失性存储单元中,对应存储空间内存储的即为循环神经网络单元的对应的第二离线模型。
[0148] 在其中一个实施例中,所述方法还可以包括以下步骤:
[0149] S300,判断第一离线模型是否是有状态的。
[0150] 其中,首个循环神经网络单元的输入一般默认为0。第一离线模型是无状态的表示输出是输入的函数,即output=f(input)。第一离线模型是有状态的表示输出是输入和历史的函数,即output,history=g(input,history)。
[0151] 具体地,判断第一离线模型是否是有状态的,当判断第一离线模型是有状态的,则执行步骤S400,第一离线模型还包括状态输入数据,状态输入数据可以为隐含层之前的上一循环神经网络单元的输出数据。
[0152] 本实施例中对第一离线模型进行状态的判断,使得第一离线模型的生成更加准确。
[0153] 在其中一个实施例中,所述方法还可以包括以下步骤:
[0154] S600,获取包含新的循环神经网络节点的新的原始网络。
[0155] 其中,该新的原始网络可以包括新的循环神经网络节点以及非循环神经网络节点。
[0156] 具体地,处理器获取新的原始网络,获取新的原始网络的模型数据集和模型结构参数,通过该新的原始网络的模型数据集和模型结构参数可以获得该新的原始网络的网络结构图。
[0157] S700,若新的原始网络存在对应的离线模型,则获取新的原始网络对应的离线模型,并根据新的原始网络对应的离线模型运行新的原始网络。
[0158] 其中,新的原始网络对应的离线模型包括第一离线模型和第二离线模型。
[0159] 具体地,当获取到的新的原始网络存在对应的离线模型时,获取新的原始网络对应的离线模型,并且根据获取到的新的原始网络对应的离线模型,运行新的原始网络。
[0160] 可选地,运行新的原始网络时,若新的原始网络中的当前节点为循环神经网络节点,则循环调用第一离线模型来实现循环神经网络节点的运行。
[0161] 可选地,运行新的原始网络时,若新的原始网络中的当前节点为非循环神经网络节点,则从新的原始网络对应的第二离线模型中获取当前节点的权值数据和指令数据,并根据当前节点的权值数据和指令数据直接运行第二离线模型。
[0162] 本实施例中,当运行神经网络时,可以直接获取该神经网络对应的离线模型,并根据与其对应的离线模型运行神经网络,无需在线对该神经网络的各个节点进行编译获得指令,提高了系统的运行速度及效率。
[0163] 在一个实施例中,如图10所示,提供了一种数据处理装置,包括:第一获取模块100和生成模块200,其中:
[0164] 第一获取模块100,用于获取循环神经网络节点,所述循环神经网络节点包括至少一个循环神经网络单元。
[0165] 运行模块200,用于根据所述循环神经网络节点中单个的循环神经网络单元的模型数据集和模型结构参数,运行所述单个的循环神经网络单元,获得所述单个的循环神经网络单元对应的指令数据。
[0166] 生成模块300,用于根据所述单个的循环神经网络单元对应的指令数据,获得所述单个的循环神经网络单元对应的第一离线模型。
[0167] 在其中一个实施例中,生成模块300还用于将所述单个的循环神经网络单元的权值数据和指令数据进行对应存储,获得所述单个的循环神经网络单元对应的第一离线模型。
[0168] 在其中一个实施例中,所述数据处理装置还包括判断模块以及第一执行模块。该判断模块,用于判断所述第一离线模型是否是有状态的。该第一执行模块,用于若所述第一离线模型是有状态的,则所述第一离线模型还包括状态输入数据,所述状态输入数据为所述隐含层之前的上一循环神经网络单元的输出数据。
[0169] 在其中一个实施例中,该第一获取模块100包括:第一获取单元,用于获取包含所述循环神经网络节点的原始网络;第一确定单元,用于根据所述原始网络的模型结构参数,确定所述原始网络中各个节点的依赖关系;所述第一确定单元,还用于根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个所述循环神经网络节点的输入节点和输出节点;第一执行单元,用于断开所述循环神经网络节点的输入节点和输出节点与所述循环神经网络节点之间的连接,获得至少一个所述循环神经网络节点。
[0170] 在其中一个实施例中,第一获取模块100还包括第二确定单元以及第二执行单元:其中,所述第二确定单元,用于根据所述原始网络中各个节点的依赖关系,确定所述原始网络中各个节点的执行顺序;所述第二执行单元,用于根据所述各个节点的执行顺序运行所述原始网络,获得所述原始网络中各个非循环神经网络节点的指令数据;所述生成模块,用于将各个所述非循环神经网络节点对应的权值数据和指令数据对应存储,获得第二离线模型;其中,所述第二离线模型包括所述原始网络中各个非循环神经网络节点的权值数据和指令数据。
[0171] 关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0172] 在其中一个实施例中,本申请还提供了一种计算机系统,包括处理器和存储器,存储器中存储有计算机程序,处理器在执行计算机程序时,执行如上述任一实施例的方法。具体地,当处理器执行上述计算机程序时,具体执行如下步骤:
[0173] 获取循环神经网络节点。具体地,处理器获取到循环神经网络节点,用于后续步骤获取循环神经网络单元。进一步地,处理器可以获取该循环神经网络节点的模型数据集和模型结构参数,从而根据该循环神经网络节点的模型数据集和模型结构参数确定该循环神经网络节点。
[0174] 根据循环神经网络节点中单个的循环神经网络单元的模型数据集和模型结构参数,运行单个的循环神经网络单元,获得单个的循环神经网络单元对应的指令数据。具体地,处理器获取到单个的循环神经网络单元的模型数据集和模型结构参数,然后运行单个的循环神经网络单元,之后获得单个的循环神经网络单元对应的指令数据。应当清楚的是,本申请实施例中的运行循环神经网络单元是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0175] 根据单个的循环神经网络单元对应的指令数据,获得单个的循环神经网络单元对应的第一离线模型。具体地,处理器可以根据该单个的循环神经网络单元对应的指令数据和权值数据,获得该单个的循环神经网络单元对应的第一离线模型,从而无需对该循环神经网络节点中的所有循环神经网络单元进行编译及运算,从而可以大大的缩短循环神经网络节点的离线模型生成时间,进而提高处理器的处理速度及效率。
[0176] 在一个实施例中,还提供了一种计算机存储介质,该计算机存储介质中存储有计算机程序,当计算机程序被一个或多个处理器执行时,执行上述任一实施例的方法。其中,该计算机存储介质可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0177] 在一个实施例中,如图11所示,本申请还提供了一种数据处理方法,可以包括如下步骤:
[0178] S800,获取循环神经网络节点。
[0179] 具体地,处理器获取得到循环神经网络节点,并运行该循环神经网络节点。
[0180] S900,循环调用循环神经网络节点对应的第一离线模型,根据第一离线模型运行循环神经网络节点。
[0181] 其中,第一离线模型包括单个的循环神经网络单元的权值数据和指令数据。
[0182] 具体地,处理器在获取循环神经网络节点后,则处理器循环调用循环神经网络节点对应的第一离线模型,并且根据第一离线模型运行循环神经网络节点。
[0183] 本实施例中,通过循环调用第一离线模型来运行循环神经网络节点,提高该计算机系统的处理效率及速度。
[0184] 可选地,处理器可以确定出该循环神经网络节点包含的循环神经网络单元的总数量,并将该循环神经网络节点中RNN单元的总数量作为第一离线模型的调用次数,循环调用第一离线模型。具体地,上述步骤S900可以包括:
[0185] 每当调用第一离线模型完成一个RNN单元的运行,将调用次数递减一次得到当前执行次数,直至当前执行次数等于初始值。其中,初始值可以为0。
[0186] 或者,每当调用第一离线模型完成一个RNN单元的运行,将调用次数从初始值递加一次,直至执行次数等于循环神经网络节点中的RNN单元总数量。
[0187] 在其中一个实施例中,如图12所示,所示方法还包括以下步骤:
[0188] S1000,获取包含循环神经网络节点的原始网络。
[0189] 其中,该原始网络可以包括循环神经网络节点以及非循环神经网络节点。
[0190] 具体地,处理器获取原始网络,获取原始网络的模型数据集和模型结构参数,通过该原始网络的模型数据集和模型结构参数可以获得该原始网络的网络结构图。
[0191] S1200,若原始网络中的当前节点为非循环神经网络节点,则从原始网络对应的第二离线模型中获取当前节点的权值数据和指令数据,并根据当前节点的权值数据和指令数据直接运行所述当前节点。
[0192] 其中,第二离线模型包括原始网络中各个非循环神经网络节点的权值数据和指令数据。
[0193] 具体地,运行原始网络时,若原始网络中的当前节点为非循环神经网络节点,则从原始网络对应的第二离线模型中获取当前节点的权值数据和指令数据,并根据当前节点的权值数据和指令数据直接运行第二离线模型。即处理器判断原始网络中的当前节点是否为非循环神经网络节点,若原始网络中的当前节点为非循环神经网络节点,则处理器从第二离线模型中获取当前节点的权值数据和指令数据,并且根据当前节点的权值数据和指令数据直接运行当前节点。
[0194] 在其中一个实施例中,如图13所示,所述方法可以包括以下步骤:
[0195] S701,根据原始网络,确定原始网络对应的等效网络。
[0196] 其中,等效网络包括至少一个等效循环神经网络节点和至少一个等效非循环神经网络节点。
[0197] 具体地,处理器根据获取的原始网络,对原始网络进行处理,可以得到该原始网络对应的等效网络。
[0198] S702,根据原始网络对应的等效网络中各个等效节点的依赖关系,确定等效网络中各个等效节点的执行顺序。
[0199] 具体地,处理器可以根据原始网络中各个等效节点的依赖关系,对各个等效节点进行排序,得到各个等效节点之间的线性序列,进而确定各个等效节点的执行顺序。
[0200] 例如,确定图9所示,图a表示的神经网络中各个节点的依赖关系,进而确定出各个节点的线性序列为非循环神经网络节点(非RNN)1-非循环神经网络节点(非RNN)2-循环神经网络节点(RNN)-非循环神经网络节点(非RNN)3-非循环神经网络节点(非RNN)4,同时各个节点之间的执行顺序也可以为非循环神经网络节点(非RNN)1-循环神经网络节点(RNN)-非循环神经网络节点(非RNN)3-非循环神经网络节点(非RNN)4-非循环神经网络节点(非RNN)2。
[0201] S703,若当前等效节点为等效非循环神经网络节点,则从原始网络对应的第二离线模型中获取当前等效节点的权值数据和指令数据,并根据当前等效节点的权值数据和指令数据直接运行当前等效节点。
[0202] 具体地,当运行等效网络时,若当前等效节点为等效非循环神经网络节点,则从原始网络对应的第二离线模型中获取当前等效节点的权值数据和指令数据,并根据当前等效节点的权值数据和指令数据直接运行当前等效节点。
[0203] 若当前等效节点为等效循环神经网络节点,则从原始网络对应的第一离线模型中获取当前等效节点的权值数据和指令数据,并根据当前等效节点的权值数据和指令数据循环调用第一离线模型来运行当前等效节点。
[0204] 本实施例通过根据该等效网络确定各个等效节点之间的执行顺序,可以通过集中运行同一类型的节点的离线模型,完成同一类型节点的执行,之后再切换调用其他类型的离线模型,从而可以减少调用的切换次数,提高处理器的运算效率。
[0205] 在其中一个实施例中,如图14所示,获取原始网络对应的等效网络的步骤可以包括以下步骤:
[0206] S7011,获得原始网络中的至少一个循环神经网络节点以及非循环神经网络的连通片。
[0207] 其中,非循环神经网络的连通片由至少一个非循环神经网络节点进行连接,所以非循环神经网络的连通片包括至少一个非循环神经网络节点。如图9所示,在图b中,将各个循环神经网络节点分离出来后,得到至少一个循环神经网络节点之外,还得到未断开连接关系的非循环神经网络节点,将图b中连接在一起的非循环神经网络节点称为非循环神经网络的连通片。
[0208] 具体地,根据原始网络以及原始网络结构,对原始网络进行处理,得到至少一个循环神经网络节点以及非循环神经网络的连通片。
[0209] S7012,根据原始网络中各个节点的依赖关系,更新非循环神经网络连通片中各个非循环神经网络节点的连接关系,获得更新后的非循环神经网络连通片。
[0210] 具体地,根据得到的非循环神经网络的连通片以及原始网络中各个节点的依赖关系,处理器将对非循环神经网络的连通片进行处理,更新非循环神经网络连通片中各个非循环神经网络节点的连接关系,获得更新后的非循环神经网络的连通片。如图9中图c所示。
[0211] S7013,分别将更新后的非循环神经网络的连通片等效为一个等效非循环神经网络节点。
[0212] 具体地,在得到更新后的非循环神经网络的连通片后,将更新后的非循环神经网络的连通片等效为一个等效非循环神经网络节点。
[0213] 如图9所示,在图d中,得到更新后的非循环神经网络的连通片后,将更新后的非循环神经网络的连通片等效为一个等效非循环神经网络节点。
[0214] S7014,根据原始网络中各个节点的依赖关系,确定各个等效非循环神经网络节点以及等效循环神经网络节点的依赖关系,得到原始网络对应的等效网络。
[0215] 具体地,处理器根据原始网络中各个节点的依赖关系,确定各个等效非循环神经网络节点以及等效循环神经网络节点的依赖关系,并将等效循环神经网络节点以及等效非循环神经网络节点的输入关系以及输出关系进行连接,得到原始网络对应的等效网络。如图9中的图d。
[0216] 在其中一个实施例中,上述步骤S7011还可以包括以下步骤:
[0217] S70111,根据原始网络中各个节点的依赖关系,确定各个循环神经网络节点的输入节点和输出节点。
[0218] 其中,输入节点是指向循环神经网络节点输入数据的节点,输出节点是指循环神经网络节点向其输入数据的节点。
[0219] 具体地,处理器可以根据原始网络中各个节点的依赖关系,对各个节点进行排序,得到各个节点之间的线性序列,进而确定各个循环神经网络节点的输入节点和输出节点。
[0220] 例如,处理器可以根据图9(a)中的原始网络,确定出各个循环神经网络节点的输入节点和输出节点,可以得到非循环神经网络节点(非RNN)1的输出节点为非循环神经网络节点(非RNN)2和循环神经网络节点(RNN),非循环神经网络节点(非RNN)2的输入节点为非循环神经网络节点(非RNN)1,非循环神经网络节点(非RNN)2的输出节点为非循环神经网络节点(非RNN)3和非循环神经网络节点(非RNN)4,确定循环神经网络节点(RNN)的输入节点为非循环神经网络节点(非RNN)1,输出节点为非循环神经网络节点(非RNN)3。
[0221] S70112,断开循环神经网络节点的输入节点和输出节点与循环神经网络节点之间的连接关系,获得至少一个循环神经网络节点以及非循环神经网络的连通片。
[0222] 其中,非循环神经网络的连通片由至少一个非循环神经网络节点进行连接,所以非循环神经网络的连通片包括至少一个非循环神经网络节点。如图9所示,在图b中,将各个循环神经网络节点分离出来后,得到至少一个循环神经网络节点之外,还得到未断开连接关系的非循环神经网络节点,将图b中连接在一起的非循环神经网络节点称为非循环神经网络的连通片。
[0223] 具体地,处理器确定各个循环神经网络节点的输入节点和输出节点后,断开循环神经网络节点的输入节点与循环神经网络节点之间的连接关系,同时也断开循环神经网络节点的输出节点与循环神经网络节点之间的连接关系,获得至少一个独立的循环神经网络节点以及非循环神经网络的连通片。
[0224] 例如,如图9所示,在图b中,在确定出循环神经网络节点以及其输入节点和输出节点后,将图a中的循环神经网络节点与输入节点之间的连接关系断开,以及将循环神经网络节点与输出节点之间的连接关系断开,将各个循环神经网络节点分离出来,得到至少一个独立的循环神经网络节点,进而获得图b。
[0225] 在其中一个实施例中,如图15所示,上述步骤S7012还可以包括以下步骤:
[0226] S70121,根据原始网络中各个节点的依赖关系,分别判断非循环神经网络的连通片中的各个非循环神经网络节点是否依赖循环神经网络节点的输出结果。
[0227] 具体地,处理器根据原始网络中各个节点的依赖关系,可以确定各个节点之间的输入输出关系,从而分别判断非循环神经网络的连通片中的各个非循环神经网络节点是否依赖循环神经网络节点的输出结果,即在非循环神经网络的连通片中,判断是否存在节点依赖循环神经网络节点为输入节点。
[0228] 可选地,如图9所示,在图a中,根据各节点之间的数据流向,获取到各个节点之间的依赖关系或连接关系,可以确定出连通片中的各节点的输入输出关系,执行顺序为非循环神经网络节点(非RNN)1-非循环神经网络节点(非RNN)2-循环神经网络节点(RNN)1-非循环神经网络节点(非RNN)3-非循环神经网络节点(非RNN)4,则可以看出非循环神经网络节点(非RNN)3和非循环神经网络节点(非RNN)4依赖循环神经网络节点的输出结果。
[0229] S70122,若非循环神经网络的连通片中的非循环神经网络节点依赖循环神经网络节点的输出结果,则断开非循环神经网络节点的输入节点与非循环神经网络节点的连接关系,得到更新后的非循环神经网络的连通片。
[0230] 具体地,若判断非循环神经网络的连通片中的非循环神经网络节点依赖循环神经网络节点的输出结果,则处理器断开非循环神经网络节点与其输入节点的连接关系,得到更新后的非循环神经网络的连通片。即当判断有节点以循环神经网络节点为输入节点后,处理器断开非循环神经网络的连通片中该节点与存在的输入节点之间的输入关系。
[0231] 例如,如图9所示,在图c中,在非循环神经网络的连通片中,当存在以循环神经网络节点为输入节点的非循环神经网络节点时,将非循环神经网络的连通片中的该节点与存在的输入节点之间的输入关系断开,得到更新后的非循环神经网络的连通片。也就是说,可以看出非循环神经网络节点(非RNN)3和非循环神经网络节点(非RNN)4依赖循环神经网络节点的输出结果,并且非循环神经网络节点(非RNN)3的输入节点为非循环神经网络节点(非RNN)2,非循环神经网络节点(非RNN)4的输入节点为非循环神经网络节点(非RNN)2,则断开非循环神经网络节点(非RNN)3和非循环神经网络节点(非RNN)2之间的连接关系,以及断开非循环神经网络节点(非RNN)4和非循环神经网络节点(非RNN)2之间的关系,得到更新后的非循环神经网络的连通片,如图c所示。
[0232] 在其中一个实施例中,如图16所示,上述步骤S900还可以包括以下步骤:
[0233] 当第一离线模型为有状态的时,第一离线模型中还包括状态输入数据,则执行步骤S902,从第一离线模型中获取当前循环神经网络单元的权值数据、指令数据以及状态输入数据。
[0234] S904,根据单个的循环神经网络单元的权值数据、指令数据及状态输入数据,运行循环神经网络单元。
[0235] S906,将当前循环神经网络单元的输出结果作为状态输入数据存储至第一离线模型,之后,返回从第一离线模型中获取当前循环神经网络单元的权值数据、指令数据以及输入数据的步骤,直至完成循环神经网络节点的运行。
[0236] 当判断第一离线模型是无状态的,则在每次调用第一离线模型时,要加上状态输入数据,并将本次输出结果保存以备下次使用。
[0237] 可选地,状态输入数据中还可以包括循环神经网络单元的输入数据。
[0238] 本实施例中通过对第一离线模型状态的判断,使得第一离线模型执行时更加准确。
[0239] 在其中一个实施例中,处理器可以根据等效网络中各个等效节点的依赖关系,确定出各个等效节点之间的执行方式;若等效节点之间没有依赖关系,执行等效节点时实行并行执行;若等效节点之间存在依赖关系,执行等效节点时实行依次执行。
[0240] 可选地,在运行原始网络时,处理器执行各个节点的方式,也可以按照上述方式进行执行。
[0241] 本实施例,若为较低延时的需求场景,则可以将等效网络中的各个等效节点充分并行执行,即在模型级别并行。若为高吞吐的需求场景,则需要将每个等效节点顺序执行,将节点并行运行多份,即在数据级别并行。可以运行多样推理需求,既能应对低延时的需求,又能应对高吞吐的要求。
[0242] 在一个实施例中,如图17所示,提供了一种数据处理装置,包括:第二获取模块400和第二执行模块500,其中:
[0243] 第二获取模块400,用于获取循环神经网络节点。
[0244] 第二执行模块500,用于循环调用所述循环神经网络节点对应的第一离线模型,根据所述第一离线模型运行所述循环神经网络节点。
[0245] 在其中一个实施例中,第二获取模块400,还用于获取包含所述循环神经网络节点的原始网络;第二执行模块500,还用于若所述原始网络中的当前节点为非循环神经网络节点,则从所述原始网络对应的第二离线模型中获取所述当前节点的权值数据和指令数据,并根据所述当前节点的权值数据和指令数据直接运行所述当前节点;其中,所述第二离线模型包括所述原始网络中各个非循环神经网络节点的权值数据和指令数据。
[0246] 在其中一个实施例中,所述数据处理装置还包括等效模块以及确定模块;该等效模块,用于根据所述原始网络,确定所述原始网络对应的等效网络,所述等效网络包括至少一个等效循环神经网络节点和至少一个等效非循环神经网络节点;该确定模块,用于根据所述原始网络对应的等效网络中各个等效节点的依赖关系,确定所述等效网络中各个等效节点的执行顺序;第二执行模块500,还用于若所述当前等效节点为等效非循环神经网络节点,则从所述原始网络对应的第二离线模型中获取所述当前等效节点的权值数据和指令数据,并根据所述当前等效节点的权值数据和指令数据直接运行所述当前等效节点。
[0247] 在其中一个实施例中,第二执行模块500还用于:若所述等效网络中各个等效节点之间没有依赖关系,并行执行各个所述等效节点;若所述等效网络中各个等效节点之间存在依赖关系,根据所述依赖关系执行所述等效节点。
[0248] 在其中一个实施例中,该等效模块包括第二获取单元、更新单元以及等效单元;其中,该第二获取单元,用于获得所述原始网络中的至少一个所述循环神经网络节点以及非循环神经网络的连通片,其中,所述非循环神经网络的连通片包括至少一个非循环神经网络节点;该更新单元,用于根据所述原始网络中各个节点的依赖关系,更新所述非循环神经网络连通片中各个非循环神经网络节点的连接关系,获得更新后的非循环神经网络连通片;该等效单元,用于分别将所述更新后的非循环神经网络的连通片等效为一个等效非循环神经网络节点;该等效单元,还用于根据所述原始网络中各个所述节点的依赖关系,确定各个所述等效非循环神经网络节点以及所述等效循环神经网络节点的依赖关系,得到所述原始网络对应的等效网络。
[0249] 关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0250] 在其中一个实施例中,本申请还提供了一种计算机系统,包括处理器和存储器,存储器中存储有计算机程序,处理器在执行计算机程序时,执行如上述任一实施例的方法。具体地,当处理器执行上述计算机程序时,具体执行如下步骤:
[0251] 获取循环神经网络节点。具体地,处理器获取得到循环神经网络节点,并运行该循环神经网络节点。
[0252] 循环调用循环神经网络节点对应的第一离线模型,根据第一离线模型运行循环神经网络节点。具体地,处理器在获取循环神经网络节点后,则处理器循环调用循环神经网络节点对应的第一离线模型,并且根据第一离线模型运行循环神经网络节点。
[0253] 在一个实施例中,还提供了一种计算机存储介质,该计算机存储介质中存储有计算机程序,当计算机程序被一个或多个处理器执行时,执行上述任一实施例的方法。其中,该计算机存储介质可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0254] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0255] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈