CN108268939B - 用于执行lstm神经网络运算的装置和运算方法 - Google Patents

用于执行lstm神经网络运算的装置和运算方法 Download PDF

Info

Publication number
CN108268939B
CN108268939B CN201611269665.8A CN201611269665A CN108268939B CN 108268939 B CN108268939 B CN 108268939B CN 201611269665 A CN201611269665 A CN 201611269665A CN 108268939 B CN108268939 B CN 108268939B
Authority
CN
China
Prior art keywords
data
unit
data processing
vector
gate
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
Application number
CN201611269665.8A
Other languages
English (en)
Other versions
CN108268939A (zh
Inventor
陈云霁
陈小兵
刘少礼
陈天石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202010018716.XA priority Critical patent/CN111260025B/zh
Priority to CN201611269665.8A priority patent/CN108268939B/zh
Priority to CN202110708810.2A priority patent/CN113537480B/zh
Priority to CN202110713121.0A priority patent/CN113537481B/zh
Publication of CN108268939A publication Critical patent/CN108268939A/zh
Priority to US16/459,549 priority patent/US10853722B2/en
Application granted granted Critical
Publication of CN108268939B publication Critical patent/CN108268939B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Abstract

一种用于执行LSTM神经网络运算的装置和运算方法。该装置包括直接内存访问单元、指令缓存单元、控制器单元、并列设置的多个数据缓存单元和并列设置的多个数据处理模块,其中所述多个数据处理模块与所述数据缓存单元一一对应,用于从相应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;所述多个数据处理模块之间执行并行运算。本发明采用专用指令运行,运算所需指令数大幅减少,译码开销降低;将权值和偏置缓存,使得数据传输开销降低;本发明不限制具体应用领域,可在诸如语音识别、文本翻译、音乐合成等领域使用,可扩展性强;多个数据处理模块并行运行,显著提高LSTM网络的运算速度。

Description

用于执行LSTM神经网络运算的装置和运算方法
技术领域
本发明涉及神经网络运算技术领域,更具体地涉及一种用于执行LSTM神经网络运算的装置和运算方法。
背景技术
长短时间记忆网络(LSTM)是一种时间递归神经网络(RNN),由于网络本身独特的结构设计,LSTM适合于处理和预测时间序列中间隔和延时非常长的重要事件。相比于传统的递归神经网络,LSTM网络表现出更好的性能,它非常适合从经验中学习,以便在重要事件之间存在未知大小时间之后时对时间序列进行分类、处理和预测。目前,在语音识别、视频描述、机器翻译和音乐自动合成等诸多领域,LSTM网络被广泛应用。同时,随着对LSTM网络研究的不断深入,LSTM网络的性能得到了大幅的改善,也在工业界和学术界引起广泛重视。
LSTM网络的运算涉及到多种算法,具体的实现装置主要有以下两种:
一种实现LSTM网络运算的装置是通用处理器。该方法通过使用通用寄存器堆栈和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的借助LSTM网络本身运算的可并行性来进行加速。而通过多个通用处理器并行执行时,通过处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把人工神经网络运算译码成一系列的运算以及访存指令,处理器前端译码也存在较大的功耗开销。
另一种支持LSTM网络运算的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆栈和通用流处理单元执行通用SIMD指令来执行上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对LSTM网络提供专门的支持,仍然需要大量的前端译码工作才能执行LSTM网络运算,这会带来大量的额外开销。另外,GPU只有较小的片上缓存,LSTM网络中使用的相关参数需要反复从片外搬运,片外带宽也成为了性能瓶颈。
由此可见,如何设计和提供一种以较小的IO量、低开销的方式实现高运算性能的LSTM网络运算的装置和方法是当前迫切需要解决的技术问题。
发明内容
有鉴于此,本发明的主要目的是提供一种用于执行LSTM网络运算的装置和方法,以解决上述技术问题中的至少之一。
为了实现上述目的,作为本发明的一个方面,本发明提供了一种用于执行LSTM神经网络运算的装置,其特征在于,包括:
并列设置的多个数据缓存单元,用于对运算所需数据、状态和结果进行缓存;
并列设置的多个数据处理模块,用于从对应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;其中所述多个数据处理模块与所述数据缓存单元一一对应,且所述多个数据处理模块之间执行并行运算。
作为本发明的另一个方面,本发明还提供了一种用于执行LSTM神经网络运算的装置,其特征在于,包括:
存储器;
处理器,所述处理器执行如下操作:
步骤1,从外部指定地址空间读取用于LSTM神经网络运算的权值和偏置,并将其分割成与所述LSTM神经网络运算的神经元对应的多个部分后存储到所述存储器的不同空间中,其中每个空间中的权值和偏置的数量相同;并从外部指定地址空间读取用于LSTM神经网络运算的输入数据并将其存储在所述存储器的每一个所述不同空间中;
步骤2,将所述存储器的每一个所述不同空间中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的向量运算单元运算的数量相同;每次将一份权值和输入数据计算得到部分和,再与之前得到的部分和进行向量加,得到新的部分和,其中所述部分和的初始值为偏置值;
步骤3,待所述存储器的每一个所述不同空间中的所有输入数据均进行了处理之后,得到的部分和即为神经元对应的净激活量,通过非线性函数tanh或sigmoid函数变换所述神经元的净激活量,得到所述神经元的输出值;
步骤4,通过这种方式使用不同的权值和偏置,重复上述步骤1~3,分别计算出LSTM神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;其中,计算部分和的过程采用的是向量运算指令,所述存储器的每一个所述不同空间中的输入数据采用并行运算方式进行计算;
步骤5,判断所述存储器的每一个所述不同空间中的当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值通过向量点乘部件得到部分和,然后将待选状态单元和输入门的值通过向量点乘部件得到部分和,将所述两个部分和通过向量求和子模块得到更新后的状态单元,同时,将更新后的状态单元通过非线性变换函数tanh进行变换;判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到所述存储器的每一个所述不同空间的最终输出值;
步骤6,将各个所述存储器的每一个所述不同空间的最终输出值通过拼接得到最终的输出值。
作为本发明的再一个方面,本发明还提供了一种LSTM神经网络的运算方法,其特征在于,包括以下步骤:
步骤S1,从外部指定地址空间读取用于LSTM神经网络运算的权重和偏置,并将其写入到多个并行设置的数据缓冲单元,对各数据缓存单元的状态单元进行初始化;其中,从外部指定地址空间读取的权值和偏置对应于所述LSTM神经网络运算的神经元而被分割送入到各相应数据缓冲单元,各数据缓冲单元中的权值和偏置的数量分别相同;
步骤S2,从外部指定地址空间读取输入数据,并将其写入到所述多个数据缓冲单元,其中每一个所述数据缓冲单元中写入的输入数据均为完整的;
步骤S3,与所述多个并行设置的数据缓冲单元一一对应的多个数据处理模块分别从对应的数据缓冲单元中读取所述权重、偏置和输入数据,并采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件对其进行LSTM神经网络运算,分别得到每一个数据处理模块的输出值;
步骤S4,将各个数据处理模块的输出值通过拼接得到最终的输出值,即所述LSTM神经网络运算的最终结果。
基于上述技术方案可知,本发明的用于执行神经网络运算的装置和方法,相比于已有的实现方式具有以下的有益效果:
1、采用外部指令运行,相比于已有的实现方式,运算所需的指令数大幅度减少,使得进行LSTM网络运算时产生的译码开销降低;
2、利用LSTM网络运算过程中隐含层的权值和偏置会重复使用这一特点,将权值和偏置值在数据缓存单元中进行暂存,使得装置与外部的IO量减少,数据传输产生的开销降低;
3、本发明不限制具体的LSTM网络的应用领域,可以在诸如语音识别、文本翻译、音乐合成等领域使用,可扩展性强;
4、装置中的多个数据处理模块之间完全并行,数据处理模块内部部分并行,能充分利用LSTM网络的可并行性,显著地提高了LSTM网络的运算速度;
5、作为优选,向量非线性函数转换部件的具体实现可以通过查表方法进行,相比于传统的函数运算,效率大幅度提升。
附图说明
为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:
图1示出了根据本发明一实施例的用于执行LSTM网络运算的装置的整体结构示意图;
图2示出了根据本发明一实施例的用于执行LSTM网络运算的装置的数据处理模块示意图;
图3示出了根据本发明一实施例的用于执行LSTM网络运算的方法流程图;
图4示出了根据本发明一实施例的用于执行LSTM网络运算的方法中数据处理过程的详细流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制。
本发明的用于执行LSTM网络运算的装置可以应用于以下场景中,包括但不限于:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、抽烟机等各类家用电器,以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
具体地,本发明公开了一种用于执行LSTM神经网络运算的装置,包括:
并列设置的多个数据缓存单元,用于对运算所需数据、状态和结果进行缓存;
并列设置的多个数据处理模块,用于从对应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;其中所述多个数据处理模块与所述数据缓存单元一一对应,且所述多个数据处理模块之间执行并行运算。
其中,所述数据缓存单元还对所述数据处理模块计算的中间结果进行缓存,且在整个执行过程中只从所述直接内存访问单元导入一次权值和偏置,之后不再改变。
其中,每一个所述数据缓冲单元中写入了对应于所述LSTM神经网络运算的神经元而被分割的权值和偏置,其中各数据缓冲单元中的权值和偏置的数量均相同,且每个数据缓冲单元都获取了一份完整的输入数据。
其中,所述数据处理模块采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件进行所述LSTM神经网络运算。
其中,所述向量非线性函数转换部件通过查表方法进行函数运算。
其中,每一个所述数据处理模块通过分别计算出LSTM网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值来进行所述向量运算,再由各所述向量值得到每一个所述数据处理模块的输出值,最后将各所述数据处理模块的输出值拼接得到最终的输出值。
作为一个优选实施方式,本发明公开了一种用于执行LSTM神经网络运算的装置,包括:
直接内存访问单元,用于从所述装置外的外部地址空间获取指令和LSTM神经网络运算所需的数据,并将其中的指令和数据分别传输给指令缓存单元和数据缓存单元,以及从数据处理模块或数据缓存单元将运算结果写回到外部地址空间;
指令缓存单元,用于缓存直接内存访问单元从外部地址空间获取的指令,并输入到控制器单元;
控制器单元,从指令缓存单元中读取指令,并将指令译码成微指令,用于控制直接内存单元进行数据IO操作、数据处理模块进行相关运算和数据缓存单元进行数据缓存和传输;
并列设置的多个数据缓存单元,用于对运算所需数据、状态和结果进行缓存;
并列设置的多个数据处理模块,用于从相应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算,并将运算结果输入到相应数据缓存单元或直接内存访问单元中;其中所述多个数据处理模块与所述数据缓存单元一一对应,且所述多个数据处理模块之间执行并行运算。
作为优选,所述直接内存访问单元、指令缓存单元、控制器单元、多个数据缓存单元和多个数据处理模块均通过硬件电路实现。
作为优选,所述数据缓存单元还对所述数据处理模块计算的中间结果进行缓存,且在整个执行过程中只从所述直接内存访问单元导入一次权值和偏置,之后不再改变。
作为优选,所述多个数据处理模块均采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件进行所述LSTM神经网络运算。
作为优选,所述向量非线性函数转换部件通过查表方法进行函数运算。
作为优选,所述多个数据处理模块通过如下方式进行并行运算:
步骤1,各相应数据缓冲单元中写入了从外部指定地址空间读取的、对应于所述LSTM神经网络运算的神经元而被分割的权值和偏置,其中各数据缓冲单元中的权值和偏置的数量均相同,且每个数据缓冲单元都获取了一份完整的输入数据;每一数据处理模块将各相应数据缓冲单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同;每次将一份权值和输入数据送入所述相应数据处理模块中,计算得到部分和,再从所述数据缓冲单元中取出之前得到的部分和,对部分和进行向量加,得到新的部分和,送回到所述数据缓冲单元中,其中所述部分和的初始值为偏置值;
步骤2,待各数据缓冲单元中的所有输入数据送入到相应数据处理模块处理一次后,得到的部分和即为神经元对应的净激活量,相应数据处理模块通过非线性函数tanh或sigmoid函数变换所述神经元的净激活量,得到所述神经元的输出值;
步骤3,通过这种方式使用不同的权值和偏置,重复上述步骤1~2,分别计算出LSTM网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;其中,在同一个数据处理模块中,计算部分和的过程采用的是向量运算指令,数据间采用并行运算;
步骤4,每个数据处理模块判断当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值送入到数据处理单元,通过向量点乘部件得到部分和,送回到数据缓冲单元中,然后将待选状态单元和输入门的值送到数据处理单元,通过向量点乘部件得到部分和,将数据缓冲单元中的部分和送到数据处理模块中,通过向量求和子模块得到更新后的状态单元,然后,送回到数据缓存单元中,同时,将数据处理模块中的更新后的状态单元通过非线性变换函数tanh进行变换;每个数据处理模块判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到最终的输出值,将输出值写回到数据缓冲单元中;
步骤5,待所有数据处理模块中的输出值写回到数据缓冲单元后,将各个数据处理模块中的输出值通过拼接得到最终的输出值,并通过直接内存访问单元送至外部指定地址处。
本发明还公开了一种用于执行LSTM神经网络运算的装置,包括:
存储器;
处理器,所述处理器执行如下操作:
步骤1,从外部指定地址空间读取用于LSTM神经网络运算的权值和偏置,并将其分割成与所述LSTM神经网络运算的神经元对应的多个部分后存储到所述存储器的不同空间中,其中每个空间中的权值和偏置的数量相同;并从外部指定地址空间读取用于LSTM神经网络运算的输入数据并将其存储在所述存储器的每一个所述不同空间中;
步骤2,将所述存储器的每一个所述不同空间中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的向量运算单元运算的数量相同;每次将一份权值和输入数据计算得到部分和,再与之前得到的部分和进行向量加,得到新的部分和,其中所述部分和的初始值为偏置值;
步骤3,待所述存储器的每一个所述不同空间中的所有输入数据均进行了处理之后,得到的部分和即为神经元对应的净激活量,通过非线性函数tanh或sigmoid函数变换所述神经元的净激活量,得到所述神经元的输出值;
步骤4,通过这种方式使用不同的权值和偏置,重复上述步骤1~3,分别计算出LSTM神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;其中,计算部分和的过程采用的是向量运算指令,所述存储器的每一个所述不同空间中的输入数据采用并行运算方式进行计算;
步骤5,判断所述存储器的每一个所述不同空间中的当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值通过向量点乘部件得到部分和,然后将待选状态单元和输入门的值通过向量点乘部件得到部分和,将所述两个部分和通过向量求和子模块得到更新后的状态单元,同时,将更新后的状态单元通过非线性变换函数tanh进行变换;判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到所述存储器的每一个所述不同空间的最终输出值;
步骤6,将各个所述存储器的每一个所述不同空间的最终输出值通过拼接得到最终的输出值。
本发明还公开了一种LSTM神经网络的运算方法,包括以下步骤:
步骤S1,从外部指定地址空间读取用于LSTM神经网络运算的权重和偏置,并将其写入到多个并行设置的数据缓冲单元,对各数据缓存单元的状态单元进行初始化;其中,从外部指定地址空间读取的权值和偏置对应于所述LSTM神经网络运算的神经元而被分割送入到各相应数据缓冲单元,各数据缓冲单元中的权值和偏置的数量分别相同;
步骤S2,从外部指定地址空间读取输入数据,并将其写入到所述多个数据缓冲单元,其中每一个所述数据缓冲单元中写入的输入数据均为完整的;
步骤S3,与所述多个并行设置的数据缓冲单元一一对应的多个数据处理模块分别从对应的数据缓冲单元中读取所述权重、偏置和输入数据,并采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件对其进行LSTM神经网络运算,分别得到每一个数据处理模块的输出值;
步骤S4,将各个数据处理模块的输出值通过拼接得到最终的输出值,即所述LSTM神经网络运算的最终结果。
作为优选,所述步骤S3中,每一个数据处理模块分别将对应数据缓冲单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同;每一数据缓冲单元每次将一份权值和输入数据送入与其对应的数据处理模块中,计算得到部分和,再从所述数据缓冲单元中取出之前得到的部分和,对部分和进行向量加,得到新的部分和,送回到所述数据缓冲单元中,其中所述部分和的初始值为偏置值;
待所有输入数据送入到数据处理模块一次后,得到的部分和即为神经元对应的净激活量,然后将神经元的净激活量送入到数据处理模块中,通过数据运算子模块中的非线性函数tanh或sigmoid函数变换得到神经元的输出值,通过这种方式使用不同的权值和偏置,分别计算出LSTM神经网络中的忘记门、输入门、输出门以及待选状态单元的向量值;
每个数据处理模块判断当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值送入到数据处理单元,通过向量点乘部件得到部分和,送回到数据缓冲单元中,然后将待选状态单元和输入门的值送到数据处理单元,通过向量点乘部件得到部分和,将数据缓冲单元中的部分和送到数据处理模块中,通过向量求和子模块得到更新后的状态单元,然后,送回到数据缓存单元中,同时,将数据处理模块中的更新后的状态单元通过非线性变换函数tanh进行变换;每个数据处理模块判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到最终的输出值,将输出值写回到数据缓冲单元中。
作为优选,所述非线性函数tanh或sigmoid函数通过查表方法进行函数运算。
根据本发明实施例结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
作为本发明的一实施方式,本发明公开了一种LSTM网络运算的装置和方法,可以用以加速使用LSTM网络方面的应用。该方法具体包括以下步骤:
(1)将用于LSTM网络运算中使用的权重和偏置通过直接内存访问单元从外部指定地址空间取出,并写入到各个数据缓冲单元,其中,权值和偏置是将从外部指定地址空间取出分割后送入到各个数据缓冲单元,各个数据缓冲单元中的权值和偏置数量相同,且各个数据缓冲单元中的权值和偏置与神经元相对应,并初始化数据缓存单元中的状态单元;
(2)将输入数据通过直接内存防问单元从外部指定地址空间取出写入到数据缓冲单元,此处每个数据缓冲单元都获取一份完整的输入数据;
(3)将各个数据缓冲单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同,每次将一份权值和输入数据送入数据处理模块中,计算得到部分和,再从数据缓冲单元中取出之前得到的部分和,对部分和进行向量加,得到新的部分和,送回到数据缓冲单元中。其中部分和的初始值为偏置值。待所有输入数据送入到数据处理模块一次后,得到的部分和即为神经元对应的净激活量,然后将神经元的净激活量送入到数据处理模块中,通过数据运算子模块中的非线性函数tanh或sigmoid函数变换得到神经元的输出值,这里的函数变换可以通过查表法和函数运算两种方法进行。通过这种方式使用不同的权值和偏置,可以分别计算出LSTM网络中的忘记门、输入门、输出门以及待选状态单元的向量值。在同一个数据处理模块中,计算部分和的过程采用的是向量运算指令,数据间存在并行。然后,每个数据处理模块中的数据依赖判别子模块会判断当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算。首先,将旧的状态单元和忘记门向量值送入到数据处理单元,通过数据运算子模块中的向量点乘部件得到部分和,送回到数据缓冲单元中;然后将待选状态单元和输入门的值送到数据处理单元,通过数据运算子模块中的向量点乘部件得到部分和,将数据缓冲单元中的部分和送到数据处理模块中,通过数据运算子模块中的向量求和子模块得到更新后的状态单元,然后,送回到数据缓存单元中,同时,将数据处理模块中的更新后的状态单元通过数据运算子模块中的非线性变换函数tanh进行变换。每个数据处理模块中的数据依赖判别子模块会判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过数据运算子模块中的向量点乘部件进行计算得到最终的输出值,将输出值写回到数据缓冲单元中。在整个运算过程中,不同的数据处理模块之间都不存在数据依赖或数据冲突问题,可以始终并行处理。
(4)待所有数据处理模块中的输出值写回到数据缓冲单元后,将各个数据处理模块中的输出值通过拼接得到最终的输出值通过直接内存访问单元送至外部指定地址处。
(5)判断LSTM网络是否需要进行下一时刻的输出,如果需要,转(2),否则,结束运行。
图1示出了根据本发明一实施方式的用于执行LSTM网络运算的装置的整体结构示意图。如图1所示,该装置包括直接内存访问单元1、指令缓存单元2、控制器单元3、数据缓存单元4、数据处理模块5,均可以通过硬件电路实现。
直接内存访问单元1能够访问外部地址空间,可以向装置内部各个缓存单元读写数据,完成数据的加载和存储。具体包括向指令缓存单元2读取指令,从指定存储单元之间读取LSTM网络运算所需的权值、偏置以及输入数据到数据缓存单元4,将运算后的输出从数据缓存单元4直接写入外部指定空间。
指令缓存单元2通过直接内存访问单元1读取指令,并缓存读入的指令。
控制器单元3从指令缓存单元2中读取指令,将指令译码为控制其他模块行为的微指令并将其发送给其他模块如直接内存访问单元1、数据缓存单元4、数据处理模块5等。
数据缓存单元4在装置初始化时初始化LSTM的状态单元,并通过直接内存访问单元1从外部指定地址将权值和偏置读取进来,每个数据缓存单元4中读入的权值和偏置与所要计算的神经元对应,即每个数据缓存单元4中读入的权值和偏置为总的权值和偏置的一部分,所有数据缓存单元4中的权值和偏置合并之后为从外部指定地址读入的权值和偏置;在具体运算时,首先会从直接内存访问单元1获取输入数据,每个数据缓存单元4都得到一份输入数据的拷贝,部分和初始化为偏置值,然后将权值、偏置以及输入值中的一部分送至数据处理模块5,在数据处理模块5计算得到中间值,然后将中间值从数据处理模块5读出并保存数据缓存单元4中,当所有的数入都进行一遍运算后,将部分和输入到数据处理模块5计算得到神经元输出,然后写回到数据缓冲单元4中,最终得到输入门、输出门、忘记门和待选状态单元的向量值。然后,将忘记门和旧的状态单元送入到数据处理模块5中,计算得到部分和,写回到数据缓冲单元4中,将待选状态单元和输入门送入到数据处理模块5中,计算得到部分和,将数据缓存单4中的部分和写入到数据处理模块5中与之前计算得到的部分和进行向量加得到更新后的状态单元,并将其写回到数据缓存单元4中。将输出门送入到数据处理模块5中,与更新后的状态单元的非线性变换函数tanh变换后的值进行向量点乘得到输出值,并将输出值写回到数据缓存单元4中。最终,每个数据缓存单元4中得到对应的更新后的状态单元以及输出值,所有数据缓存单元4中的输出值合并即为最终的输出值。最终,每个数据缓存单元4将其得到的部分输出值通过直接内存访问单元1写回到外部指定地址空间。
LSTM网络中对应的运算如下所示:
ft=σ(Wf[ht-1,xt]+bf);
it=σ(Wi[ht-1,xt]+bi);
Figure BDA0001198651020000141
Figure BDA0001198651020000142
Ot=σ(Wo[ht-1,xt]+bo);
ht=ot⊙tanh(ct);
其中,xt为第t时刻的输入数据,ht-1表示t-1时刻的输出数据,Wf、Wi、Wc和Wo分别表示忘记门、输入门、更新状态单元和输出门所对应的权值向量,bf、bi、bc和bo分别表示忘记门、输入门、更新状态单元和输出门所对应偏置;ft表示忘记门的输出,与t-1时刻的状态单元进行点乘来有选择的遗忘过去的状态单元值;it表示输入门的输出,与t时刻的得到的候选状态值点乘来有选择地将t时刻的候选状态值加入到状态单元中;
Figure BDA0001198651020000145
表示t时刻计算得到的候选状态值;ct表示通过将t-1时刻的状态值有选择的遗忘和将t时刻的状态值有选择的加入得到的新的状态值,它将在计算最终输出时刻被使用并传输到下一时刻;ot表示t时刻状态单元中需要作为结果部分输出的选择条件;ht表示t时刻的输出,同时它还将被传输到下一时刻;⊙为向量按元素运算的乘积;σ为sigmoid函数,计算公式为:
Figure BDA0001198651020000143
激活函数tanh函数的计算公式为
Figure BDA0001198651020000144
数据处理模块5每次从对应的数据缓存单元4中读取部分权值Wi/Wf/Wo/Wc和权值bi/bf/bo/bc以及对应的输入数据[ht-1,xt],通过数据处理模块5中的向量乘部件和求和部件完成部分和的计算,直到对于每个神经元所有的输入数据都运算一次后,即可得到神经元的净激活量neti/netf/neto/netc,然后通过向量非线性函数sigmoid或tanh函数的换完成输出值的计算,用这种方式分别完成输入门ii、忘记门fi、输出门oi以及待选状态单元
Figure BDA0001198651020000146
的计算。然后通过分别通过数据处理模块5中的向量点乘部件计算出旧状态单元与忘记门、待选状态单元与输入门的点乘,然后将这两个结果通过向量加部件运算得到新的状态单元ct。将新得到的状态单元写回到数据缓存单元4中。将数据处理模块5中的状态单元利用向量非线性函数装换部件完成tanh函数的转换,得到tanh(ct),在计算过程中,可以通过计算tanh函数值或者查表两种方式完成。然后,将输出门与状态单元经过tanh非线性变换后的向量通过向量点乘部件运算得到最终的神经元输出值ht。最终,将神经元输出值ht写回到数据缓存单元4中。
图2示出了根据本发明一实施例的用于执行LSTM网络运算的装置的数据处理模块示意图;
如图2所示,数据处理单元5包括数据处理控制子模块51、数据依赖判别子模块52以及数据运算子模块53。
其中,数据处理控制子模块51控制数据运算子模块53所进行的运算。控制数据依赖判别子模块52对当前的运算是否存在数据依赖进行判断。对于部分运算,数据处理控制子模块51控制数据运算子模块53所进行的运算;而对于可能存在数据依赖关系的运算,数据处理控制子模块51首先会控制数据依赖判别子模块52对当前的运算是否存在数据依赖进行判断,如果,存在数据依赖关系,数据处理控制子模块51会使数据运算子模块53中插入空操作,等到数据依赖关系解除之后,再控制数据运算子模块53进行数据运算。
数据依赖判别子模块52受数据处理控制子模块51控制,检查数据运算子模块53中是否存在数据依赖关系。如果下次进行的操作需要用到当前尚未运算完成的值,则说明当前存在数据依赖,否则,则不存在数据依赖。一种数据依赖检测的方法是在数据运算子模块53中存在寄存器R1、R2、R3、R4、R5,分别用来标记输入门、忘记门、输出门、待选状态单元以及更新后的状态单元的tanh函数转换运算是否完成,寄存器的值非0表示运算完成,为0表示尚未完成。对应LSTM网络,数据依赖判别子模块52会判断两次数据依赖,分别为计算新的状态单元时判断输入门、输出门以及带选状态单元之间是否存在数据依赖和计算输出值时判断输出门与更新后的状态单元的tanh函数转换是否存在数据依赖,分别判断R1、R3、R4是否都非0和R2、R是否都非0即可。判断完成后,需要将判断结果传回给数据处理控制子模块51。
数据运算子模块53受数据处理模块子模块51的控制,用以完成网络运算过程中的数据处理。数据运算子模块53中包括向量点乘部件、向量加法部件、向量求和部件以及向量非线性变换部件以及标志相关数据运算是否完成的寄存器R1、R2、R3、R4、R5。寄存器R1、R2、R3、R4、R5,分别用来标记输入门、忘记门、输出门、待选状态单元以及更新后的状态单元的tanh函数转换运算是否完成,寄存器的值非0表示运算完成,为0表示尚未完成。其中向量加法部件是将两个向量对应位置相加得到一个向量,而向量求和部件是将向量拆分成几段,每段内部求和,最终得到的向量长度与段数相等。向量非线性变换部件是将向量中每个元素作为输入,得到非线性函数变换后的输出。具体的非线性变换可以通过两种方式完成。以输入为x的sigmoid函数为例,一种是采用函数运算方式,直接计算得sigmoid(x),另一种方式是采用查表法完成,数据运算子模块53中维护一张sigmoid函数的表,分别记录了输入x1、x2…xn(x1<x2<…<xn)时对应的输出y1、y2…yn值,计算x对应的函数值是,首先找到区间[xi,xi+1]满足xi<x<xi+1,计算
Figure BDA0001198651020000161
作为输出值。对于LSTM网络运算过程中,进行如下的运算:
首先,将R1、R2、R3、R4、R5置为0。用偏置初始化输入门部分和;用部分输入数据和和此输入数据对应的权值通过向量点乘部件计算得到临时值,然后,根据不同神经元对应的临时值向量将临时值分段用向量求和部件完成临时值的求和运算,将计算结果与输入门部分和完成部分和的更新;取另一份输入数据和权值进行相同运算更新部分和,待所有的输入数据都运算一次后,得到的部分和即为神经元的净激活量,然后通过向量非线性变换部件计算得到输入门的输出值。将输出值写回到数据缓存单元4中,并将R1寄存器置为非0。
用计算输入门输出相同的方法计算出忘记门、输出门以及待选状态单元的输出值,将对应的输出值写回到数据缓存单元4中,并将R2、R3、R4寄存器置为非0。
根据数据处理模块子模块51的控制命令执行空操作或进行更新后的状态单元的运算。更新后的状态单元的运算为:从数据缓存单元4中取出忘记门输出值和旧的状态单元,通过向量点乘部件计算的到部分和,然后从数据缓存单元4中取出输入门输出值和待选状态单元,通过向量点乘部件计算的到部分和,和之间的状态单元部分和通过向量加部件得到更新后的状态单元。最终将最后的状态单元写回到数据缓存单元4中。
根据数据处理模块子模块51的控制命令执行空操作或LSTM网络输出值的运算。输出值的运算为:将更新后的状态单元利用向量非线性函数变化部件计算状态单元的非线性变换值,然后将R5置为非0。然后,利用向量点乘部件将输出门和状态单元的非线性变换值进行点乘运算,计算出最终的输出值即为LSTM网络对应的神经元的输出值。将输出值写回到数据缓存单元4中。
图3示出了根据本发明实施例提供的用于执行LSTM网络运算的流程图。
在步骤S1中,在指令缓存单元2的首地址处预先存入一条IO指令。
在步骤S2中,控制器单元3从指令缓存单元2的首地址读取该条IO指令,根据译出的微指令,直接内存访问单元1从外部地址空间读取所有与LSTM网络计算有关的所有指令,并将其缓存入指令缓存单元2中。
在步骤S3中,控制器单元3从指令缓存单元2读入一条IO指令,根据译出的微指令,直接内存访问单元1从外部指定地址空间读取LSTM网络运算相关的权值、偏置,包括输入门、输出门、忘记门以及待选状态单元的权值和偏置,根据权值对应的神经元的不同,将权值、偏置分割后分别读入到不同的数据缓存模块4中。
在步骤S4中,控制器单元3从指令缓存单元2读入一条状态单元初始化指令,根据译出的微指令,将数据缓存模块4中的状态单元值进行初始化将输入门部分和、输出门部分和、忘记门部分和、待选状态单元部分和置为对应的神经元偏置值。
在步骤S5中,控制器单元3从指令缓存单元2读入一条IO指令,根据译出的微指令,直接内存访问单元1从外部指定地址空间读取输入值到数据缓存单元4中,每个数据缓存单元4中都收到一份相同的输入值向量。
在步骤S6中,控制器单元3从指令缓存单元2读入一条数据处理指令,根据译出的微指令,数据处理模块5从对应的数据缓存单元4中获取运算所需相关数据进行运算,运算得到的结果为一个时间点对应的部分神经元的输出值,所有的数据处理模块5处理得到的输出值合并后对应一个时间点的输出值,对于详细的处理过程详见图4。处理结束后,数据处理模块5将处理得到的中间值或输出值以及状态单元值存储到数据缓存单元4中。
在步骤S7中,控制器单元3从指令缓存单元2读入一条IO指令,根据译出的微指令,数据缓存单元4中输出值进行拼接通过直接内存访问单元1输出到外部指定地址。
在步骤S8中,控制器单元3从指令缓存单元2读入一条判别指令,根据译出的微指令,控制器单元3决定本次正向过程是否完成,如果完成,结束运行。如果未完成,转向S6中继续运行。
图4示出了根据本发明一实施例的用于执行LSTM网络运算的方法中数据处理过程的详细流程图。
在步骤S1中,数据处理模块5从数据缓冲单元4读入一部分输入门的权值、输入值。
在步骤S2中,数据处理模块5中数据处理控制子模块51控制数据运算子模块53中的向量点乘部件计算输入门权值、输入值的点乘,然后,根据结果所属的神经元不同进行分组,将组内的点乘结果通过数据运算子模块53中向量求和部件计算得到部分和。
在步骤S3中,数据处理模块5从数据缓冲单元4读入输入门部分。
在步骤S4中,数据处理模块5中数据处理控制子模块51控制数据运算子模块53将计算得到的部分和和刚读入的部分和相加得到更新后的输入门部分和。
在步骤S5中,数据处理模块5将更新后的部分和写入到数据缓存模块4中。
在步骤S6中,数据处理模块5判断是否所有的输入门权值都进行了一次运算,如果是,数据缓存单元中的部分和即为输入门的值,将R1寄存器置为非零,否则,改用不同的输入门权值和输入值中的一部分转S1继续运行。
在步骤S7中,采用与运算方式运算得到忘记门输出值、输出门输出值以及待选状态单元输出值,并置R2、R3、R4为非零,同时将输出值都写回到数据缓存单元4中。
在步骤S8中,数据处理模块5中的数据处理控制子模块51控制数据依赖判别子模块52判断忘记门、输入门以及待选状态单元之间是否完成运算,即判断R1、R2、R4是否均为非零,如果否,数据处理控制子模块51控制数据运算子模块53进行空操作,然后转向S8继续运行,如果是,转S9运行。
在步骤S9中,数据处理模块5从数据缓存单元4中读取旧的状态单元以及忘记门输出值。
在步骤S10中,数据处理模块5中的数据处理控制子模块51控制数据运算子模块53对旧的状态单元以及忘记门输出值用向量点乘部件计算得到部分和。
在步骤S11中,数据处理模块5从数据缓存单元4中读取待选状态单元以及输入门输出值。
在步骤S12中,数据处理模块5中的数据处理控制子模块51控制数据运算子模块53对待选状态单元以及输入门输出值用向量点乘部件计算得到部分和,并将部分和与S10计算得到的部分和通过向量加法部件计算得到更新的状态单元。
在步骤S13中,数据处理模块5将更新的状态单元送回到数据缓存单元4中。
在步骤S14中,数据处理模块5中的数据处即控制子模块51控制数据运算子模块53将更新后的状态单元利用向量非线性变换部件计算得到状态单元的非线性变换函数tanh变换值,并将R5置为非零。
在步骤S15中,数据处理模块5中的数据控制子模块51控制数据依赖判别子模块52判断输出门输出值以及状态单元的非线性变换函数tanh变换值的计算是否完成,即判断R3和R5是否均非零,如果否,数据处理控制子模块51控制数据运算子模块53进行空操作,然后转向S15继续运行,如果是,转S16运行。
在步骤S16中,数据处理模块5从数据缓存单元4中读入输出门的输出。
在步骤S17中,数据处理模块5中的数据处理控制子模块51控制数据运算子模块53将输出门输出值以及状态单元的非线性变换函数tanh变换值通过向量点乘部件计算得到输出值,即为LSTM网络中数据处理模块5对应的神经元中的输出值。
在步骤S18中,数据处理模块5将输出值写入到数据缓存单元4中。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
本发明装置使用专门设计的指令集进行工作,指令译码的效率较高。多个数据处理模块之间并行进行计算,以及多个数据缓存单元之间并行运行不需要数据传输,大幅提高了运算的并行性。另外,将权值和偏置放置在数据缓冲单元中可以减少装置与外部地址空间之间的IO操作,降低内存访问所需的带宽。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (24)

1.一种用于执行LSTM 神经网络运算的装置,其特征在于,包括:
并列设置的多个数据缓存单元,用于对多个数据处理模块进行LSTM 神经网络运算所需的数据、状态和结果进行缓存;并列设置的多个数据处理模块,用于从对应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM 神经网络运算;其中所述多个数据处理模块与所述多个数据缓存单元一一对应,且所述多个数据处理模块之间执行并行运算;
直接内存访问单元,用于从所述用于执行LSTM 神经网络运算的装置外部的地址空间获取指令和LSTM 神经网络运算所需的数据,并将其中的指令和数据分别传输给指令缓存单元和对应的数据缓存单元,以及从数据处理模块或数据缓存单元将运算结果写回到外部的地址空间;
指令缓存单元,用于缓存所述直接内存访问单元从外部的地址空间获取的指令,并输入到控制器单元;
控制器单元,从所述指令缓存单元中读取指令,并将所述指令译码成微指令,用于控制所述直接内存访问单元进行数据IO 操作、数据处理模块进行相关运算和数据缓存单元进行数据缓存和传输;
其中,所述多个数据处理模块通过如下方式进行并行运算:
步骤1,各相应数据缓存单元中写入了从所述直接内存访问单元读取的、对应于所述LSTM 神经网络运算的神经元而被分割的权值和偏置,其中各数据缓存单元中的权值和偏置的数量均相同,且每个数据缓存单元都获取了一份完整的输入数据;每一数据处理模块将各相应数据缓存单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同;每次将一份权值和输入数据送入所述相应数据处理模块中,计算得到第一部分和,再从所述数据缓存单元中取出之前得到的第二部分和,对所述第一部分和和所述第二部分和进行向量加,得到更新后的第二部分和,将所述更新后的第二送回到所述数据缓存单元中,其中所述第二部分和的初始值为偏置值;
步骤2,待各数据缓存单元中的所有输入数据送入到相应数据处理模块处理一次后,得到的第二部分和即为神经元对应的净激活量,相应数据处理模块通过非线性函数tanh 或sigmoid 函数变换所述神经元的净激活量,得到所述神经元的输出值;
步骤3,通过这种方式使用不同的权值和偏置,重复上述步骤1~2,分别计算出LSTM 网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;
步骤4,每个数据处理模块判断当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值送入到数据处理模块,通过向量点乘部件得到第三部分和,送回到数据缓存单元中,然后将待选状态单元和输入门的值送到数据处理模块,通过向量点乘部件得到第四部分和,将数据缓存单元中的所述第三部分和送到数据处理模块中,通过向量求和子模块得到更新后的状态单元,然后,送回到数据缓存单元中,同时,将数据处理模块中的更新后的状态单元通过非线性变换函数tanh 进行变换;每个数据处理模块判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到最终的输出值,将输出值写回到数据缓存单元中;
步骤5,待所有数据处理模块中的输出值写回到数据缓存单元后,将各个数据处理模块中的输出值通过拼接得到最终的输出值,并通过直接内存访问单元送至外部的地址空间处。
2.如权利要求1 所述的装置,其特征在于,所述多个数据处理模块中的每一个均采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件进行所述LSTM神经网络运算。
3.如权利要求2 所述的装置,其特征在于,所述向量非线性函数转换部件通过查表方法进行函数运算。
4.如权利要求2 所述的装置,其特征在于,每一个所述数据处理模块通过分别计算出LSTM 神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值来进行所述LSTM 神经网络运算的向量运算,再由各所述向量值得到每一个所述数据处理模块的输出值,最后将各所述数据处理模块的输出值拼接得到最终的输出值。
5.权利要求1 所述的装置,其特征在于,步骤3 中,在同一个数据处理模块中,计算部分和的过程采用的是向量运算指令,数据间采用并行运算。
6.如权利要求1 所述的装置,其特征在于,每一个所述数据处理模块包括数据处理控制子模块、数据依赖判别子模块及数据运算子模块;其中:
数据处理控制子模块控制数据运算子模块所进行的运算;
控制数据依赖判别子模块对当前的运算是否存在数据依赖进行判断;
对于部分运算,数据处理控制子模块控制数据运算子模块所进行的运算;而对于存在数据依赖关系的运算,数据处理控制子模块首先会控制数据依赖判别子模块对当前的运算是否存在数据依赖进行判断,如果存在数据依
赖关系,数据处理控制子模块会使数据运算子模块中插入空操作,等到数
据依赖关系解除之后,再控制数据运算子模块进行数据运算;
数据依赖判别子模块受数据处理控制子模块控制,检查数据运算子模块中是否存在数据依赖关系;如果下次进行的操作需要用到当前尚未运算完成的值,则说明当前存在数据依赖,否则,则不存在数据依赖;
数据运算子模块受数据处理模块子模块的控制,用以完成LSTM 神经网络运算过程中的数据处理。
7.如权利要求6所述的装置,其特征在于,所述数据依赖判别子模块进行数据依赖检测的步骤包括:
在数据运算子模块中存在五个寄存器Rl、R2、R3、R4、R5,分别用
来标记输入门、忘记门、输出门、待选状态单元以及更新后的状态单元的tanh函数转换运算是否完成,寄存器的值非0 表示运算完成,为0表示尚未完成;对应LSTM网络,数据依赖判别子模块会判断两次数据依赖,分别为计算新的状态单元时判断输入门、输出门以及待选状态单元之间是否存在数据依赖和计算输出值时判断输出门与更新后的状态单元的tanh函数转换是否存在数据依赖,分别判断R1、R3、R4是否都非0和R2、R是否都非0。
8.如权利要求1 所述的装置,其特征在于,所述直接内存访问单元、指令缓存单元、控制器单元,以及所述多个数据缓存单元和多个数据处理模块均通过硬件电路实现。
9.如权利要求1 所述的装置,其特征在于,所述多个数据缓存单元在整个LSTM 神经网络运算过程中只从所述多个数据处理单元和多个数据缓存单元外部导入一次权值和偏置,之后不再改变。
10.一种用于执行LSTM 神经网络运算的装置,其特征在于,包括:
存储器;所述存储器用于对处理器计算的中间结果进行缓存;
处理器,所述处理器执行如下操作:
步骤1,从外部指定地址空间读取用于LSTM 神经网络运算的权值和
偏置,并将其分割成与所述LSTM神经网络运算的神经元对应的多个部分
后存储到所述存储器的不同空间中,其中每个空间中的权值和偏置的数量
相同;并从外部指定地址空间读取用于LSTM神经网络运算的输入数据并
将其存储在所述存储器的每一个所述不同空间中;其中,所述权值和偏置仅从外部指定地址空间读取一次,之后不再改变;
步骤2 ,将所述存储器的每一个所述不同空间中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的向量运算单元运算的数量相同;每次将一份权值和输入数据计算得到第一部分和,再与之前得到的第二部分和进行向量加,得到更新后的第二部分和,其中所述第二部分和的初始值为偏置值;
步骤3 ,待所述存储器的每一个所述不同空间中的所有输入数据均进行了处理之后,得到的第二部分和即为神经元对应的净激活量,通过非线性函数tanh 或sigmoid 函数变换所述神经元的净激活量,得到所述神经元的输出值;
步骤4 ,通过这种方式使用不同的权值和偏置,重复上述步骤1~3,
分别计算出LSTM神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;其中,计算所述更新后的第二部分和的过程采用的是向量运算指令,所述存储器的每一个所述不同空间中的输入数据采用并行运算方式进行计算;
步骤5 ,判断所述存储器的每一个所述不同空间中的当前忘记门、输
入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值通过向量点乘部件得到第三部分和,然后将待选状态单元和输入门的值通过向量点乘部件得到第四部分和,将所述第三部分和与所述第四部分和两个部分和通过向量求和子模块得到更新后的状态单元,同时,将更新后的状态单元通过非线性变换函数tanh进行变换;判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到所述存储器的每一个所述不同空间的最终输出值;
步骤6 ,将各个所述存储器的每一个所述不同空间的最终输出值通过拼接得到最终的输出值。
11.一种应用于如权利要求1-9任一项所述的用于执行LSTM神经网络运算的装置中的执行LSTM神经网络运算的方法,其特征在于,包括:
步骤S l,在指令缓存单元的首地址处预先存入一条IO指令;
步骤S2,控制器单元从指令缓存单元的首地址读取该条IO 指令,根据译出的微指令,直接内存访问单元从外部地址空间读取所有与LSTM 神经网络计算有关的所有指令,并将其缓存入指令缓存单元中;
步骤S3,控制器单元从指令缓存单元读入一条IO指令,根据译出的微指令,直接内存访问单元从外部指定地址空间读取LSTM 神经网络运算相关的权值和偏置,并将其写入到多个并行设置的数据缓存单元中,对各数据缓存单元的状态单元进行初始化;
步骤S4,控制器单元从指令缓存单元读入一条状态单元初始化指令,根据译出的微指令,将数据缓存模块中的状态单元值进行初始化;
步骤S5,控制器单元从指令缓存单元读入一条IO指令,根据译出的微指令,直接内存访问单元从外部指定地址空间读取输入值到数据缓存单元中;
步骤S6,控制器单元从指令缓存单元读入一条数据处理指令,根据译出的微指令,每一个数据处理模块从对应的数据缓存单元中获取LSTM 神经网络运算所需相关数据进行运算,所有的数据处理模块处理得到的输出值合并后对应一个时间点的输出值,处理结束后,数据处理模块将处理得到的中间值或输出值以及状态单元值存储到数据缓存单元中;其中,每一个所述数据处理模块通过分别计算出LSTM神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值来进行所述LSTM 神经网络运算的向量运算,再由各所述向量值得到每一个所述数据处理模块的输出值,最后将各所述数据处理模块的输出值拼接得到最终的输出值;
步骤S7,控制器单元从指令缓存单元读入一条IO指令,根据译出的微指令,数据缓存单元中输出值进行拼接通过直接内存访问单元输出到外部指定地址。
12.如权利要求11 所述的方法,其特征在于,所述多个数据处理模块中的每一个均采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件进行所述LSTM神经网络运算。
13.如权利要求12所述的方法,其特征在于,所述向量非线性函数转换部件通过查表方法进行函数运算。
14.如权利要求11所述的方法,其特征在于,步骤S6 中,所述多个数据处理模块通过如下方式进行并行运算:
子步骤1,各相应数据缓存单元中写入了从直接内存访问单元读取的、对应于所述LSTM神经网络运算的神经元而被分割的权值和偏置,其中各数据缓存单元中的权值和偏置的数量均相同,且每个数据缓存单元都获取了一份完整的输入数据;每一数据处理模块将各相应数据缓存单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同;每次将一份权值和输入数据送入所述相应数据处理模块中,计算得到第一部分和,再从所述数据缓存单元中取出之前得到的第二部分和,对所述第一部分和和所述第二部分和进行向量加,得到更新后的第二部分和,将所述更新后的第二部分和送回到所述数据缓存单元中,其中所述第二部分和的初始值为偏置值;
子步骤2,待各数据缓存单元中的所有输入数据送入到相应数据处理模块处理一次后,得到的第二部分和即为神经元对应的净激活量,相应数据处理模块通过非线性函数tanh或sigmoid 函数变换所述神经元的净激活量,得到所述神经元的输出值;
子步骤3,通过这种方式使用不同的权值和偏置,重复上述步骤1~2 ,分别计算出LSTM网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;
子步骤4,每个数据处理模块判断当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值送入到数据处理模块,通过向量点乘部件得到第三部分和,送回到数据缓存单元中,然后将待选状态单元和输入门的值送到数据处理模块,通过向量点乘部件得到第四部分和,将数据缓存单元中的所述第三部分和送到数据处理模块中,通过向量求和子模块得到更新后的状态单元,然后,送回到数据缓存单元中,同时,将数据处理模块中的更新后的状态单元通过非线性变换函数tanh 进行变换;每个数据处理模块判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到最终的输出值,将输出值写回到数据缓存单元中;
子步骤5,待所有数据处理模块中的输出值写回到数据缓存单元后,将各个数据处理模块中的输出值通过拼接得到最终的输出值,并通过直接内存访问单元送至外部指定地址处。
15.如权利要求14 所述的方法,其特征在于,每一个所述数据处理模块包括数据处理控制子模块、数据依赖判别子模块及数据运算子模块;其中:
数据处理控制子模块控制数据运算子模块所进行的运算;
控制数据依赖判别子模块对当前的运算是否存在数据依赖进行判断;
对于部分运算,数据处理控制子模块控制数据运算子模块所进行的运算;
而对于存在数据依赖关系的运算,数据处理控制子模块首先会控制数据依赖判别子模块对当前的运算是否存在数据依赖进行判断,如果存在数据依赖关系,数据处理控制子模块会使数据运算子模块中插入空操作,等到数据依赖关系解除之后,再控制数据运算子模块进行数据运算;
数据依赖判别子模块受数据处理控制子模块控制,检查数据运算子模块中是否存在数据依赖关系;如果下次进行的操作需要用到当前尚未运算完成的值,则说明当前存在数据依赖,否则,则不存在数据依赖;
数据运算子模块受数据处理模块子模块的控制,用以完成LSTM 神经网络运算过程中的数据处理。
16.如权利要求15所述的方法,其特征在于,所述数据依赖判别子模块进行数据依赖检测的步骤包括:
在数据运算子模块中存在五个寄存器R1、R2、R3、R4、R5,分别用来标记输入门、忘记门、输出门、待选状态单元以及更新后的状态单元的tanh函数转换运算是否完成,寄存器的值非0 表示运算完成,为0表示尚未完成;对应LSTM网络,数据依赖判别子模块会判断两次数据依赖,分别为计算新的状态单元时判断输入门、输出门以及待选状态单元之间是否存在数据依赖和计算输出值时判断输出门与更新后的状态单元的tanh函数转换是否存在数据依赖,分别判断R1、R3、R4是否都非0和R2、R
是否都非0。
17.如权利要求11所述的方法,其特征在于,所述直接内存访问单元只从外部指定地址空间导入一次权值和偏置。
18.如权利要求11所述的方法,其特征在于,步骤S3 中,控制器单元控制将所述直接内存访问单元从外部指定地址空间导入的权值和偏置对应于所述LSTM神经网络运算的神经元进行分剖,得到的权值和偏置再分别写入每一个所述数据缓存单元中,其中各数据缓存单元中的权值和偏置的数量均相同,且每个数据缓存单元都获取了一份完整的输入数据。
19.如权利要求11 所述的方法,其特征在于,所述直接内存访问单元、指令缓存单元、控制器单元,以及所述多个数据缓存单元和多个数据处理模块均通过硬件电路实现。
20.如权利要求11所述的方法,其特征在于,所述方法还包括:
步骤S8 ,控制器单元从指令缓存单元读入一条判别指令,根据译出的微指令,控制器单元决定本次正向过程是否完成,如果完成,结束运行;
如果未完成,转向步骤S6 中继续运行。
21.一种应用于如权利要求1-9任一项所述的用于执行LSTM神经网络运算的装置中的LSTM 神经网络的运算方法,其特征在于,包括以下步骤:
步骤Sl,从外部指定地址空间读取用于LSTM神经网络运算的权值和偏置,并将其写入到多个并行设置的数据缓存单元,对各数据缓存单元的状态单元进行初始化;其中,从外部指定地址空间读取的权值和偏置对应于所述LSTM神经网络运算的神经元而被分割送入0到各相应数据缓存单元,各数据缓存单元中的权值和偏置的数量分别相同;
步骤S2,从外部指定地址空间读取输入数据,并将其写入到所述多个数据缓存单元,其中每一个所述数据缓存单元中写入的输入数据均为完整
的;
步骤S3,与所述多个并行设置的数据缓存单元一一对应的多个数据处理模块分别从对应的数据缓存单元中读取所述权值、偏置和输入数据,并采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件对其进行LSTM 神经网络运算,分别得到每一个数据处理模块的输出值;
步骤S4 ,将各个数据处理模块的输出值通过拼接得到最终的输出值,即所述LSTM 神经网络运算的最终结果。
22.如权利要求21 所述的方法,其特征在于,所述步骤S3 中,每一个数据处理模块分别将对应数据缓存单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同;每一数据缓存单元每次将一份权值和输入数据送入与其对应的数据处理模块中,计算得到第一部分和,再从所述数据缓存单元中取出之前得到的第二部分和,对所述第一部分和和所述第二部分和进行向量加,得到更新后的第二部分和,将所述更新后的第二部分和送回到所述数据缓存单元中,其中所述第二部分和的初始值为偏置值;
待所有输入数据送入到数据处理模块一次后,得到的第二部分和即为神经元对应的净激活量,然后将神经元的净激活量送入到数据处理模块中,通过数据运算子模块中的非线性函数tanh 或sigmoid函数变换得到神经元的输出值,通过这种方式使用不同的权值和偏置,分别计算出LSTM神经网络中的忘记门、输入门、输出门以及待选状态单元的向量值;
每个数据处理模块判断当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值送入到数据处理模块,通过向量点乘部件得到第三部分和,送回到数据缓存单元中,然后将待选状态单元和输入门的值送到数据处理模块,通过向量点乘部件得到第四部分和,将数据缓存单元中的所述第三部分和送到数据处理模块中,通过向量求和子模块得到更新后的状态单元,然后,送回到数据缓存单元中,同时,将数据处理模块中的更新后的状态单元通过非线性变换函数tanh进行变换;每个数据处理模块判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到最终的输出值,将输出值写回到数据缓存单元中。
23.如权利要求22 所述的方法,其特征在于,所述非线性函数tanh或sigmoid 函数通过查表方法进行函数运算。
24.一种应用于如权利要求1-9任一项所述的用于执行LSTM神经网络运算的装置中的执行LSTM 神经网络运算的方法,其特征在于,包括:
步骤S1,数据处理模块从数据缓存单元读入一部分输入门的权值、输入值;
步骤S2,数据处理模块中数据处理控制子模块控制数据运算子模块中的向量点乘部件计算输入门权值、输入值的点乘,然后,根据结果所属的神经元不同进行分组,将组内的点乘结果通过数据运算子模块中向量求和部件计算得到第五部分和;
步骤S3,数据处理模块从数据缓存单元读入输入门部分;
步骤S4,数据处理模块中数据处理控制子模块控制数据运算子模块将计算得到的所述第五部分和和刚读入的所述输入门部分和相加得到更新后的输入门部分和;
步骤S5,数据处理模块将更新后的所述输入门部分和写入到数据缓存模块中;
步骤S6,数据处理模块判断是否所有的输入门权值都进行了一次运算,如果是,数据缓存单元中的所述输入门部分和即为输入门的值,将R1寄存器置为非零,否则,改用不同的输入门权值和输入值中的一部分转S1继续运行;
步骤S7,采用与运算方式得到忘记门输出值、输出门输出值以及待选状态单元输出值,并置R2、R3、R4寄存器为非零,同时将输出值都写回到数据缓存单元中;
步骤S8,数据处理模块中的数据处理控制子模块控制数据以来判别子模块判断忘记门、输入门以及待选状态单元之间是否完成运算,即判断R1、R2、R4寄存器是否均为非零,如果否,数据处理控制子模块控制数据运算子模块进行空操作,然后转向S8继续运行,如果是,转S9运行;
步骤S9,数据处理模块从数据缓存单元中读取旧的状态单元以及忘记门输出值;
步骤S10,数据处理模块中的数据处理控制子模块控制数据运算子模块对旧的状态单元以及忘记门输出值用向量点乘部件计算得到第六部分和;
步骤S11,数据处理模块从数据缓存单元中读取待选状态单元以及输入门输出值;
步骤S12,数据处理模块中的数据处理控制子模块控制数据运算子模块对待选状态单元以及输入门输出值用向量点乘部件计算得到第七部分和,并将所述第七部分和与S10计算得到的所述第六部分和通过向量加法部件计算得到更新的状态单元;
步骤S13,数据处理模块将更新的状态单元送回到数据缓存单元中;
步骤S14,数据处理模块中的数据出库控制子模块控制数据运算子模块将更新后的状态单元利用向量非线性变换部件计算得到状态单元的非线性变换函数tanh变换值,并将R5寄存器置为非零;
步骤S15,数据处理模块中的数据控制子模块控制数据依赖判别子模块判断输出门输出值以及状态单元的非线性变换函数tanh变换值得计算是否完成,即判断R3和R5寄存器是否均非零,如果否,数据处理控制子模块控制数据运算子模块进行空操作,然后转向S15继续运行,如果是,转向S16运行;
步骤S16,数据处理模块从数据缓存单元中读入输出门的输出;
步骤S17,数据处理模块中的数据控制子模块控制数据运算子模块将输出门输出值以及状态单元的非线性变换函数tanh变换值通过向量点乘部件计算得到输出值,即为LSTM网络中数据处理模块对应的神经元中的输出值;
步骤S18,数据处理模块将输出值写入到数据缓存单元中。
CN201611269665.8A 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法 Active CN108268939B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202010018716.XA CN111260025B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN201611269665.8A CN108268939B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN202110708810.2A CN113537480B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN202110713121.0A CN113537481B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
US16/459,549 US10853722B2 (en) 2016-12-30 2019-07-01 Apparatus for executing LSTM neural network operation, and operational method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611269665.8A CN108268939B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法

Related Child Applications (3)

Application Number Title Priority Date Filing Date
CN202110708810.2A Division CN113537480B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN202010018716.XA Division CN111260025B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN202110713121.0A Division CN113537481B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法

Publications (2)

Publication Number Publication Date
CN108268939A CN108268939A (zh) 2018-07-10
CN108268939B true CN108268939B (zh) 2021-09-07

Family

ID=62771289

Family Applications (4)

Application Number Title Priority Date Filing Date
CN202010018716.XA Active CN111260025B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN202110713121.0A Active CN113537481B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN201611269665.8A Active CN108268939B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN202110708810.2A Active CN113537480B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN202010018716.XA Active CN111260025B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法
CN202110713121.0A Active CN113537481B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202110708810.2A Active CN113537480B (zh) 2016-12-30 2016-12-30 用于执行lstm神经网络运算的装置和运算方法

Country Status (1)

Country Link
CN (4) CN111260025B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727462B (zh) * 2018-07-16 2021-10-19 上海寒武纪信息科技有限公司 数据处理器和数据处理方法
WO2020061870A1 (zh) * 2018-09-27 2020-04-02 深圳大学 Lstm的端到端单导联心电图分类方法
CN109543832B (zh) * 2018-11-27 2020-03-20 中科寒武纪科技股份有限公司 一种计算装置及板卡
CN111258636B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
US11494645B2 (en) * 2018-12-06 2022-11-08 Egis Technology Inc. Convolutional neural network processor and data processing method thereof
WO2020125092A1 (zh) * 2018-12-20 2020-06-25 中科寒武纪科技股份有限公司 计算装置及板卡
CN109670581B (zh) * 2018-12-21 2023-05-23 中科寒武纪科技股份有限公司 一种计算装置及板卡
US11042797B2 (en) 2019-01-08 2021-06-22 SimpleMachines Inc. Accelerating parallel processing of data in a recurrent neural network
CN110009100B (zh) * 2019-03-28 2021-01-05 安徽寒武纪信息科技有限公司 自定义算子的计算方法及相关产品
CN110020720B (zh) * 2019-04-01 2021-05-11 中科寒武纪科技股份有限公司 算子拼接方法及装置
CN112346781A (zh) * 2019-08-07 2021-02-09 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN110347506B (zh) * 2019-06-28 2023-01-06 Oppo广东移动通信有限公司 基于lstm的数据处理方法、装置、存储介质与电子设备
CN111652361B (zh) * 2020-06-04 2023-09-26 南京博芯电子技术有限公司 长短时记忆网络的复合粒度近存储近似加速结构系统和方法
CN112948126A (zh) * 2021-03-29 2021-06-11 维沃移动通信有限公司 数据处理方法、装置及芯片

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0296861A (ja) * 1988-10-03 1990-04-09 Mitsubishi Electric Corp マイクロプロセッサ周辺機能回路装置
JPH03162800A (ja) * 1989-08-29 1991-07-12 Mitsubishi Electric Corp 半導体メモリ装置
JP2001034597A (ja) * 1999-07-22 2001-02-09 Fujitsu Ltd キャッシュメモリ装置
JP2001188767A (ja) * 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法
WO2001069424A2 (en) * 2000-03-10 2001-09-20 Jaber Associates, L.L.C. Parallel multiprocessing for the fast fourier transform with pipeline architecture
JP2008097572A (ja) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器
CN101197017A (zh) * 2007-12-24 2008-06-11 深圳市物证检验鉴定中心 公安刑事技术检验鉴定信息系统及其方法
CN102004446A (zh) * 2010-11-25 2011-04-06 福建师范大学 具有多层结构的bp神经元自适应方法
CN104303162B (zh) * 2012-01-12 2018-03-27 桑迪士克科技有限责任公司 用于管理缓存接纳的系统和方法
CN103150596B (zh) * 2013-02-22 2015-12-23 百度在线网络技术(北京)有限公司 一种反向传播神经网络dnn的训练系统
JP6115455B2 (ja) * 2013-11-29 2017-04-19 富士通株式会社 並列計算機システム、並列計算機システムの制御方法、情報処理装置、演算処理装置および通信制御装置
US20150269481A1 (en) * 2014-03-24 2015-09-24 Qualcomm Incorporated Differential encoding in neural networks
US20160034812A1 (en) * 2014-07-31 2016-02-04 Qualcomm Incorporated Long short-term memory using a spiking neural network
JP6453681B2 (ja) * 2015-03-18 2019-01-16 株式会社東芝 演算装置、演算方法およびプログラム
US10140572B2 (en) * 2015-06-25 2018-11-27 Microsoft Technology Licensing, Llc Memory bandwidth management for deep learning applications
US20160379109A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
CN105095961B (zh) * 2015-07-16 2017-09-29 清华大学 一种人工神经网络和脉冲神经网络的混合系统
CN105184366B (zh) * 2015-09-15 2018-01-09 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105513591B (zh) * 2015-12-21 2019-09-03 百度在线网络技术(北京)有限公司 用lstm循环神经网络模型进行语音识别的方法和装置
CN107609642B (zh) * 2016-01-20 2021-08-31 中科寒武纪科技股份有限公司 计算装置和方法
CN106022468B (zh) * 2016-05-17 2018-06-01 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法
CN105893159B (zh) * 2016-06-21 2018-06-19 北京百度网讯科技有限公司 数据处理方法和装置
CN106203621B (zh) * 2016-07-11 2019-04-30 北京深鉴智能科技有限公司 用于卷积神经网络计算的处理器

Also Published As

Publication number Publication date
CN113537481A (zh) 2021-10-22
CN111260025B (zh) 2023-11-14
CN111260025A (zh) 2020-06-09
CN108268939A (zh) 2018-07-10
CN113537481B (zh) 2024-04-02
CN113537480A (zh) 2021-10-22
CN113537480B (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
CN108268939B (zh) 用于执行lstm神经网络运算的装置和运算方法
CN111860812B (zh) 一种用于执行卷积神经网络训练的装置和方法
KR102470264B1 (ko) 완전연결층 신경망 역방향 트레이닝 실행용 장치와 방법
CN110929863B (zh) 用于执行lstm运算的装置和方法
WO2018120016A1 (zh) 用于执行lstm神经网络运算的装置和运算方法
CN107832843B (zh) 一种信息处理方法及相关产品
US11531540B2 (en) Processing apparatus and processing method with dynamically configurable operation bit width
CN111353588B (zh) 用于执行人工神经网络反向训练的装置和方法
CN107704267B (zh) 一种卷积神经网络运算指令及其方法
US10853722B2 (en) Apparatus for executing LSTM neural network operation, and operational method
WO2017185347A1 (zh) 用于执行循环神经网络和lstm运算的装置和方法
CN111353589B (zh) 用于执行人工神经网络正向运算的装置和方法
EP3451238A1 (en) Apparatus and method for executing pooling operation
CN107886166B (zh) 一种执行人工神经网络运算的装置和方法
CN111651205B (zh) 一种用于执行向量内积运算的装置和方法
CN108171328B (zh) 一种神经网络处理器和采用其执行的卷积运算方法
CN111651203A (zh) 一种用于执行向量四则运算的装置和方法
WO2017185248A1 (zh) 用于执行人工神经网络自学习运算的装置和方法
WO2018058452A1 (zh) 一种执行人工神经网络运算的装置和方法
WO2017185335A1 (zh) 一种用于执行batch normalization运算的装置和方法
WO2017177446A1 (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
CN111860772B (zh) 一种用于执行人工神经网络pooling运算的装置和方法
CN109993276B (zh) 用于执行人工神经网络反向训练的装置和方法
JP2016157233A (ja) Lvqニューラルネットワーク

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