CN111368974B - 一种fsmn数据处理方法、装置、介质和设备 - Google Patents
一种fsmn数据处理方法、装置、介质和设备 Download PDFInfo
- Publication number
- CN111368974B CN111368974B CN202010117089.5A CN202010117089A CN111368974B CN 111368974 B CN111368974 B CN 111368974B CN 202010117089 A CN202010117089 A CN 202010117089A CN 111368974 B CN111368974 B CN 111368974B
- Authority
- CN
- China
- Prior art keywords
- data
- hidden layer
- stored
- historical
- dimension
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims description 6
- 238000012545 processing Methods 0.000 claims abstract description 57
- 238000000034 method Methods 0.000 claims abstract description 53
- 230000015654 memory Effects 0.000 claims abstract description 29
- 238000004891 communication Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 10
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种FSMN数据处理方法、装置、介质和设备。针对目前FSMN每一隐藏层通过内存拷贝方式保存历史数据、当前数据和未来数据,每次有新的数据,需要将所有原有数据进行位置移动,导致数据处理速度较慢的问题,本发明实施例提出,可以根据产生的时间先后顺序,利用环形队列实现历史数据、当前数据和未来数据的保存,这样每次有新的数据,可以直接用新的数据更新对应的原始的数据,利用指针维护每个数据的位置,在进行数据处理时,无需进行内存拷贝,有效加快数据处理速度。
Description
技术领域
本发明涉及人工智能技术领域,特别涉及一种FSMN数据处理方法、装置、介质和设备。
背景技术
目前,前馈型序列记忆网络(FSMN,Feed-forward Sequential Memory Network)得到了广泛使用,例如,FSMN可以应用于关键字识别(KWS)领域,以保证设备在不同的环境下具有更高的唤醒率。
FSMN的架构可以如图1所示。它是在深度神经网络(DNN,Deep Neural Networks)架构上,又结合了当前和历史的信息,既具备DNN计算量小的特点,同时参数量也较小。
FSMN架构可以包括输入层(Input layer),隐藏层(Hidden layer)和输出层(Output layer)。输入层输入数据可以以Xt表示,输出层输出数据可以以yt表示。在每一个隐藏层,由当前数据ht t(一个当前数据根据未来数据(此处的未来数据可以为多个,最新的未来数据为该层最新接收到的输入数据,未来数据也可以理解为输入数据)得到)得到的输出数据Wt,以及由历史数据(此处的历史数据可以为多个历史数据,最新的历史数据为该层本次之前一次得到的当前数据)得到的输出数据/>(可以理解为由记忆模块得到输出数据/>在图1中记为Memory Block),相加作为下一层的输入数据,进而下一个隐藏层可以根据输入数据,得到对应的当前数据ht t+1。
目前,FSMN每一隐藏层通过内存拷贝方式保存历史数据、当前数据和未来数据,以实现每一层的数据处理过程。虽然内存拷贝在当前的处理器中有相应的加速处理函数,但是FSMN每一层均进行信息拷贝和搬移,且每一层的数据处理过程涉及的历史数据和未来数据都有可能为多个(数据维度较多),由于FSMN计算周期较短,一般都在毫秒级,这样累加起来会占用较多的系统资源,造成数据处理速度较慢。
发明内容
本发明实施例提供一种FSMN数据处理方法、装置、介质和设备,用于解决FSMN数据处理速度较慢的问题。
本发明提供了一种FSMN数据处理方法,针对所述FSMN的每一个隐藏层,该隐藏层对应的指定未来维度的输入数据、当前数据和指定历史维度的历史数据按照产生的时间先后顺序,依次保存在该隐藏层对应的环形队列中,一个隐藏层接收到一个输入数据时,所述方法包括:
将接收到的输入数据,保存在该隐藏层对应的环形队列中,对应的时间最早的历史数据所保存的位置;
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定未来维度的输入数据,根据查找到的输入数据确定一个当前数据,并将确定出的当前数据,保存在该隐藏层对应的环形队列中,对应的时间最早的输入数据所保存的位置。
本发明还提供了一种FSMN数据处理装置,针对所述FSMN的每一个隐藏层,该隐藏层对应的指定未来维度的输入数据、当前数据和指定历史维度的历史数据按照产生的时间先后顺序,依次保存在该隐藏层对应的环形队列中,所述装置包括:
接收模块,用于针对一个隐藏层,接收一个输入数据;
更新模块,用于将接收到的输入数据,保存在该隐藏层对应的环形队列中,对应的时间最早的历史数据所保存的位置;根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定未来维度的输入数据,根据查找到的输入数据确定一个当前数据,并将确定出的当前数据,保存在该隐藏层对应的环形队列中,对应的时间最早的输入数据所保存的位置。
本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有可执行程序,该可执行程序被处理器执行实现如上所述的方法。
本发明还提供了一种FSMN数据处理设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存储的程序时,实现如上所述的方法步骤。
根据本发明实施例提供的方案,针对FSMN的每一个隐藏层,可以根据产生的时间先后顺序,通过一个环形队列保存该层对应的指定未来维度的输入数据,指定历史维度的历史数据和当前数据。从而在数据处理过程中,无需进行信息拷贝,可以利用环形队列,实现信息的保存和查找,节省了信息拷贝时间,且节约了内存,可以有效加快数据处理速度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的FSMN架构示意图;
图2为本发明实施例一提供的FSMN数据处理方法的流程示意图;
图3为本发明实施例一提供的FSMN每一层数据处理过程示意图;
图4为本发明实施例三提供的FSMN数据处理装置的结构示意图;
图5为本发明实施例四提供的FSMN数据处理设备的结构示意图。
具体实施方式
针对目前FSMN每一隐藏层通过内存拷贝方式保存历史数据、当前数据和未来数据,每次有新的数据,需要将所有原有数据进行位置移动,导致数据处理速度较慢的问题,本发明实施例提出,可以根据产生的时间先后顺序,利用环形队列实现历史数据、当前数据和未来数据的保存,这样每次有新的数据,可以直接用新的数据更新对应的原始数据,利用指针维护每个数据的位置,在进行数据处理时,无需进行内存拷贝,有效加快数据处理速度。
另外,在现有技术中,各隐藏层之间表示当前数据处理周期(即,当前拍)的指针互不联系,层与层之间通过逻辑判断来统一时间标准,由此导致在更换网络配置时还需要修改代码,不利用模块化编程,若在测试阶段更换网络配置,需要不停的修改代码,容易带来信息同步异常的问题。
因此,在本发明实施例提供的方案中提出,整个FSMN可以维护一个时间,每层用于查找数据的指针均可以根据系统时间确定。从而使得每一层进行数据处理的时间同步,避免出现数据同步异常的问题。且使得实现逻辑更加简单,有利于模块化编程。即使网络配置发生变化,只需要修改配置文件,无需修改代码,简化FSMN的实现。
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
本发明实施例一提供一种FSMN数据处理方法,在该方法中,针对FSMN的每一个隐藏层,该隐藏层对应的指定未来维度的输入数据、当前数据和指定历史维度的历史数据按照产生的时间先后顺序,依次保存在该隐藏层对应的环形队列中,该方法的步骤流程可以如图2所示,包括:
步骤101、保存输入数据。
本实施例以FSMN的一个隐藏层为例进行说明。在本步骤中,在接收到一个输入数据时,可以将接收到的输入数据,保存在该隐藏层对应的环形队列中,对应的时间最早的历史数据所保存的位置,即,将环形队列中保存的时间最早的历史数据,更新为最新接收到的输入数据,从而实现环形队列的更新,便于进行后续的数据处理过程。
步骤102、确定当前数据。
在本步骤中,可以根据产生的时间先后顺序,利用指针从所述隐藏层对应的环形队列中,查找保存的指定未来维度的输入数据,根据查找到的输入数据确定一个当前数据,并将确定出的当前数据,保存在该隐藏层对应的环形队列中,对应的时间最早的输入数据所保存的位置,即,将环形队列中保存的时间最早的输入数据,更新为最新得到的当前数据,从而实现环形队列的更新,便于进行后续的数据处理过程。
进一步的,本实施例还可以包括以下步骤:
步骤103、确定第一输出数据和第二输出数据。
在本步骤中,可以根据产生的时间先后顺序,利用指针从所述隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据。
另外,在本步骤中,还可以根据产生的时间先后顺序,利用指针从所述隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据。
即,由于当前数据根据输入数据得到,历史数据即为历史得到的当前数据,即各个输入数据、当前数据和各个历史数据之间存在产生的时间先后顺序,因此在本实施例中,指定未来维度的输入数据、当前数据和指定历史维度的历史数据可以按照对应的时间先后顺序,依次保存在所述隐藏层对应的环形队列中,这样在接收到最新的输入数据时,利用最新接收到的输入数据更新最原始的历史数据,在产生当前数据时,利用产生的当前数据更新最原始的输入数据,可以更加方便快速地实现数据保存,并可以根据产生的时间先后顺序,结合历史数据、当前数据和输入数据的维度,即,结合指定历史维度、指定当前维度(可以理解为1),指定未来维度,更加方便快速地实现数据查找。
步骤104、得到输出数据。
在本步骤中,可以将步骤103得到的第一输出数据和第二输出数据相加,作为所述隐藏层本次数据处理过程对应的输出数据。
需要说明的是,在一种可能的实现方式中,在步骤103中,根据产生的时间先后顺序,利用指针从所述隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据,可以包括:
根据产生的时间先后顺序,利用指针从所述隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,确定查找到的历史数据与第一权重的第一乘积,并确定查找到的输入数据与第二权重的第二乘积,将所述第一乘积和所述第二乘积相加,作为第一DNN的输入数据,得到对应的第一输出数据。
在步骤103中,根据产生的时间先后顺序,利用指针从所述隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据,可以包括:
根据产生的时间先后顺序,利用指针从所述隐藏层对应的环形队列中,查找保存的当前数据,确定查找到的当前数据与第三权重的第三乘积,将所述第三乘积作为第二DNN的输入数据,得到对应的第二输出数据。
此时,FSMN每一层数据处理过程示意图可以如图3所示。包括,将当前数据和对应权重的乘积,作为一个DNN(记为DNN1)的输入数据,将历史数据和对应权重的乘积,以及未来数据(用于确定当前数据的未来数据)和对应权重的乘积相加,作为另一个DNN(记为DNN2)的输入数据,两个DNN的输出数据相加,得到该层的输出数据。
即在一种可能的实现方式中,在本发明实施例提供的方案中,根据查找到的历史数据,确定第一输出数据,可以是根据历史数据和输入数据,结合权重,利用DNN得到第一输出数据。根据查找到的当前数据,确定第二输出数据,可以是根据当前数据,结合权重,利用DNN得到第二输出数据。从而进一步提高数据处理速度,并可以保证数据处理的准确性。
需要说明的是,在本实施例中,针对同一个FSMN的每一个隐藏层,用于查找指定未来维度的输入数据、指定历史维度的历史数据和当前数据的指针,可以均根据系统时间确定。
即,整个FSMN可以维护一个时间,在一种可能的实现方式中,该时间可以表示最新的时间点(可以理解为,最近一次接收到输入数据的时间)。每个隐藏层根据对应的历史数据维度、当前数据维度和未来数据维度以及系统时间,定位对应的指针,在对应的环形队列中实现数据查找。
下面通过实施例二对本发明实施例一提供的方法进行说明。
实施例二、
本实施例中,可以假设一个FSMN包括三个隐藏层,每个隐藏层的网络配置可以如下表1所示。
表1
层数 | 环形队列长度 | 历史维度 | 未来维度 | 输入维度 | 输出维度 |
1 | (25+5+1)*120 | 25 | 5 | 120 | 128 |
2 | (15+2+1)*128 | 15 | 2 | 128 | 72 |
3 | (15+2+1)*72 | 15 | 2 | 72 | 4 |
即,在FSMN的第一个隐藏层,可以配置该隐藏层的输入数据维度(在表1中简单记为输入维度,可以理解为输入的数据(可以理解为一个数据块)的数据长度)为120,输出数据维度(在表1中简单记为输出维度,可以理解为输出的数据(可以理解为一个数据块)的数据长度)为128。
并可以配置指定未来维度(在表1中简单记为未来维度,可以理解为由指定未来维度的输入数据确定一个当前数据)为5(可以理解为由5个输入数据确定一个当前数据),指定历史维度(在表1中简单记为历史维度,可以理解为由指定历史维度的历史数据确定一个第一输出数据)为25(可以理解为由25个历史数据确定一个第一输出数据)。
此时,该隐藏层对应的环形队列的长度(在表1中简单记为环形队列长度)可以配置为(25+5+1)*120,以实现对该隐藏层对应的指定未来维度的未来数据,指定历史维度的历史数据和当前数据的保存。可以理解为当前数据(也可以理解为一个数据块)以及每个历史数据(也可以理解为一个数据块)的维度均与输入数据维度相同。
此时,在FSMN的第二个隐藏层,配置该隐藏层的输入数据维度为128,并可以配置输出数据维度为72。
另外,可以配置指定未来维度为2,指定历史维度为15。
此时,该隐藏层对应的环形队列的长度可以配置为(15+2+1)*128,以实现对该隐藏层对应的指定未来维度的输入数据,指定历史维度的历史数据和当前数据的保存。
此时,在FSMN的第三个隐藏层,配置该隐藏层的输入数据维度为72,并可以配置输出数据维度为4。
另外,可以配置指定未来维度为2,指定历史维度为15。
此时,该隐藏层对应的环形队列的长度可以配置为(15+2+1)*128,以实现对该隐藏层对应的指定未来维度的输入数据,指定历史维度的历史数据和当前数据的保存。
在本实施例中,假设系统时间用time表示。为了便于说明,在本实施例中,time的值可以记为FSMN对应的数据处理周期的个数(根据最近一次接收到输入数据的时间以及每个数据处理周期的时长得到,例如,最近一次接收到输入数据的时间为90ms,每个数据处理周期的时长为10ms,则time值为9),每进行一次网络计算,time值加1。
在环形队列中,每个数据的维度为其所在隐藏层对应的输入数据维度,为了便于说明,在本实施例中,将输入数据维度的每个数据作为一个整体看待,即每个历史数据、当前数据和输入数据均可以理解为一个数据块。则在第一层(即第一个隐藏层)对应的环形队列中,可以理解为包括31个数据(可以理解为环形队列中的每个数据对应一个数据处理周期,若通过数据下标标记数据,则下标可以根据time确定。在本实施例中,下标可以分别记为0~30),在第二层(即第二个隐藏层)对应的环形队列中,可以理解为包括18个数据(与第一层类似的,下标可以分别记为0~17),在第三层(即第三个隐藏层)对应的环形队列中,可以理解为包括18个数据(与第一层类似的,下标可以分别记为0~17)。
在每个环形队列中,可以通过数据下标进行数据查找(当然,在通过数据下标查找到一个数据后,该数据中的每个输入数据维度的数据都可以被查找到)。因此,每个数据对应的指针可以与环形队列中,数据的下标对应。数据下标的计算方法可以理解为该数据对应的指针的计算方法。每个数据的下标可以根据time确定,计算方法可以如表2所示。
表2
层数 | 最新输入数据下标 | 当前数据下标 | 未来数据开始下标 | 历史数据开始下标 |
1 | Index1=Time%31 | (Index1-5)%31 | (Index1-4)%31 | (Index1+1)%31 |
2 | Index2=(Time-5)%18 | (Index2-2)%18 | (Index2-1)%18 | (Index2+1)%18 |
3 | Index3=(Time-5-2%18 | (Index3-2)%18 | (Index3-1)%18 | (Index3+1)%18 |
需要说明的是,因为每一层都需要未来数据进行运算,所以需要的总的未来数据为各层未来数据的叠加,即为9,即本实施例提供的三层FSMN可以计算出time的9个数据处理周期之前的网络输出。结合表2提供的数据下标计算方法,本实施例提供的三层FSMN获得网络输出的过程可以如下表3所示。
表3
第一层 | |||||||||
1-0 | 1-1 | 1-2 | 1-3 | 1-4 | 1-5 | ||||
1-1 | 1-2 | 1-3 | 1-4 | 1-5 | 1-6 | ||||
1-2 | 1-3 | 1-4 | 1-5 | 1-6 | 1-7 | ||||
1-3 | 1-4 | 1-5 | 1-6 | 1-7 | 1-8 | ||||
1-4 | 1-5 | 1-6 | 1-7 | 1-8 | 1-9 | ||||
第二层 | |||||||||
2-0 | 2-1 | 2-2 | 2-3 | 2-4 | |||||
2-1 | 2-2 | 2-3 | |||||||
2-2 | 2-3 | 2-4 | |||||||
第三层 | |||||||||
3-0 | 3-1 | 3-2 | |||||||
输出层 | |||||||||
4-0 |
如表3所示,可以理解为为了获得time的9个数据处理周期之前的网络输出,第一层进行了5次数据处理过程,对应输出5个输出数据到第二层。第二层进行了3次数据处理过程,对应输出3个输出数据到第三层。第三层进行了1次数据处理过程,对应输出1个输出数据到输出层。需要说明的是,在每一层数据处理过程中,缺省的数据可以预设一个缺省值。
在表3中,每个数据的中划线之前的部分表示该数据对应的隐藏层层数,中划线之后的部分表示该数据对应的下标。
以第一层为例,假设按照产生的时间先后顺序,5个输入数据(1-0~1-4)、1个当前数据(1-30)和25个历史数据(1-5~1-29)依次保存在环形队列中。
在如表3所示的第一次数据处理过程中,可以将最新接收到的输入数据,保存在对应的时间最早的历史数据所保存的位置,即,利用最新接收到的输入数据更新1-5。
根据5个未来数据(1-1~1-5)得到一个当前数据,可以将最新得到的当前数据,保存在对应的时间最早的输入数据所保存的位置,即,利用最新得到的当前数据更新1-0。
此时,历史数据可以理解为1-6~1-30,其中,1-30为最新得到的历史数据。
根据如图3所示的数据处理过程,根据未来数据(1-1~1-5)、当前数据(1-0)以及历史数据(1-6~1-30),即可以得到第一层的输出数据,作为第二层的输入数据(2-0)。
在如表3所示的第二次数据处理过程中,可以将最新接收到的输入数据,保存在对应的时间最早的历史数据所保存的位置,即,利用最新接收到的输入数据更新1-6。
根据5个未来数据(1-2~1-6)得到一个当前数据,可以将最新得到的当前数据,保存在对应的时间最早的输入数据所保存的位置,即,利用最新得到的当前数据更新1-1。
此时,历史数据可以理解为1-7~1-30以及1-0,其中,1-0为最新得到的历史数据。
根据如图3所示的数据处理过程,根据未来数据(1-2~1-6)、当前数据(1-1)以及历史数据(1-7~1-30以及1-0),即可以得到第一层的输出数据,作为第二层的输入数据(2-1)。
每次数据处理过程,以此类推。
每一层的数据处理过程与第一层类似。
如表2所示,最新输入数据下标根据time确定后,在FSMN的每一个隐藏层对应的环形队列中,可以根据当前数据下标定位指针,实现对当前数据的查找(可以理解为指定当前维度为1)。可以根据未来数据开始下标定位指针,结合指定未来维度,实现对未来数据的查找。可以根据历史数据开始下标定位指针,结合指定历史维度,实现对历史数据的查找。
如表3所示,在每一层通过环形队列保存了对应的历史数据、当前数据和未来数据后,即可以通过指针进行数据查找,进而实现数据处理过程,获得对应的输出数据。由于历史数据、当前数据和未来数据都是连续数据流,且都是点乘运算,因此非常利于在各个平台上进行加速。
本实施例提供了一种使用环形队列实现FSMN网络计算的方法。该方法利用环形队列方式实现FSMN网络计算,无需进行信息拷贝,根据每层的配置信息确定历史数据、当前数据和未来数据对应的指针,可以方便快速地实现信息的保存,并可以方便快速地实现数据查找和处理,有利于加快数据处理速度。
只需要维护3个指针,分别指向历史数据、当前数据和未来数据,通过指针查找信息,节约了大量数据拷贝时间,且由于地址的连续性,也方便在各平台上进行计算加速。
同时,整个FSMN全局维护一个时间,该时间可以为最新的时间点,每一层可以根据本层的历史数据,当前数据和未来数据的维度,定位对应的指针,实现逻辑简单,可以实现模块化编程。且计算时间同步,不会出现信息同步异常。
与实施例一提供的方法对应的,提供以下的装置。
实施例三
本发明实施例三提供一种FSMN数据处理装置,针对所述FSMN的每一个隐藏层,该隐藏层对应的指定未来维度的输入数据、当前数据和指定历史维度的历史数据按照产生的时间先后顺序,依次保存在该隐藏层对应的环形队列中,该装置的结构可以如图4所示,包括:
接收模块11用于针对一个隐藏层,接收一个输入数据;
更新模块12用于将接收到的输入数据,保存在该隐藏层对应的环形队列中,对应的时间最早的历史数据所保存的位置;根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定未来维度的输入数据,根据查找到的输入数据确定一个当前数据,并将确定出的当前数据,保存在该隐藏层对应的环形队列中,对应的时间最早的输入数据所保存的位置。
进一步的,所述装置还可以包括:
确定模块13用于根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据;并,根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据;
输出模块14用于将所述第一输出数据和所述第二输出数据相加,作为该隐藏层本次数据处理过程对应的输出数据。
在一种可能的实现方式中,针对所述FSMN的每一个隐藏层,用于查找指定未来维度的输入数据、指定历史维度的历史数据和所述当前数据的指针,均根据系统时间确定。
所述确定模块13用于根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据,包括:
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,确定查找到的历史数据与第一权重的第一乘积,并确定查找到的输入数据与第二权重的第二乘积,将所述第一乘积和所述第二乘积相加,作为第一DNN的输入数据,得到对应的第一输出数据;
所述确定模块13用于根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据,包括:
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,确定查找到的当前数据与第三权重的第三乘积,将所述第三乘积作为第二DNN的输入数据,得到对应的第二输出数据。
基于同一发明构思,本发明实施例提供以下的设备和介质。
实施例四
本发明实施例四提供一种FSMN数据处理设备,该设备的结构可以如图5所示,包括处理器21、通信接口22、存储器23和通信总线24,其中,所述处理器21,所述通信接口22,所述存储器23通过所述通信总线24完成相互间的通信;
所述存储器23,用于存放计算机程序;
所述处理器21,用于执行所述存储器上所存储的程序时,实现本发明实施例一所述的方法步骤。
可选的,所述处理器21具体可以包括中央处理器(CPU)、特定应用集成电路(ASIC,Application Specific Integrated Circuit),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(FPGA,Field Programmable Gate Array)开发的硬件电路,可以是基带处理器。
可选的,所述处理器21可以包括至少一个处理核心。
可选的,所述存储器23可以包括只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)和磁盘存储器。存储器23用于存储至少一个处理器21运行时所需的数据。存储器23的数量可以为一个或多个。
本发明实施例五提供一种非易失性计算机存储介质,所述计算机存储介质存储有可执行程序,当可执行程序被处理器执行时,实现本发明实施例一提供的方法。
在具体的实施过程中,计算机存储介质可以包括:通用串行总线闪存盘(USB,Universal Serial Bus Flash Drive)、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的存储介质。
在本发明实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性或其它的形式。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如可以是个人计算机,服务器,或者网络设备等,或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus Flash Drive)、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种FSMN数据处理方法,其特征在于,针对所述FSMN的每一个隐藏层,该隐藏层对应的指定未来维度的输入数据、当前数据和指定历史维度的历史数据按照产生的时间先后顺序,依次保存在该隐藏层对应的环形队列中,一个隐藏层接收到一个输入数据时,所述方法包括:
将接收到的输入数据,保存在该隐藏层对应的环形队列中,对应的时间最早的历史数据所保存的位置;
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定未来维度的输入数据,根据查找到的输入数据确定一个当前数据,并将确定出的当前数据,保存在该隐藏层对应的环形队列中,对应的时间最早的输入数据所保存的位置;
其中,针对所述FSMN的每一个隐藏层,用于查找指定未来维度的输入数据、指定历史维度的历史数据和所述当前数据的指针,均根据系统时间确定。
2.如权利要求1所述的方法,其特征在于,将确定出的当前数据,保存在该隐藏层对应的环形队列中,对应的时间最早的输入数据所保存的位置之后,所述方法还包括:
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据;并,
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据;
将所述第一输出数据和所述第二输出数据相加,作为该隐藏层本次数据处理过程对应的输出数据。
3.如权利要求2所述的方法,其特征在于,根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据,包括:
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,确定查找到的历史数据与第一权重的第一乘积,并确定查找到的输入数据与第二权重的第二乘积,将所述第一乘积和所述第二乘积相加,作为第一DNN的输入数据,得到对应的第一输出数据;
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据,包括:
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,确定查找到的当前数据与第三权重的第三乘积,将所述第三乘积作为第二DNN的输入数据,得到对应的第二输出数据。
4.一种FSMN数据处理装置,其特征在于,针对所述FSMN的每一个隐藏层,该隐藏层对应的指定未来维度的输入数据、当前数据和指定历史维度的历史数据按照产生的时间先后顺序,依次保存在该隐藏层对应的环形队列中,所述装置包括:
接收模块,用于针对一个隐藏层,接收一个输入数据;
更新模块,用于将接收到的输入数据,保存在该隐藏层对应的环形队列中,对应的时间最早的历史数据所保存的位置;根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定未来维度的输入数据,根据查找到的输入数据确定一个当前数据,并将确定出的当前数据,保存在该隐藏层对应的环形队列中,对应的时间最早的输入数据所保存的位置;
其中,针对所述FSMN的每一个隐藏层,用于查找指定未来维度的输入数据、指定历史维度的历史数据和所述当前数据的指针,均根据系统时间确定。
5.如权利要求4所述的装置,其特征在于,所述装置还包括:
确定模块,用于根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据;并,根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据;
输出模块,用于将所述第一输出数据和所述第二输出数据相加,作为该隐藏层本次数据处理过程对应的输出数据。
6.如权利要求5所述的装置,其特征在于,所述确定模块,用于根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,根据查找到的历史数据,确定第一输出数据,包括:
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的指定历史维度的历史数据,确定查找到的历史数据与第一权重的第一乘积,并确定查找到的输入数据与第二权重的第二乘积,将所述第一乘积和所述第二乘积相加,作为第一DNN的输入数据,得到对应的第一输出数据;
所述确定模块,用于根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,根据查找到的当前数据,确定第二输出数据,包括:
根据产生的时间先后顺序,利用指针从该隐藏层对应的环形队列中,查找保存的当前数据,确定查找到的当前数据与第三权重的第三乘积,将所述第三乘积作为第二DNN的输入数据,得到对应的第二输出数据。
7.一种非易失性计算机存储介质,其特征在于,所述计算机存储介质存储有可执行程序,该可执行程序被处理器执行实现权利要求1~3任一所述的方法。
8.一种FSMN数据处理设备,其特征在于,所述设备包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存储的程序时,实现权利要求1~3任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010117089.5A CN111368974B (zh) | 2020-02-25 | 2020-02-25 | 一种fsmn数据处理方法、装置、介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010117089.5A CN111368974B (zh) | 2020-02-25 | 2020-02-25 | 一种fsmn数据处理方法、装置、介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111368974A CN111368974A (zh) | 2020-07-03 |
CN111368974B true CN111368974B (zh) | 2023-11-21 |
Family
ID=71211012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010117089.5A Active CN111368974B (zh) | 2020-02-25 | 2020-02-25 | 一种fsmn数据处理方法、装置、介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111368974B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547828A (zh) * | 2016-09-30 | 2017-03-29 | 南京途牛科技有限公司 | 一种基于神经网络的数据库缓存系统及方法 |
CN107124286A (zh) * | 2016-02-24 | 2017-09-01 | 深圳市知穹科技有限公司 | 一种海量数据高速处理、交互的系统及方法 |
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN109615065A (zh) * | 2018-12-17 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种基于fpga的数据处理方法、设备以及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201511887D0 (en) * | 2015-07-07 | 2015-08-19 | Touchtype Ltd | Improved artificial neural network for language modelling and prediction |
US11216720B2 (en) * | 2015-10-08 | 2022-01-04 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Neural network unit that manages power consumption based on memory accesses per period |
US10719268B2 (en) * | 2018-06-29 | 2020-07-21 | Microsoft Technology Licensing, Llc | Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor |
-
2020
- 2020-02-25 CN CN202010117089.5A patent/CN111368974B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124286A (zh) * | 2016-02-24 | 2017-09-01 | 深圳市知穹科技有限公司 | 一种海量数据高速处理、交互的系统及方法 |
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN106547828A (zh) * | 2016-09-30 | 2017-03-29 | 南京途牛科技有限公司 | 一种基于神经网络的数据库缓存系统及方法 |
CN109615065A (zh) * | 2018-12-17 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种基于fpga的数据处理方法、设备以及存储介质 |
Non-Patent Citations (3)
Title |
---|
Hossein Valavi 等.A mixed-signal binarized convolutional-neural-network accelerator integrating dense weight storage and multiplication for reduced data movement.《2018 IEEE Symposium on VLSI Circuits》.2018,第141-142页. * |
刘渝.基于机器学习的图像内容分析与存储方法研究.《中国博士学位论文全文数据库 信息科技辑(月刊)》.2018,(第07期),第I138-28页. * |
申金媛 等.一种改进的多输入队列的神经网络调度算法.《光电子•激光》.2006,第17卷(第9期),第1119-1122页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111368974A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108053119B (zh) | 一种求解零等待流水车间调度问题的改进粒子群优化方法 | |
CN114356578B (zh) | 自然语言处理模型的并行计算方法、装置、设备及介质 | |
CN111651137B (zh) | 排序方法、装置、电子装置以及计算机设备 | |
CN109214512A (zh) | 一种深度学习的参数交换方法、装置、服务器及存储介质 | |
CN117331700B (zh) | 一种算力网络资源调度系统及方法 | |
CN109871270B (zh) | 调度方案生成方法及装置 | |
CN109491956B (zh) | 一种异构协同计算系统 | |
CN111368974B (zh) | 一种fsmn数据处理方法、装置、介质和设备 | |
CN112800737A (zh) | 自然语言文本生成方法和装置以及对话系统 | |
EP3444758A1 (en) | Discrete data representation-supporting apparatus and method for back-training of artificial neural network | |
CN112862083B (zh) | 一种边缘环境下的深度神经网络推断方法及装置 | |
CN116955365B (zh) | 梯度数据同步方法、模型训练方法、系统、设备及介质 | |
CN111597035B (zh) | 基于多线程的仿真引擎时间推进方法及系统 | |
CN112990461B (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
CN117291259A (zh) | 算子优化方法、装置、电子设备及存储介质 | |
CN116934571A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN116128019A (zh) | Transformer模型的并行训练方法及装置 | |
CN115208954A (zh) | 用于分布式数据处理的并行策略预置系统及其方法 | |
CN112700005A (zh) | 一种基于蒙特卡洛树搜索的异常事件处理方法和装置 | |
CN111786824A (zh) | 数据中心能效比优化方法、系统、设备及可读存储介质 | |
CN111242803A (zh) | 基于多种群遗传算法的风机排布方法及装置 | |
CN117009061A (zh) | 任务处理方法、装置、设备及计算机可读存储介质 | |
Zhou et al. | DRL-Based Workload Allocation for Distributed Coded Machine Learning | |
CN117707769A (zh) | 一种基于分组排序的仿真计算加速方法和相关装置 | |
CN116384481A (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 |