CN107341542A - 用于执行循环神经网络和lstm运算的装置和方法 - Google Patents
用于执行循环神经网络和lstm运算的装置和方法 Download PDFInfo
- Publication number
- CN107341542A CN107341542A CN201610285178.4A CN201610285178A CN107341542A CN 107341542 A CN107341542 A CN 107341542A CN 201610285178 A CN201610285178 A CN 201610285178A CN 107341542 A CN107341542 A CN 107341542A
- Authority
- CN
- China
- Prior art keywords
- mrow
- msubsup
- munderover
- msub
- computing module
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 64
- 230000000306 recurrent effect Effects 0.000 title claims abstract description 51
- 238000000034 method Methods 0.000 title claims abstract description 46
- 210000002569 neuron Anatomy 0.000 claims abstract description 39
- 230000004913 activation Effects 0.000 claims abstract description 17
- 230000003213 activating effect Effects 0.000 claims abstract description 6
- 210000004027 cell Anatomy 0.000 claims description 57
- 239000013598 vector Substances 0.000 claims description 45
- 210000002364 input neuron Anatomy 0.000 claims description 9
- 210000005036 nerve Anatomy 0.000 claims description 5
- 230000006399 behavior Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000010977 unit operation Methods 0.000 claims 2
- 230000007812 deficiency Effects 0.000 abstract 1
- 210000004205 output neuron Anatomy 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000007935 neutral effect Effects 0.000 description 4
- 230000020411 cell activation Effects 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 101100283966 Pectobacterium carotovorum subsp. carotovorum outN gene Proteins 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 235000019504 cigarettes Nutrition 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000004209 hair Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 238000005406 washing 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提出一种用于执行循环神经网络和LSTM的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块以及多个从运算模块。所述从运算模块用于将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入将结果返回给主运算模块;主运算模块用于在正向过程时对从运算模块返回的和进行插值激活,在反向过程时插值得到激活导数并且与梯度相乘。本发明能够解决CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络正向运算的支持。
Description
技术领域
本发明人工神经网络技术领域,具体涉及循环神经网络(RNN)和LSTM,特别是一种用于执行循环神经网络和LSTM的装置和方法。
背景技术
循环神经网络和LSTM被广泛应用于语音识别,语言建模,翻译,图片描述等领域,近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
一种支持循环神经网络和LSTM的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的循环神经网络和LSTM运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把循环神经网络和LSTM的反向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销
另一种支持循环神经网络和LSTM的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,循环神经网络和LSTM的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上缓存,循环神经网络和LSTM的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
发明内容
本发明的一个方面提供了一种用于执行循环神经网络和LSTM的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:指令存储单元用于缓存指令;控制器单元用于从指令存储单元读取指令,并将该指令译码成控制互连模块、主运算模块、以及从运算模块行为的微指令;数据访问单元用于从内存向主运算模块和各从运算模块的相应数据存储单元中写数据或从所述数据存储单元向内存读数据;互连模块用于,在每层神经网络反向训练开始计算的阶段,主运算模块通过互连模块向所有的从运算模块传输本层的输入梯度向量,在从计算模块的计算过程完成后,互连模块逐级将各从计算模块的输出梯度向量部分和两两相加得到本层的输出梯度向量;从运算模块用于将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入将结果返回给主运算模块;主运算模块用于在正向过程时对从运算模块返回的和进行插值激活,在反向过程时插值得到激活导数并且与梯度相乘。
本发明还提供了一种使用上述装置执行循环神经网络和LSTM运算的方法。
该装置可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置的整体结构的示例框图;
图2示意性示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置中互连模块的结构;
图3示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置中主运算模块结构的示例框图;
图4示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置中从运算模块结构的示例框图;
图5示出了根据本发明实施例的循环神经网络和LSTM正反向过程的示例框图;
图6示出了利用本发明的执行循环神经网络和LSTM的装置的运算的过程;
图7是循环神经网络的结构;
图8是LSTM算法的一个block的结构;
图9示出了本发明的循环神经网络和LSTM单层的流程图;
图10示出了本发明的循环神经网络和LSTM的单层运算的梯度反向传递流程图。
具体实施方式
图1示出了本发明实施例的用于执行循环神经网络和LSTM运算的装置的整体结构示意图。如图1所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器)实现。
指令存储单元1通过数据访问单元3读入指令并缓存读入的指令。指令存储单元1可以通过各种不同存储器件(SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等)实现。
控制器单元2从指令存储单元1中读取指令,将指令译码成控制其他单元或模块行为的微指令,并发送给所述单元或模块,例如数据访问单元3、主运算模块5和从运算模块6等。
数据访问单元3用于访存外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。
述互连模块用于将所述主运算模块的输入向量分发给所述多个从运算模块,以及将各从运算模块的计算结果合并后返回给主运算模块。图2示意性示出了互连模块的结构的一种实施方式的结构示意图。互连模块4构成主运算模块5和多个从运算模块6之间的数据通路,在该实施例中具有H树型的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。
以典型的循环神经网络和LSTM的计算out=∑w×in_data为例,主运算模块5内的神经元数据通过互连模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,每个从运算模块输出的神经元数据的值会在H树中逐级拼成一个完整的由神经元数据组成的向量,作为中间结果向量。假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过互连模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。
在本发明中,主运算模块在正向对从运算模块返回的和进行插值激活,在反向插值得到激活导数并且与梯度相乘。
在本发明中,从运算模块用于将输入数据进行乘加得到部分和并保存,直到神经元全都输入将结果返回给主运算模块。
图3示出了根据本发明用于执行循环神经网络和LSTM运算的装置中主运算模块5的结构的示例框图。如图3所示,主运算模块5包括运算单元51、数据依赖关系判断单元52和神经元存储单元53。
神经元存储单元53用于缓存主运算模块5在计算过程中用到的输入神经元数据和输出神经元数据。运算单元51完成主运算模块的各种运算功能。数据依赖关系判断单元52是运算单元51读写神经元存储单元53的端口,同时能够保证对神经元存储单元53中数据的读写不存在一致性冲突。
具体地,数据依赖关系判断单元52判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。例如,所有发往数据依赖关系单元52的微指令都会被存入数据依赖关系单元52内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。同时,数据依赖关系判断单元52也负责从神经元存储单元53读取输入梯度向量通过互连模块4发送给从运算模块6,而从运算模块6的输出数据通过互连模块4直接发送给运算单元51。控制器单元2输出的指令发送给运算单元51和依赖关系判断单元52,来控制其行为。
图4示出了根据本发明的用于执行循环神经网络和LSTM的装置的从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括运算单元61、数据依赖关系判定单元62、神经元存储单元63、权值存储单元64和权值梯度存储单元65。
运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。
数据依赖关系判断单元62负责计算过程中对存储单元的读写操作。数据依赖关系判断单元62保证对存储单元的读写不存在一致性冲突。具体地,数据依赖关系判断单元62判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。例如,所有发往数据依赖关系单元62的微指令都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
神经元存储单元63缓存输入向量数据中与该从运算模块6相对应的标量数据以及该从运算模块6计算得到的输出向量部分和。
权值缓存单元64缓存该从运算模块6在计算过程中需要的权值数据。对于每一个从运算模块,都只会存储权值矩阵中与该从运算模块6所存储的标量数据相对应的列。
权值梯度缓存单元65缓存相应从运算模块在更新权值过程中需要的权值梯度数据。每一个从运算模块6存储的权值梯度数据与其存储的权值梯度数据相对应。
从运算模块6实现循环神经网络和LSTM的输出梯度向量的过程中可以并行的前半部分以及权值的更新。
以out=∑w×in_data为例,其中权值矩阵w和输入梯度向量in_data的乘法可以划分为不相关的并行计算子任务,out与in_data是列向量,每个从运算模块只计算in_data中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在H树中逐级两两相加得到最后的结果。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出输出向量的部分和,所有的部分和在互连模块4中完成求和运算得到最后的输出向量。每个从运算模块6同时将输入向量和正向运算时每层的输出值相乘,计算出权值,以更新本从运算模块6存储的权值。正向运算和反向训练是神经网络算法的两个主要过程,神经网络要训练(更新)网络中的权值,首先需要计算输入向量在当前权值构成的网络中的正向输出,这是正向过程,然后根据输出值与输入向量本身的标注值之间的差值,反向逐层训练(更新)每层的权值。在正向计算过程中会保存每一层的输出向量以及激活函数的导数值,这些数据是反向训练过程所需要的,所以在反向训练开始时,这些数据已经保证存在。正向运算中每层的输出值是反向运算开始时已有的数据,可以通过数据访存单元缓存在主运算模块中并通过H树发送给从运算模块。主运算模块5基于输出梯度向量进行后续计算,例如将输出梯度向量乘以正向运算时的激活函数的导数得到下一层的输入梯度值。正向运算时的激活函数的导数是在反向运算开始时已有的数据,可以通过数据访存单元缓存在主运算模块中。
根据本发明实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络的算术逻辑计算;
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
图5示出了根据本发明实施例的循环神经网络和LSTM正反向过程的示例框图。在不同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量,该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=∑w×in_data。每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的列向量。互连模块将输入神经元向量[in0,...,inN]发送给所有的从运算单元,暂存在神经元存储单元中。对于第i个从运算单元,计算其相应的权值向量[w_i0,...,w_iN]与输入神经元向量的点积。从运算单元输出的结果经过互连模块拼成完整的输出向量并返回给主运算单元,在主运算单元中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,...,outN]。
图6显示了利用本发明的装置和指令集实现循环神经网络和LSTM运算的过程。
在步骤S1,在指令存储单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令存储单元1的首地址读取该条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取相应的所有人工神经网络运算指令,并将其缓存在指令存储单元1中。
在步骤S3,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算模块5的神经元存储单元53。
在步骤S4,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取从运算模块6需要的权值矩阵数据。
在步骤S5,控制器单元2接着从指令存储单元读入下一条CONFIG指令,根据译出的微指令,装置配置该层神经网络计算需要的各种常数。例如,运算单元51、61根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位)。
在步骤S6,控制器单元2接着从指令存储单元读入下一条COMPUTE指令,根据译出的微指令,主运算模块5首先通过互连模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的神经元存储单元63。
在步骤S7,根据COMPUTE指令译出的微指令,从运算模块6的运算单元61从权值存储单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从神经元存储单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过互连模块返回。
在步骤S8,在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间结果向量。
在步骤S9,主运算模块5得到互连模块4的返回值,根据COMPUTE指令译出的微指令,从神经元存储单元53读取偏置向量,与互连模块4返回的向量相加,然后再对相加结果做激活,并将最后的输出神经元向量写回至神经元存储单元53。
在步骤S10,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3将神经元存储单元53中的输出神经元向量存至外部地址空间指定地址,运算结束。
图7是循环神经网络的结构。为了解决传统神经网络在时间上对于以前的输入的依赖,正向运算的时候,循环神经网络的输入来自当前时刻的输入以及上一时刻的隐层输出。公式中I为输入数量,H为隐层数量,K为输出数量。其中是t时刻第h个输出的中间值,是激活后t时刻的第h个输出,表示残差对的偏导数,θ表示激活函数。
正向传播的公式表达为:
反向传播的公式表达:
其中。通过对于上一时刻的隐层和本层输出的连接来达到综合时间序列的作用。但是这样的循环神经网络存在时间衰减的问题。
图8是LSTM算法的一个block的结构。相对于传统循环神经网络,LSTM引入了一个cell来记录当前时间点的信息。可以看出在LSTM算法里,一个block由三个门和一个cell组成,输入门、输出门、忘记门。LSTM算法的主要思想是利用cell来记录当前时间的状态,对上一时刻传入cell值来达到在不同时间直接传递信息的功能。用输入门和忘记门来控制cell的输出里对于当前时间输入和上一时间cell的权重。用输出门来控制cell的输出。在输入门和忘记门的控制下,合适的信息将会被保存很长时间,一直记录在cell里面,这样就解决了循环神经网络随着时间衰减的问题。
图9示出了本发明的循环神经网络和LSTM单层的流程图。
在步骤A1,计算出输入门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存区。最后将他们三个相加并且激活得到输入门值。
在步骤A2,计算出忘记门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存区。最后将他们三个相加并且激活得到忘记门值。
在步骤A3,计算出输入门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算上一时刻隐层与对应权值乘积和都存在缓存区。最后将他们两个个相加并且激活得到单元状态中间值缓存到神经元缓存区。然后让中间值和输入门对应相乘,缓存在运算单元(图7的51)缓存区内,再让上一时刻的单元状态和忘记门对应相乘,在运算单元与上一次缓存对应相加,得到单元状态值。
在步骤A4,计算出输出门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算当前时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存区。最后将他们三个相加并且激活,得到输出门值。
在步骤A5,单元状态和输出门对应相乘得到本层输出。
图10示出了本发明的循环神经网络和LSTM的单层运算的梯度反向传递流程图。
在步骤B1,计算出下一时刻隐层梯度和对应位置的权值相乘相加加上本层残差和对应权值相乘之和,得到本层输出梯度。
在步骤B2,让输出梯度和cell激活值对应乘加,缓存在神经元缓存区最后乘以激活函数导数得到输出门梯度。
在步骤B3将cell的状态梯度由当前输出梯度乘上当前输出门值和状态激活的导数存入神经元,再计算上下一时刻cell的梯度,输入门和忘记门的梯度以及本时刻输出门梯度乘以对应权值都存入神经元缓存,最后相加得到单元状态梯度。cell中间值的梯度由当前时刻输入门激活值,cell激活函数导数以及cell状态梯度相乘得到。
在步骤B4,将当前时刻所有cell的状态梯度对应乘以上一时刻cell状态输出相加最后与忘记门导数相乘得到忘记门的梯度。
在步骤B5,将当前时刻所有cell的状态梯度对应乘以本时刻cell中间值的激活值输出相加最后与输入门导数相乘得到输入门的梯度。
值得一提的是,传统循环神经网络算法应用在此装置上是极大简化了的LSTM算法,计算输出的时候只依赖当前时刻输入和上一时刻输出,正反向表达与LSTM的运行子过程类似,在此不做赘述。
对于一次完整的循环神经网络和LSTM算法,其实现过程与以上典型的计算类似,按照公式取出相应的权值和数据进行加权求和,长时间的时候,下一层的运算指令会将主运算单元中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
通过采用用于执行循环神经网络和LSTM的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络正向运算的支持。
通过采用针对循环神经网络和LSTM的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
Claims (8)
1.一种用于执行循环神经网络和LSTM运算的装置,包括指令存储单元、控制器单元、互连模块、主运算模块和多个从运算模块,其中,
所述指令存储单元通过数据访问单元读入指令并缓存读入的指令;
所述控制器单元从指令存储单元中读取指令,将指令译码成控制其他单元或模块行为的微指令,然后将各自的微指令分发至各个单元或模块;
所述数据访问单元用于访问外部地址空间,完成数据的加载和存储;
所述互连模块用于将所述主运算模块的输入向量分发给所述多个从运算模块,以及将各从运算模块的计算结果合并后返回给主运算模块;
所述从运算模块用于将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入将结果返回给主运算模块;
所述主运算模块用于在正向过程时对从运算模块返回的和进行插值激活,在反向过程时插值得到激活导数并且与梯度相乘。
2.如权利要求1所述的用于执行循环神经网络和LSTM运算的装置,其特征在于,所述主运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元,其中,
所述运算单元用于接收控制器单元发出的微指令并进行算数逻辑运算;
所述数据依赖关系判断单元用于对神经元缓存单元进行读写操作,保证指令之间所用的数据不存在读写一致性冲突;
所述神经元缓存单元用于缓存输入神经元数据和输出神经元数据。
3.如权利要求1所述的用于执行循环神经网络和LSTM运算的装置,其特征在于,所述从运算模块包括运算单元、数据依赖关系判定单元、神经元存储单元、权值存储单元和权值梯度存储单元,
所述运算单元用于接收控制器单元发出的微指令并进行算数逻辑运算;
所述数据依赖关系判断单元用于对神经元缓存单元进行读写操作,保证指令之间所用的数据不存在读写一致性冲突;
所述神经元缓存单元用于缓存输入神经元数据和输出神经元数据。
所述权值缓存单元用于缓存该从运算模块在计算过程中需要的权值数据;
所述权值梯度缓存单元用于缓存相应从运算模块在更新权值过程中需要的权值梯度数据。
4.如权利要求1所述的用于执行循环神经网络和LSTM运算的装置,其特征在于,
在循环神经网络和LSTM运算的正向过程进行以下计算过程:
以下公式中表达参数的含义:
wij表示从单位i到单位j的连接权值,表示t时刻j单位输入门的值,表示t时刻j单位输入门的激活值,下标l,ω,c分别表示输入门,输出门,忘记门和第c个cell。wcl,wcω分别表示当前第c个cell到上一时刻的输入门,输出门,忘记门的连接权值,表达第c个cell在t时刻的状态,f、g、h都是激活函数,I表示输入大小,K表示输出大小,H表示隐层大小,h泛指cell和其他时刻的隐层连接,G表示所有对隐层的输入;
为了简化表达,定义即残差对于第j个cell在t时刻的偏导数,下面的公式都是在一个时刻下的block完成的,其他时刻以此类推;
以下是前向运算的公式表达,计算顺序按照给出公式顺序进行:
输入门:
<mrow>
<msubsup>
<mi>a</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>I</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>il</mi>
</msub>
<msubsup>
<mi>x</mi>
<mi>i</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>H</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>hl</mi>
</msub>
<msubsup>
<mi>b</mi>
<mi>h</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>cl</mi>
</msub>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
<mrow>
<msubsup>
<mi>b</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mi>f</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
忘记门:
Cell:
<mrow>
<msubsup>
<mi>a</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>I</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>ic</mi>
</msub>
<msubsup>
<mi>x</mi>
<mi>i</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>H</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>hc</mi>
</msub>
<msubsup>
<mi>b</mi>
<mi>h</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
Cell状态:
输出门:
<mrow>
<msubsup>
<mi>a</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>I</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>i&omega;</mi>
</msub>
<msubsup>
<mi>x</mi>
<mi>i</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>H</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>h&omega;</mi>
</msub>
<msubsup>
<mi>b</mi>
<mi>h</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>c&omega;</mi>
</msub>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
<mrow>
<msubsup>
<mi>b</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mi>f</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
Cell输出:
<mrow>
<msubsup>
<mi>b</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>b</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mi>h</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mo>.</mo>
</mrow>
5.如权利要求4所述的用于执行循环神经网络和LSTM运算的装置,其特征在于,
在循环神经网络和LSTM运算的单层运算的梯度反向时进行以下计算过程:
反向运算公式表达,计算顺序按照给出公式顺序进行:
定义:
<mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mfrac>
<mrow>
<mo>&PartialD;</mo>
<mi>L</mi>
</mrow>
<mrow>
<mo>&PartialD;</mo>
<msubsup>
<mi>b</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
</mfrac>
<mo>,</mo>
<msubsup>
<mi>&epsiv;</mi>
<mi>s</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mfrac>
<mrow>
<mo>&PartialD;</mo>
<mi>L</mi>
</mrow>
<mrow>
<mo>&PartialD;</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
</mfrac>
</mrow>
Cell输出:
<mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>k</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>K</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>ck</mi>
</msub>
<msubsup>
<mi>&delta;</mi>
<mi>k</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>g</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>G</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>cg</mi>
</msub>
<msubsup>
<mi>&delta;</mi>
<mi>g</mi>
<mrow>
<mi>t</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
输出门:
<mrow>
<msubsup>
<mi>&delta;</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<mi>h</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
Cell状态:
Cell:
<mrow>
<msubsup>
<mi>&delta;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>b</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<msup>
<mi>g</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>s</mi>
<mi>t</mi>
</msubsup>
</mrow>
忘记门:
输入门:
<mrow>
<msubsup>
<mi>&delta;</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>s</mi>
<mi>t</mi>
</msubsup>
<mo>.</mo>
</mrow>
6.一种用于执行循环神经网络和LSTM运算的方法,其中,
利用多个从运算模块将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入将结果返回给主运算模块;
利用一个主运算模块在正向过程时对从运算模块返回的和进行插值激活,以及在反向过程时插值得到激活导数并且与梯度相乘。
7.如权利要求6所述的用于执行循环神经网络和LSTM运算的方法,其特征在于,
在循环神经网络和LSTM运算的正向过程进行以下计算过程:
以下公式中表达参数的含义:
wij表示从单位i到单位j的连接权值,表示t时刻j单位输入门的值,表示t时刻j单位输入门的激活值,下标l,ω,c分别表示输入门,输出门,忘记门和第c个cell。wcl,wcω分别表示当前第c个cell到上一时刻的输入门,输出门,忘记门的连接权值,表达第c个cell在t时刻的状态,f、g、h都是激活函数,I表示输入大小,K表示输出大小,H表示隐层大小,h泛指cell和其他时刻的隐层连接,G表示所有对隐层的输入;
为了简化表达,定义即残差对于第j个cell在t时刻的偏导数,下面的公式都是在一个时刻下的block完成的,其他时刻以此类推;
以下是前向运算的公式表达,计算顺序按照给出公式顺序进行:
输入门:
<mrow>
<msubsup>
<mi>a</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>I</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>il</mi>
</msub>
<msubsup>
<mi>x</mi>
<mi>i</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>H</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>hl</mi>
</msub>
<msubsup>
<mi>b</mi>
<mi>h</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>cl</mi>
</msub>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
<mrow>
<msubsup>
<mi>b</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mi>f</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
3
忘记门:
Cell:
<mrow>
<msubsup>
<mi>a</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>I</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>ic</mi>
</msub>
<msubsup>
<mi>x</mi>
<mi>i</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>H</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>hc</mi>
</msub>
<msubsup>
<mi>b</mi>
<mi>h</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
Cell状态:
输出门:
<mrow>
<msubsup>
<mi>a</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>I</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>i&omega;</mi>
</msub>
<msubsup>
<mi>x</mi>
<mi>i</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>H</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>h&omega;</mi>
</msub>
<msubsup>
<mi>b</mi>
<mi>h</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>c&omega;</mi>
</msub>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
<mrow>
<msubsup>
<mi>b</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mi>f</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
Cell输出:
<mrow>
<msubsup>
<mi>b</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>b</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mi>h</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mo>.</mo>
</mrow>
。
8.如权利要求7所述的用于执行循环神经网络和LSTM运算的装置,其特征在于,
在循环神经网络和LSTM运算的单层运算的梯度反向时进行以下计算过程:
反向运算公式表达,计算顺序按照给出公式顺序进行:
定义:
<mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mfrac>
<mrow>
<mo>&PartialD;</mo>
<mi>L</mi>
</mrow>
<mrow>
<mo>&PartialD;</mo>
<msubsup>
<mi>b</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
</mfrac>
<mo>,</mo>
<msubsup>
<mi>&epsiv;</mi>
<mi>s</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<mfrac>
<mrow>
<mo>&PartialD;</mo>
<mi>L</mi>
</mrow>
<mrow>
<mo>&PartialD;</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
</mfrac>
</mrow>
Cell输出:
<mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>k</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>K</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>ck</mi>
</msub>
<msubsup>
<mi>&delta;</mi>
<mi>k</mi>
<mi>t</mi>
</msubsup>
<mo>+</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>g</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>G</mi>
</munderover>
<msub>
<mi>w</mi>
<mi>cg</mi>
</msub>
<msubsup>
<mi>&delta;</mi>
<mi>g</mi>
<mrow>
<mi>t</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
输出门:
<mrow>
<msubsup>
<mi>&delta;</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>&omega;</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<mi>h</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
</mrow>
Cell状态:
Cell:
<mrow>
<msubsup>
<mi>&delta;</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>b</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<msup>
<mi>g</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>s</mi>
<mi>t</mi>
</msubsup>
</mrow>
忘记门:
输入门:
<mrow>
<msubsup>
<mi>&delta;</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>=</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>a</mi>
<mi>l</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>c</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>C</mi>
</munderover>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>s</mi>
<mi>c</mi>
<mi>t</mi>
</msubsup>
<mo>)</mo>
</mrow>
<msubsup>
<mi>&epsiv;</mi>
<mi>s</mi>
<mi>t</mi>
</msubsup>
<mo>.</mo>
</mrow>
。 5
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911175801.0A CN110929863B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
CN201811279404.3A CN109284825B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
CN201610285178.4A CN107341542B (zh) | 2016-04-29 | 2016-04-29 | 用于执行循环神经网络和lstm运算的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610285178.4A CN107341542B (zh) | 2016-04-29 | 2016-04-29 | 用于执行循环神经网络和lstm运算的装置和方法 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811279404.3A Division CN109284825B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
CN201911175801.0A Division CN110929863B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341542A true CN107341542A (zh) | 2017-11-10 |
CN107341542B CN107341542B (zh) | 2021-06-11 |
Family
ID=60222675
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610285178.4A Active CN107341542B (zh) | 2016-04-29 | 2016-04-29 | 用于执行循环神经网络和lstm运算的装置和方法 |
CN201811279404.3A Active CN109284825B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
CN201911175801.0A Active CN110929863B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811279404.3A Active CN109284825B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
CN201911175801.0A Active CN110929863B (zh) | 2016-04-29 | 2016-04-29 | 用于执行lstm运算的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN107341542B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280885A (zh) * | 2018-01-09 | 2018-07-13 | 上海大学 | 构建全息偶像方法 |
CN108510065A (zh) * | 2018-03-30 | 2018-09-07 | 中国科学院计算技术研究所 | 应用于长短时记忆神经网络的计算装置和计算方法 |
CN108805273A (zh) * | 2018-05-20 | 2018-11-13 | 复旦大学 | 一种lstm中门控单元加速运算的硬件实现电路 |
CN109088406A (zh) * | 2018-06-26 | 2018-12-25 | 河海大学常州校区 | 一种基于lstm神经网络的微电网等效建模方法 |
CN109522052A (zh) * | 2018-11-27 | 2019-03-26 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109543832A (zh) * | 2018-11-27 | 2019-03-29 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109620154A (zh) * | 2018-12-21 | 2019-04-16 | 平安科技(深圳)有限公司 | 基于深度学习的肠鸣音识别方法及相关装置 |
CN109670581A (zh) * | 2018-12-21 | 2019-04-23 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109697500A (zh) * | 2018-12-29 | 2019-04-30 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN109711540A (zh) * | 2018-12-20 | 2019-05-03 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109726797A (zh) * | 2018-12-21 | 2019-05-07 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、计算机系统及存储介质 |
CN109961136A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN110018970A (zh) * | 2018-01-08 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 缓存预取方法、装置、设备及计算机可读存储介质 |
CN110059809A (zh) * | 2018-10-10 | 2019-07-26 | 北京中科寒武纪科技有限公司 | 一种计算装置及相关产品 |
CN110942140A (zh) * | 2019-11-29 | 2020-03-31 | 任科扬 | 一种人工神经网络差和迭代数据处理方法及装置 |
CN111045726A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 支持编码、解码的深度学习处理装置及方法 |
WO2020125092A1 (zh) * | 2018-12-20 | 2020-06-25 | 中科寒武纪科技股份有限公司 | 计算装置及板卡 |
CN112784970A (zh) * | 2020-12-31 | 2021-05-11 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
US11042797B2 (en) | 2019-01-08 | 2021-06-22 | SimpleMachines Inc. | Accelerating parallel processing of data in a recurrent neural network |
CN113537476A (zh) * | 2020-04-16 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算装置以及相关产品 |
WO2022028232A1 (zh) * | 2020-08-03 | 2022-02-10 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
CN116226702A (zh) * | 2022-09-09 | 2023-06-06 | 武汉中数医疗科技有限公司 | 一种基于生物电阻抗的甲状腺采样数据识别方法 |
CN116226702B (zh) * | 2022-09-09 | 2024-04-26 | 武汉中数医疗科技有限公司 | 一种基于生物电阻抗的甲状腺采样数据识别方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102200964B (zh) * | 2011-06-17 | 2013-05-15 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
KR20130090147A (ko) * | 2012-02-03 | 2013-08-13 | 안병익 | 신경망 컴퓨팅 장치 및 시스템과 그 방법 |
US20160034812A1 (en) * | 2014-07-31 | 2016-02-04 | Qualcomm Incorporated | Long short-term memory using a spiking neural network |
US10783900B2 (en) * | 2014-10-03 | 2020-09-22 | Google Llc | Convolutional, long short-term memory, fully connected deep neural networks |
CN104615983B (zh) * | 2015-01-28 | 2018-07-31 | 中国科学院自动化研究所 | 基于递归神经网络和人体骨架运动序列的行为识别方法 |
CN104699631B (zh) * | 2015-03-26 | 2018-02-02 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
CN105389772B (zh) * | 2015-12-02 | 2018-09-07 | 百度在线网络技术(北京)有限公司 | 基于图形处理器的数据处理方法和装置 |
-
2016
- 2016-04-29 CN CN201610285178.4A patent/CN107341542B/zh active Active
- 2016-04-29 CN CN201811279404.3A patent/CN109284825B/zh active Active
- 2016-04-29 CN CN201911175801.0A patent/CN110929863B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Non-Patent Citations (1)
Title |
---|
YUNJI CHEN ET AL: "DaDianNao: A Machine-Learning Supercomputer", 《2014 47TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109961136B (zh) * | 2017-12-14 | 2020-05-19 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN109961136A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN110018970B (zh) * | 2018-01-08 | 2023-07-21 | 腾讯科技(深圳)有限公司 | 缓存预取方法、装置、设备及计算机可读存储介质 |
CN110018970A (zh) * | 2018-01-08 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 缓存预取方法、装置、设备及计算机可读存储介质 |
CN108280885B (zh) * | 2018-01-09 | 2021-12-03 | 上海大学 | 构建全息偶像方法 |
CN108280885A (zh) * | 2018-01-09 | 2018-07-13 | 上海大学 | 构建全息偶像方法 |
CN108510065A (zh) * | 2018-03-30 | 2018-09-07 | 中国科学院计算技术研究所 | 应用于长短时记忆神经网络的计算装置和计算方法 |
CN108805273A (zh) * | 2018-05-20 | 2018-11-13 | 复旦大学 | 一种lstm中门控单元加速运算的硬件实现电路 |
CN109088406A (zh) * | 2018-06-26 | 2018-12-25 | 河海大学常州校区 | 一种基于lstm神经网络的微电网等效建模方法 |
CN110059809A (zh) * | 2018-10-10 | 2019-07-26 | 北京中科寒武纪科技有限公司 | 一种计算装置及相关产品 |
CN110059809B (zh) * | 2018-10-10 | 2020-01-17 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111045726B (zh) * | 2018-10-12 | 2022-04-15 | 上海寒武纪信息科技有限公司 | 支持编码、解码的深度学习处理装置及方法 |
CN111045726A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 支持编码、解码的深度学习处理装置及方法 |
CN109543832A (zh) * | 2018-11-27 | 2019-03-29 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109522052B (zh) * | 2018-11-27 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 一种计算装置及板卡 |
CN109522052A (zh) * | 2018-11-27 | 2019-03-26 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109711540A (zh) * | 2018-12-20 | 2019-05-03 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
WO2020125092A1 (zh) * | 2018-12-20 | 2020-06-25 | 中科寒武纪科技股份有限公司 | 计算装置及板卡 |
CN109726797A (zh) * | 2018-12-21 | 2019-05-07 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、计算机系统及存储介质 |
CN109670581A (zh) * | 2018-12-21 | 2019-04-23 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109620154A (zh) * | 2018-12-21 | 2019-04-16 | 平安科技(深圳)有限公司 | 基于深度学习的肠鸣音识别方法及相关装置 |
CN109670581B (zh) * | 2018-12-21 | 2023-05-23 | 中科寒武纪科技股份有限公司 | 一种计算装置及板卡 |
CN109697500A (zh) * | 2018-12-29 | 2019-04-30 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
US11042797B2 (en) | 2019-01-08 | 2021-06-22 | SimpleMachines Inc. | Accelerating parallel processing of data in a recurrent neural network |
CN110942140B (zh) * | 2019-11-29 | 2022-11-08 | 任科扬 | 一种人工神经网络差和迭代数据处理方法及装置 |
CN110942140A (zh) * | 2019-11-29 | 2020-03-31 | 任科扬 | 一种人工神经网络差和迭代数据处理方法及装置 |
CN113537476A (zh) * | 2020-04-16 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算装置以及相关产品 |
WO2022028232A1 (zh) * | 2020-08-03 | 2022-02-10 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
WO2022142479A1 (zh) * | 2020-12-31 | 2022-07-07 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN112784970A (zh) * | 2020-12-31 | 2021-05-11 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN112784970B (zh) * | 2020-12-31 | 2023-08-15 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN116226702A (zh) * | 2022-09-09 | 2023-06-06 | 武汉中数医疗科技有限公司 | 一种基于生物电阻抗的甲状腺采样数据识别方法 |
CN116226702B (zh) * | 2022-09-09 | 2024-04-26 | 武汉中数医疗科技有限公司 | 一种基于生物电阻抗的甲状腺采样数据识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109284825B (zh) | 2020-04-14 |
CN107341542B (zh) | 2021-06-11 |
CN109284825A (zh) | 2019-01-29 |
CN110929863A (zh) | 2020-03-27 |
CN110929863B (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341542A (zh) | 用于执行循环神经网络和lstm运算的装置和方法 | |
CN108154228B (zh) | 一种人工神经网络计算装置和方法 | |
EP3451157B1 (en) | Device and method for performing forward operation of convolutional neural network | |
CN105512723B (zh) | 一种用于稀疏连接的人工神经网络计算装置和方法 | |
CN110188870A (zh) | 用于执行人工神经网络自学习运算的装置和方法 | |
CN108510064A (zh) | 包括多个核心处理模块的人工神经网络的处理系统及方法 | |
CN107341541A (zh) | 一种用于执行全连接层神经网络训练的装置和方法 | |
CN107341547A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN107301453A (zh) | 支持离散数据表示的人工神经网络正向运算装置和方法 | |
CN107832844A (zh) | 一种信息处理方法及相关产品 | |
CN107315571A (zh) | 一种用于执行全连接层神经网络正向运算的装置和方法 | |
WO2017185347A1 (zh) | 用于执行循环神经网络和lstm运算的装置和方法 | |
CN111898635A (zh) | 神经网络的训练方法、数据获取方法和装置 | |
CN107886166A (zh) | 一种执行人工神经网络运算的装置和方法 | |
CN109242094A (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
CN116113941A (zh) | 一种神经网络加速器、加速方法以及装置 | |
CN108320018A (zh) | 一种人工神经网络运算的装置及方法 | |
CN109117455A (zh) | 计算装置及方法 | |
CN109359542A (zh) | 基于神经网络的车辆损伤级别的确定方法及终端设备 | |
CN116802646A (zh) | 数据处理的方法和装置 | |
CN110334359B (zh) | 文本翻译方法和装置 | |
CN114792127A (zh) | 神经网络模型的训练方法、图像处理方法及装置 | |
CN111652349A (zh) | 一种神经网络的处理方法及相关设备 | |
WO2020042770A9 (zh) | 图像识别处理方法和装置 | |
CN117217269A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |