CN107301453A - 支持离散数据表示的人工神经网络正向运算装置和方法 - Google Patents
支持离散数据表示的人工神经网络正向运算装置和方法 Download PDFInfo
- Publication number
- CN107301453A CN107301453A CN201610236955.6A CN201610236955A CN107301453A CN 107301453 A CN107301453 A CN 107301453A CN 201610236955 A CN201610236955 A CN 201610236955A CN 107301453 A CN107301453 A CN 107301453A
- Authority
- CN
- China
- Prior art keywords
- data
- discrete
- computing module
- neuron
- 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
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/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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
Abstract
本发明提供了一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括指令缓存单元、控制器单元、数据访问单元、互联模块、主运算模块、以及多个从运算模块、离散数据运算模块、连续离散转换模块。使用该装置可以实现支持离散数据表示的多层人工神经网络的正向运算。正向运算过程中的权值、神经元等数据可以采用离散形式表示。例如‑1、‑1/2、0、1/2、1等不是连续的数据。提供了支持离散数据运算的模块。根据离散数据的值采用不同位运算例如数据的异或、取非等代替连续数据的基本运算例如乘法、加法等。提供了将连续数据转换为离散数据的模块。提供了利用上述装置支持批归一化(batch normalization)计算。
Description
技术领域
本发明总体上涉及人工神经网络,具体地涉及一种用于执行人工神经网络正向运算的装置和方法,本发明中的数据支持离散数据表示。并对离散数据,用按位运算例如异或、取非等代替了连续数据基本运算例如乘法等操作。
背景技术
多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
一种支持多层人工神经网络正向运算的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。另一种支持多层人工神经网络正向训练的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。
这两种装置在数据存储和运算上都是使用的连续数据。连续数据的存储需要较多的资源,例如一个32位的浮点数据,就需要32个比特位来存储该数据。在连续数据的运算上,所需要的加法器、乘法器等功能部件的实现也较为复杂。
离散数据表示指通过特定的数字来代替连续数据的存储方式。例如,可以通过00、01、10、11四个数字分别代表数据-1、-1/8、1/8、1四个数字。这种存储方式不同于连续存储方式。在连续存储方式中二进制数00/01/10/11就代表着十进制中0/1/2/3四个连续的数字。通过这种类似于索引的表示方式我们用形式上连续的数字代替了不连续离散化的真实数据。存储的数字不是连续的,所以叫离散数据表示。
目前的运算多层人工神经网络的运算装置在数据表示上已知方法是用浮点数或者定点数这样的连续数据表示。因为多层神经网络权值的精度较高和数量较大,连续数据的表示方式在运算和存储两方面带来更大的开销。而通过离散数据表示的方式,可以通过数据按位的异或、移位等运算代替连续数据的乘法等运算。从而大大减少乘法器部件的数量。并且用几个比特位的离散化数据,相比于传统的32位的浮点数存储上的优势也是明显的。
发明内容
本发明的一个方面提供了一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括指令缓存单元、控制器单元、数据访问单元、互联模块、主运算模块、多个从运算模块,其中:
指令缓存单元用于通过数据访问单元读入指令并缓存读入的指令;
控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制互联模块、主运算模块、以及从运算模块行为的微指令;
数据访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写入离散数据或连续数据或从所述数据缓存单元向外部地址空间读离散数据或连续数据;
每层神经网络开始正向计算的阶段,主运算模块通过互联模块向所有的从运算模块传输本层的离散或连续的输入神经元向量,在从运算模块的计算过程完成后,互联模块逐级将各从运算模块的离散或连续化的输出神经元值拼成中间结果向量,其中,当输入数据是离散数据与连续数据的混合数据时,从运算模块针对不同离散数据采取预先设置的相应计算方式;
主运算模块用于利用中间结果向量完成后续计算,当输入数据是离散数据与连续数据的混合数据时,主运算模块针对不同离散数据采取预先设置的相应计算方式。
可选地,离散数据表示指用特定的离散数字代替真实的连续数据的表示方式。
可选地,多个从运算模块利用相同的离散或连续的输入神经元向量和各自不同的离散或连续的权值向量,并行地计算出各自的离散或连续输出神经元值。
可选地,主运算模块对中间结果向量执行以下任一项操作:
加偏置操作,在中间结果向量上加上偏置;
对中间结果向量进行激活,激活函数active是sigmoid,tanh,relu,softmax中的任一个;
采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者
池化操作,包括最大值池化或平均值池化。
可选地,从运算模块包括输入神经元缓存单元,用于缓存离散或者连续的输入神经元向量。
可选地,互联模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,可以实现成不同的互联拓扑。在一种实施方式中,具有H树型的结构,H树是由多个节点构成的二叉树通路,每个节点将上游的离散或连续的数据同样地发给下游的两个节点,将下游的两个节点返回的离散或连续的数据合并,并返回给上游的节点。
可选地,主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的离散或连续表示的输入数据和输出数据;
运算单元完成主运算模块的各种运算功能,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;
数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神经元缓存单元中连续数据或离散数据读写不存在一致性冲突,并且负责从神经元缓存单元读取输入离散或连续的神经元向量,并通过互联模块发送给从运算模块;以及
来自互联模块的中间结果向量被发送到运算单元。
可选地,每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和权值缓存单元,其中:
运算单元接收控制器单元发出的微指令并进行算数逻辑运算,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;
数据依赖关系判断单元负责计算过程中对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写操作,保证对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写不存在一致性冲突;
神经元缓存单元缓存输入神经元向量的数据以及该从运算模块计算得到的输出神经元值;以及
权值缓存单元缓存该从运算模块在计算过程中需要的离散或连续表示的权值向量。
可选地,数据依赖关系判断单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。
可选地,主运算模块或从运算模块中的运算单元包括运算决定单元和混合数据运算单元,当输入数据是混合数据时,运算决定单元根据其中的离散数据决定应对该混合数据执行何种操作,然后,混合数据运算单元根据运算决定单元的决定结果,执行相应操作。
可选地,主运算模块或从运算模块中的所述运算单元还包括离散数据运算单元和连续数据运算单元中的至少一个,以及数据类型判断单元,当输入数据全是离散数据时,由离散数据运算单元根据输入的离散数据通过查表执行相应操作,当输入数据全是连续数据时,由连续数据运算单元执行相应操作。
可选地,该装置还包括连续离散转换单元,连续离散转换单元包括预处理模块、距离计算模块、和判断模块,假设使用M个离散数据,M=2m,m≥1,令这些离散数据分别对应于预定区间[-zone,zone]内的M个数值,其中:
预处理模块对于输入的连续数据x使用clip(-zone,zone)运算进行预处理,得到区间[-zone,zone]内的预处理数据y,其中,如果x≤-zone则y=-zone,如果x≥zone则y=zone,如果-zone<x<zone,则预处理数据y=x;
距离计算模块计算预处理数据y与上述各数值之间的距离;以及
判断模块基于该距离计算并输出离散数据。
可选地,预定区间[-zone,zone]是[-1,1]或[-2,2];并且/或者M个数值的绝对值是2的幂的倒数;并且/或者判断模块执行:输出与该预处理数据y距离最近的数值所对应的离散数据,如果有两个数值与该预处理数据距离相等,则输出二者中任一个所对应的离散数据;或者计算预处理数据y分别到距离最近的两个数值中任一个的归一化概率,将这两个数值中任一个所对应的归一化概率与随机数生成模块生成的(0,1)之间的随机数z比较,如果该z小于该概率则输出该离散数据,否则输出另一离散数据。
本发明的另一个方面提供了一种使用上述装置执行单层人工神经网络正向运算的方法。通过提供的指令集,控制器控制读入运算所需的神经元、权值、常数量等数据。这些数据可以采用离散数据表示也可以不采用。之后主运算模块、从运算模块、互联模块完成神经元数据与权值数据相乘加偏置激活的过程。特别对于离散数据表示的数据,在进行乘法操作时,根据离散数据的数值,通过对相关数据的位操作代替了乘法运算。例如权值数据用1比特的离散数据表示,0代表+1,1代表-1,通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。
本发明的另一个方面提供了一种使用上述装置支持人工神经网络批归一化运算(Batch Normalization)的方法。通过提供的指令集,控制器控制数据访问单元读入输入的数据,之后控制主从运算模块根据batch大小求出各自位置的均值以及方差或使用设定好的均值方差。之后控制器控制对应位置的输入数据减去均值除以方差。最后控制器控制用处理后的数据与学习参数相乘后加上另一个学习参数。
本发明的另一方面提供了一种使用上述装置执行多层人工神经网络正向运算的方法。其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
该发明可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:
图1示出了根据本发明实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置的整体结构的示例框图。
图2示意性示出了根据本发明实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中H树模块(互联模块的一种实施方式)的结构。
图3示出了根据本发明实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中主运算模块结构的示例框图。
图4示出了根据本发明实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中从运算模块结构的示例框图。
图5示出了根据本发明实施例的神经网络正向运算过程的示例框图。
图6示出了根据本发明实施例的支持离散数据表示的神经网络反向训练过程的示例框图。
图7示出了根据本发明实施例的单层人工神经网络运算的流程图。
图8示出了根据本发明实施例的运算单元示例结构。
图9示出了根据本发明实施例的连续数据和离散数据转化的连续离散转化模块的示例结构。
在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。
具体实施方式
根据结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
根据本发明实施例的支持离散数据表示的多层人工神经网络的正向运算,包括两层或者两层以上的多个神经元。对于每一层来说,输入神经元向量首先和权值向量进行点积运算,结果经过激活函数得到输出神经元。其中激活函数可以是sigmoid函数,tanh、relu、softmax函数等,支持将激活后的输出神经元离散化表示或连续化表示。
对于离散数据表示的输入神经元向量或离散数据表示的权值向量的点积运算,本装置支持将点积运算转换为数据的移位、取非、异或等位运算。对于数据的表示方式,本装置支持数据离散表示或非离散表示,用户可以自定义哪一个层的哪些数据采用离散表示形式或非离散表示,并且可以根据具体需要自定义离散数据的位数,从而代替表示的真实数据的个数,例如设定为1比特、2比特、3比特等位数的离散数据,分别可以表示2个、4个、8个真实数据。
图1示出了根据本发明实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置的整体结构的示例框图。如图1所示,该装置包括指令缓存单元1、控制器单元2、数据访问单元3、互联模块4、主运算模块5和多个从运算模块6,可选地还包括连续离散转换模块7。指令缓存单元1、控制器单元2、数据访问单元3、互联模块4、主运算模块5和从运算模块6、连续离散转换模块7均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。特别的,本装置可以对离散数据提供存储和运算支持。
指令缓存单元1通过数据访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行为的微指令,所述其他模块例如数据访问单元3、主运算模块5和从运算模块6等。
数据访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。该数据是离散表示的或非离散表示的。该单元用来设计可以读取离散表示的数据。
互联模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连、总线结构等)
图2示意性示出了互联模块4的一种实施方式:H树模块。H树模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有H树的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在每层人工神经网络开始计算阶段,主运算模块5内的神经元数据该数据可以是离散表示或非离散表示的通过H树模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,每个从运算模块输出的神经元的值会在H树中逐级拼成一个完整的由神经元组成的向量,作为中间结果向量。针对于离散数据表示的运算,我们特别提到了在主从运算模块内部的专用于离散数据运算的运算模块见图7。以神经网络全连接层进行说明,假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过H树模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。H树模块在存储和传输数据的过程中均支持离散数据表示。
图3示出了根据本发明实施例的用于执行人工神经网络正向运算的装置中主运算模块5的结构的示例框图。如图3所示,主运算模块5包括运算单元51、数据依赖关系判断单元52和支持离散数据表示的神经元缓存单元53。
支持离散数据表示的神经元缓存单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。
运算单元51完成主运算模块5的各种运算功能。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,可以制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
依赖关系判断单元52是运算单元51读写神经元缓存单元53的端口,同时能够保证神经元缓存单元中数据的读写一致性。同时,数据依赖关系判断单元52也负责将读取数据通过互联模块4发送给从运算模块,而从运算模块6的输出数据通过互联模块4直接发送给运算单元51。控制器单元2输出的指令发送给计算单元51和数据依赖关系判断单元52,来控制其行为。
图4示出了根据本发明实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括运算单元61、数据依赖关系判定单元62、支持离散数据表示的神经元缓存单元63和支持离散数据表示的权值缓存单元64。
运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,可以制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
数据依赖关系判断单元62负责计算过程中对神经元缓存单元的读写操作。数据依赖关系判断单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的微指令都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
支持离散数据表示的神经元缓存单元63缓存该从运算模块6的输入神经元向量数据和输出神经元值数据。该数据可以以离散数据的形式存储和传输。
支持离散数据表示的权值缓存单元64缓存该从运算模块6在计算过程中需要的权值数据。该数据根据用户定义可以是离散表示的或不是。对于每一个从运算模块6,都只会存储全部输入神经元与部分输出神经元之间的权值。以全连接层为例,输出神经元按照从运算单元的个数N进行分段,每段的第n个输出神经元对应的权值存放在第n个从运算单元中。
从运算模块6实现每层人工神经网络正向运算过程中可以并行的前半部分。该模块中的数据存储以及运算都支持离散数据表示。以人工神经网络全连接层(MLP)为例,过程为y=f(wx+b),其中权值矩阵w和输入神经元向量x的乘法可以划分为不相关的并行计算子任务,out与in是列向量,每个从运算模块6只计算in中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在互联模块4中逐级两两相加得到最后的结果。这个结果可以是离散数据表示的。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出输出神经元值,所有的输出神经元值在互联模块4中拼成得到中间结果向量。每个从运算模块6只需要计算出中间结果向量y中与本模块对应的输出神经元值即可。互联模块4对所有从运算模块6输出的神经元值求和,得到最终的中间结果向量y。主运算模块5基于中间结果向量y进行后续计算,比如加偏置、池化(例如最大值池化(MAXPOOLING)或平均值池化(AVGPOOLING)等)、做激活和做采样等。
图8示出了运算单元的结构框图,其可用于主运算模块中的运算单元51或从运算模块中的运算单元61。运算过程中输入数据可以是离散数据或连续数据。数据类型判断单元71判断输入数据全是连续数据、全是离散数据或是既包含连续数据又包含离散数据的混合数据。当输入数据全是连续数据时,连续数据运算单元72执行相应运算。
当输入数据全是离散数据时,离散数据运算单元73执行相应运算。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,我们制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
当输入数据是混合数据时,运算决定单元74根据其中的离散数据决定应对其执行何种操作。可以针对不同的离散数据分别预先设置相应操作。然后,混合数据运算单元75根据运算决定单元74的决定结果,执行相应操作。对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
图9示出了连续离散转换单元。用户可以定义采用该模块将连续数据转换为离散数据或不采用。输入连续数据,输出离散数据。该单元包括随机数产生模块、判断模块、运算模块。对于输入的连续数据通过运算模块得到运算后的结果,经由判断模块用随机数与运算后的结果比较,判断随机数落在哪一个区间,从而决定出输出的离散数据的具体值。例如用户定义产生二元离散数据。对于输入的任意连续数据x。经由运算模块计算出结果y,y=abs(clip(-1,1))。之后通过判断模块,如果随机数大于y,则输出的离散数据是1,反之输出的离散数据是0。离散数据1和0分别代表了连续数据的-1和+1。将得到的离散数据存储回内存中。等待主从运算模块中的运算单元使用,产生相应的操作。
正向过程中的权值数据、输出输入数据可以采用离散数据表示或不采用。对于连续数据的乘法操作,可以通过基于离散数据的异或、取非、位移等方式代替连续数据的乘法操作。例如权值用1比特离散数据表示,0代表+1,1代表-1,通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。
根据本发明实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络的算术逻辑计算;
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间,该数据支持离散化表示;
NOP指令负责清空当前装置内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制器将要从指令缓存单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
图5示出了根据本发明实施例的神经网络正向运算过程的示例框图。在不同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量,该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=f(w*in+b),其中out输出神经元向量、in是输入神经元向量、b是偏置向量,w是权值矩阵,f是激活函数。每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的列向量。互联模块将输入神经元向量[in0,...,inN]发送给所有的从运算单元,暂存在神经元缓存单元中。对于第i个从运算单元,计算其相应的权值向量[w_i0,...,w_iN]与输入神经元向量的点积。从运算单元输出的结果经过互联模块拼成完整的输出向量并返回给主运算单元,在主运算单元中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,...,outN]。
图6是示出根据一个实施例的单层支持离散数据表示的人工神经网络正向计算的一种实施方法。该流程图描述利用本发明的装置和指令集实现图5所示的一种单层离散数据表示的人工神经网络正向运算过程。
步骤S1.1,将初始指令存放到指令存储单元1中;
步骤S1.2,从指令存储单元1中读取一条指令;
步骤S1.3,对上述指令进行译码;
步骤S1.4,根据译码得到的控制信号,进行相应操作;
步骤S1.5,将操作结果写回到相应存储中。
在步骤S1.1中,可以存入初始化IO指令,用于搬运后续指令。
在步骤S1.2中,可读取的指令包括但不限于CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等。
在步骤S1.3中,根据指令的操作类型(CONFIG,COMPUTE,IO,NOP,JUMP,MOVE等)译码得到相应模块的控制信号。对于CONFIG指令,译码得到配置其余模块的配置信息。对于COMPUTE指令,译码得到主从运算模块的控制信号,控制不同离散数据采取的对应操作。对于IO指令,译码得到数据访问模块的控制信号。对于NOP指令,不产生实际控制信号,只用于清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部执行完毕。对于JUMP指令,得到跳转指令流的控制信号。对于MOVE指令,得到在装置内部搬运数据的控制信号。
在步骤S1.4中,上述模块2-6根据控制信号执行相应操作。以执行支持离散数据表示的神经网络正向的COMPUTE指令为例,互连模块将输入神经元向量[in0,...,inN]发送给所有的从运算模块,暂存在神经元缓存单元中。对于第i个从运算模块,计算其相应的权值向量[w_i0,...,w_iN]与输入神经元向量的点积。从运算模块输出的结果经过互连模块拼成完整的输出向量并返回给主运算模块,在主运算模块中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,...,outN]。
在步骤S1.5中,各个模块将操作结果写回到相应缓存中。以执行离散数据表示的神经网络正向的运算为例,主运算模块得到的输出神经元向量被写回到存储单元。
图7是示出根据一个实施例的单层人工神经网络正向运算的另一种更详细的实施方法。该流程图描述利用本发明的装置和指令集实现图4所示的一种单层神经网络正向运算的过程。
在步骤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根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位,Lrn层算法的rang参数,AveragePooling层算法窗口大小的倒数等)。
在步骤S6,控制器单元2接着从指令缓存单元读入下一条COMPUTE指令,根据译出的微指令,主运算模块5首先通过互联模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的神经元缓存单元63。
在步骤S7,根据COMPUTE指令译出的微指令,从运算模块6的运算单元61从权值缓存单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从神经元缓存单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过互联返回,对于离散数据,自定义采用异或等位运算代替点积运算或不采用。例如对于1比特的离散数据表示,0代表+1,1代表-1,通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。。
在步骤S8,在互联模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间结果向量。
在步骤S9,主运算模块5得到互联模块4的返回值,根据COMPUTE指令译出的微指令,从神经元缓存单元53读取偏置向量,与互联模块4返回的向量相加,然后再对相加结果做激活,该装置支持用户自定义是否将激活后的结果离散化表示。并将最后的输出神经元向量写回至神经元缓存单元53。
在步骤S10,控制器单元接着从指令缓存单元读入下一条IO指令,根据译出的微指令,数据访问单元3将神经元缓存单元53中的输出神经元向量存至外部地址空间指定地址,运算结束。
对于人工神经网络批归一化运算(Batch Normalization)运算步骤与上述过程相仿。通过提供的指令集,控制器完成以下过程。控制器控制数据访问单元读入输入的数据,之后控制主从运算模块根据batch大小求出各自位置的均值以及方差或使用设定好的均值方差。之后控制器控制对应位置的输入数据减去均值除以方差。最后控制器控制用处理后的数据与学习参数相乘后加上另一个学习参数。
对于多层人工神经网络,其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
通过采用用于执行人工神经网络正向运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络正向运算的支持。
通过采用针对多层人工神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
通过采用离散数据表示的方法,相较于浮点数、定点数等表示方法,大大较少了装置的存储能耗等开销。可以再有限的面积上优化结构布局,提高运算速度或性能能耗比等指标。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。并且对于离散数据的表示问题,应该理解可以选择哪些数据离散化表示、哪些连续表示。数据是否离散表示的精神贯穿于整个运算过程中。
在前述的说明书中,参考其特定示例性实施例描述了本发明的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本发明的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。
Claims (16)
1.一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括指令缓存单元、控制器单元、数据访问单元、互联模块、主运算模块、多个从运算模块,其中:
指令缓存单元用于通过数据访问单元读入指令并缓存读入的指令;
控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制互联模块、主运算模块、以及从运算模块行为的微指令;
数据访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写入离散数据或连续数据或从所述数据缓存单元向外部地址空间读离散数据或连续数据;
每层神经网络开始正向计算的阶段,主运算模块通过互联模块向所有的从运算模块传输本层的离散或连续的输入神经元向量,在从运算模块的计算过程完成后,互联模块逐级将各从运算模块的离散或连续化的输出神经元值拼成中间结果向量,其中,当输入数据是离散数据与连续数据的混合数据时,从运算模块针对不同离散数据采取预先设置的相应计算方式;
主运算模块用于利用中间结果向量完成后续计算,当输入数据是离散数据与连续数据的混合数据时,主运算模块针对不同离散数据采取预先设置的相应计算方式。
2.根据权利要求1所述的装置,其中,离散数据表示指用特定的离散数字代替真实的连续数据的表示方式。
3.根据权利要求1所述的装置,其中,多个从运算模块利用相同的离散或连续的输入神经元向量和各自不同的离散或连续的权值向量,并行地计算出各自的离散或连续输出神经元值。
4.根据权利要求1所述的装置,其中,主运算模块对中间结果向量执行以下任一项操作:
加偏置操作,在中间结果向量上加上偏置;
对中间结果向量进行激活,激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;
采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者
池化操作,包括最大值池化或平均值池化。
5.根据权利要求1所述的装置,其中,从运算模块包括输入神经元缓存单元,用于缓存离散或者连续的输入神经元向量。
6.根据权利要求1所述的装置,其中,互联模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路。
7.根据权利要求1所述的装置,其中,主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的离散或连续表示的输入数据和输出数据;
运算单元完成主运算模块的各种运算功能,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;
数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神经元缓存单元中连续数据或离散数据读写不存在一致性冲突,并且负责从神经元缓存单元读取输入离散或连续的神经元向量,并通过互联模块发送给从运算模块;以及
来自互联模块的中间结果向量被发送到运算单元。
8.根据权利要求1所述的装置,其中,每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和权值缓存单元,其中:
运算单元接收控制器单元发出的微指令并进行算数逻辑运算,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;
数据依赖关系判断单元负责计算过程中对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写操作,保证 对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写不存在一致性冲突;
神经元缓存单元缓存输入神经元向量的数据以及该从运算模块计算得到的输出神经元值;以及
权值缓存单元缓存该从运算模块在计算过程中需要的离散或连续表示的权值向量。
9.根据权利要求7或8所述的装置,其中,数据依赖关系判断单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。
10.根据权利要求7或8所述的装置,其中主运算模块或从运算模块中的运算单元包括运算决定单元和混合数据运算单元,当输入数据是混合数据时,运算决定单元根据其中的离散数据决定应对该混合数据执行何种操作,然后,混合数据运算单元根据运算决定单元的决定结果,执行相应操作。
11.根据权利要求9所述的装置,其中主运算模块或从运算模块中的所述运算单元还包括离散数据运算单元和连续数据运算单元中的至少一个,以及数据类型判断单元,当输入数据全是离散数据时,由离散数据运算单元根据输入的离散数据通过查表执行相应操作,当输入数据全是连续数据时,由连续数据运算单元执行相应操作。
12.根据权利要求1所述的装置,还包括连续离散转换单元,连续离散转换单元包括预处理模块、距离计算模块、和判断模块,假设使用M个离散数据,M=2m,m≥1,令这些离散数据分别对应于预定区间[-zone,zone]内的M个数值,其中:
预处理模块对于输入的连续数据x使用clip(-zone,zone)运算进行预处理,得到区间[-zone,zone]内的预处理数据y,其中,如果x≤-zone则y=-zone,如果x≥zone则y=zone,如果-zone<x<zone,则预处理数据y=x;
距离计算模块计算预处理数据y与上述各数值之间的距离;以及
判断模块基于该距离计算并输出离散数据。
13.根据权利要求12所述的装置,其特征在于以下任意一项或多项:
预定区间[-zone,zone]是[-1,1]或[-2,2];
M个数值的绝对值是2的幂的倒数;或者
判断模块执行:
输出与该预处理数据y距离最近的数值所对应的离散数据,如果有两个数值与该预处理数据距离相等,则输出二者中任一个所对应的离散数据;或者
计算预处理数据y分别到距离最近的两个数值中任一个的归一化概率,将这两个数值中任一个所对应的归一化概率与随机数生成模块生成的(0,1)之间的随机数z比较,如果该z小于该概率则输出该离散数据,否则输出另一离散数据。
14.一种使用根据权利要求1-13中的任一项的装置执行单层人工神经网络正向运算的方法,包括:
数据访问单元从外部地址空间读取与该层人工神经网络正向运算有关的所有人工神经网络运算指令,并将其缓存在指令缓存单元中;
连续离散转换模块从外部地址空间读取该层神经网络需要转换的连续数据转换为离散数据后存储回外部地址空间;
数据访问单元从外部地址空间读取主运算模块需要的与该层人工神经网络正向运算有关的所有离散或连续数据至主运算模块的神经元缓存单元;
数据访问单元从外部地址空间读取从运算模块需要的离散表示或连续表示的权值矩阵数据;
配置该层神经网络正向运算需要的各种离散或连续表示的常数;
主运算模块首先通过互联模块将输入神经元向量发给各从运算模块,保存至从运算模块的支持离散数据表示的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从从运算 模块的神经元缓存单元读取输入神经元向量,对于向量中没有离散数据表示的完成权值向量和输入神经元向量的点积运算,对于向量中有离散数据表示的,通过离散数据运算模块,根据离散数据的值判断相应的位操作代替点积运算,将得到的神经元值通过互联模块返回;
在互联模块中,各从运算模块返回的神经元值被逐级拼成完整的中间结果向量;
主运算模块从主运算模块的神经元缓存单元读取离散表示或连续表示的偏置向量,与互联模块返回的中间结果向量相加,然后再对相加结果做激活,得到输出神经元向量写回至主运算模块的神经元缓存单元;以及
数据访问单元将主运算模块的神经元缓存单元中的输出神经元向量存至外部地址空间指定地址。
15.一种使用根据权利要求1-13中的任一项的装置执行批归一化运算的方法:
数据访问单元从外部地址空间读取与该批归一化正向运算有关的所有人工神经网络运算指令,并将其缓存在指令缓存单元中;
连续离散转换模块从外部地址空间读取该层神经网络需要转换的连续数据转换为离散数据后存储回外部地址空间。
数据访问单元从外部地址空间读取主运算模块需要的与该层批归一化正向运算有关的所有离散或连续数据至主运算模块的神经元缓存单元;
配置该层批归一化正向运算需要的各种离散或连续表示的常数;
主运算模块首先通过互联模块将输入神经元向量发给各从运算模块,保存至从运算模块的支持离散数据表示的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从从运算模块的神经元缓存单元读取输入神经元向量,对于输入向量计算在每一个批的尺度下的均值和标准差,将得到的神经元值通过互联模块返回;
在互联模块中,各从运算模块返回的神经元值被逐级拼成完整的 中间结果向量;
主运算模块从主运算模块的神经元缓存单元读取离散表示或连续表示输入神经元向量,与互联模块返回的均值结果向量相减,然后再对减结果和标准差结果相除,得到输出神经元向量写回至主运算模块的神经元缓存单元;
数据访问单元将主运算模块的神经元缓存单元中的输出神经元向量存至外部地址空间指定地址。
16.一种执行多层人工神经网络正向运算的方法,包括:
针对每一层,执行根据权利要求14、15所述的方法,其中:
当针对上一层人工神经网络执行完毕后,将主运算模块中存储的上一层的输出神经元地址作为本层的输入神经元地址,针对所述本层再次执行根据权利要求14或15所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610236955.6A CN107301453B (zh) | 2016-04-15 | 2016-04-15 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN201811233426.6A CN109358900B (zh) | 2016-04-15 | 2016-04-15 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610236955.6A CN107301453B (zh) | 2016-04-15 | 2016-04-15 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811233426.6A Division CN109358900B (zh) | 2016-04-15 | 2016-04-15 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107301453A true CN107301453A (zh) | 2017-10-27 |
CN107301453B CN107301453B (zh) | 2021-04-20 |
Family
ID=60136734
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811233426.6A Active CN109358900B (zh) | 2016-04-15 | 2016-04-15 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN201610236955.6A Active CN107301453B (zh) | 2016-04-15 | 2016-04-15 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811233426.6A Active CN109358900B (zh) | 2016-04-15 | 2016-04-15 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109358900B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107833176A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
WO2019085379A1 (zh) * | 2017-10-30 | 2019-05-09 | 北京深鉴智能科技有限公司 | 深度学习softmax分类器的硬件实现电路及其控制方法 |
CN109961136A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109978157A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109993276A (zh) * | 2017-12-29 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络反向训练的装置和方法 |
CN110096309A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096310A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110163354A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110196734A (zh) * | 2018-02-27 | 2019-09-03 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN110309911A (zh) * | 2019-07-05 | 2019-10-08 | 北京中科寒武纪科技有限公司 | 神经网络模型验证方法、装置、计算机设备和存储介质 |
CN110472734A (zh) * | 2018-05-11 | 2019-11-19 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN110728364A (zh) * | 2018-07-17 | 2020-01-24 | 上海寒武纪信息科技有限公司 | 一种运算装置和运算方法 |
CN111026440A (zh) * | 2018-10-09 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047022A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111047021A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111104513A (zh) * | 2019-12-13 | 2020-05-05 | 中山大学 | 一种游戏平台用户问答业务的短文本分类方法 |
CN111124497A (zh) * | 2018-10-11 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111860811A (zh) * | 2016-04-27 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行人工神经网络全连接层正向运算的装置和方法 |
CN113626079A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN113626083A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
WO2021223639A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1274435A (zh) * | 1997-10-06 | 2000-11-22 | 美国通控集团公司 | 无模型自适应过程控制 |
CN101625735A (zh) * | 2009-08-13 | 2010-01-13 | 西安理工大学 | 基于ls-svm分类和回归学习递归神经网络的fpga实现方法 |
CN101963983A (zh) * | 2010-09-28 | 2011-02-02 | 江苏瑞蚨通软件科技有限公司(中外合资) | 一种粗集优化神经网络的数据挖掘方法 |
CN103399486A (zh) * | 2013-07-05 | 2013-11-20 | 杭州电子科技大学 | 塑料烘干器温度优化节能控制方法 |
CN103619021A (zh) * | 2013-12-10 | 2014-03-05 | 天津工业大学 | 一种基于神经网络的无线传感器网络入侵检测算法 |
CN104021420A (zh) * | 2014-05-23 | 2014-09-03 | 电子科技大学 | 可编程离散霍普菲尔德网络电路 |
CN105354198A (zh) * | 2014-08-19 | 2016-02-24 | 中国移动通信集团湖北有限公司 | 一种数据处理方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101596338A (zh) * | 2009-04-29 | 2009-12-09 | 天津大学 | 基于bp神经网络整定pid的功能性电刺激精密控制方法 |
CN102129013B (zh) * | 2011-01-21 | 2013-11-27 | 昆明理工大学 | 一种利用自然频率和人工神经网络的配网故障测距方法 |
CN102542335A (zh) * | 2011-06-16 | 2012-07-04 | 广州市龙泰信息技术有限公司 | 一种混合数据挖掘方法 |
CN102497156B (zh) * | 2011-12-27 | 2015-04-29 | 东南大学 | 永磁同步电机速度环的神经网络自校正控制方法 |
US20140310218A1 (en) * | 2013-04-11 | 2014-10-16 | Nec Laboratories America, Inc. | High-Order Semi-RBMs and Deep Gated Neural Networks for Feature Interaction Identification and Non-Linear Semantic Indexing |
CN107545303B (zh) * | 2016-01-20 | 2021-09-07 | 中科寒武纪科技股份有限公司 | 用于稀疏人工神经网络的计算装置和运算方法 |
-
2016
- 2016-04-15 CN CN201811233426.6A patent/CN109358900B/zh active Active
- 2016-04-15 CN CN201610236955.6A patent/CN107301453B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1274435A (zh) * | 1997-10-06 | 2000-11-22 | 美国通控集团公司 | 无模型自适应过程控制 |
CN101625735A (zh) * | 2009-08-13 | 2010-01-13 | 西安理工大学 | 基于ls-svm分类和回归学习递归神经网络的fpga实现方法 |
CN101963983A (zh) * | 2010-09-28 | 2011-02-02 | 江苏瑞蚨通软件科技有限公司(中外合资) | 一种粗集优化神经网络的数据挖掘方法 |
CN103399486A (zh) * | 2013-07-05 | 2013-11-20 | 杭州电子科技大学 | 塑料烘干器温度优化节能控制方法 |
CN103619021A (zh) * | 2013-12-10 | 2014-03-05 | 天津工业大学 | 一种基于神经网络的无线传感器网络入侵检测算法 |
CN104021420A (zh) * | 2014-05-23 | 2014-09-03 | 电子科技大学 | 可编程离散霍普菲尔德网络电路 |
CN105354198A (zh) * | 2014-08-19 | 2016-02-24 | 中国移动通信集团湖北有限公司 | 一种数据处理方法及装置 |
Non-Patent Citations (3)
Title |
---|
CHEN, TS ET AL: "DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning", 《ACM SIGPLAN NOTICES》 * |
JUAN JESUS CARNEROS ET AL: "Data Discretization Using the Extreme Learning Machine Neural Network", 《ICONIP 2012:NEURAL INFORMATION PROCESSING》 * |
YUNJI CHEN ET AL: "DaDianNao: A Machine-Learning Supercomputer", 《2014 47TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》 * |
Cited By (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860811B (zh) * | 2016-04-27 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行人工神经网络全连接层正向运算的装置和方法 |
CN111860811A (zh) * | 2016-04-27 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行人工神经网络全连接层正向运算的装置和方法 |
CN111178521A (zh) * | 2017-10-30 | 2020-05-19 | 上海寒武纪信息科技有限公司 | 计算装置以及方法 |
CN107895191B (zh) * | 2017-10-30 | 2022-02-22 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107844832A (zh) * | 2017-10-30 | 2018-03-27 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107895191A (zh) * | 2017-10-30 | 2018-04-10 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107993206A (zh) * | 2017-10-30 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN108874445A (zh) * | 2017-10-30 | 2018-11-23 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量点积指令的方法 |
CN109003132A (zh) * | 2017-10-30 | 2018-12-14 | 上海寒武纪信息科技有限公司 | 广告推荐方法及相关产品 |
CN109034382A (zh) * | 2017-10-30 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 场景或物体的识别方法及相关产品 |
CN109117947A (zh) * | 2017-10-30 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 轮廓检测方法及相关产品 |
CN109523020A (zh) * | 2017-10-30 | 2019-03-26 | 上海寒武纪信息科技有限公司 | 一种运算装置和方法 |
WO2019085379A1 (zh) * | 2017-10-30 | 2019-05-09 | 北京深鉴智能科技有限公司 | 深度学习softmax分类器的硬件实现电路及其控制方法 |
CN110689126B (zh) * | 2017-10-30 | 2023-04-07 | 上海寒武纪信息科技有限公司 | 一种用于执行神经网络运算的装置 |
CN110084361B (zh) * | 2017-10-30 | 2021-03-23 | 上海寒武纪信息科技有限公司 | 一种运算装置和方法 |
CN110689125A (zh) * | 2017-10-30 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 计算装置 |
CN110084361A (zh) * | 2017-10-30 | 2019-08-02 | 上海寒武纪信息科技有限公司 | 一种运算装置和方法 |
CN111310910A (zh) * | 2017-10-30 | 2020-06-19 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
US11922132B2 (en) | 2017-10-30 | 2024-03-05 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN111291880A (zh) * | 2017-10-30 | 2020-06-16 | 上海寒武纪信息科技有限公司 | 计算装置以及计算方法 |
CN107832845A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN111160549A (zh) * | 2017-10-30 | 2020-05-15 | 上海寒武纪信息科技有限公司 | 互连电路的数据处理装置以及方法 |
CN111160548A (zh) * | 2017-10-30 | 2020-05-15 | 上海寒武纪信息科技有限公司 | 计算装置以及计算方法 |
CN107832804A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107832843B (zh) * | 2017-10-30 | 2021-09-21 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107832843A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN111310910B (zh) * | 2017-10-30 | 2023-06-30 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN107833176A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN111160548B (zh) * | 2017-10-30 | 2024-01-12 | 上海寒武纪信息科技有限公司 | 计算装置以及计算方法 |
CN110689126A (zh) * | 2017-10-30 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种用于执行神经网络运算的装置 |
US11762631B2 (en) | 2017-10-30 | 2023-09-19 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN109961136B (zh) * | 2017-12-14 | 2020-05-19 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN109961136A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109978157B (zh) * | 2017-12-28 | 2020-06-02 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN109978157A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109993276A (zh) * | 2017-12-29 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络反向训练的装置和方法 |
CN110163358A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163355A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163355B (zh) * | 2018-02-13 | 2020-10-09 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163354B (zh) * | 2018-02-13 | 2020-10-09 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163358B (zh) * | 2018-02-13 | 2021-01-05 | 安徽寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163354A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110196734A (zh) * | 2018-02-27 | 2019-09-03 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN110472734B (zh) * | 2018-05-11 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN110472734A (zh) * | 2018-05-11 | 2019-11-19 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN110728364A (zh) * | 2018-07-17 | 2020-01-24 | 上海寒武纪信息科技有限公司 | 一种运算装置和运算方法 |
CN111026440A (zh) * | 2018-10-09 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111026440B (zh) * | 2018-10-09 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111124497A (zh) * | 2018-10-11 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047021A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111047022A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111047022B (zh) * | 2018-10-12 | 2023-11-24 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN111047021B (zh) * | 2018-10-12 | 2023-11-24 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN110096309B (zh) * | 2018-11-14 | 2020-04-14 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096310B (zh) * | 2018-11-14 | 2021-09-03 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096310A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096309A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110309911A (zh) * | 2019-07-05 | 2019-10-08 | 北京中科寒武纪科技有限公司 | 神经网络模型验证方法、装置、计算机设备和存储介质 |
CN111104513B (zh) * | 2019-12-13 | 2023-05-02 | 中山大学 | 一种游戏平台用户问答业务的短文本分类方法 |
CN111104513A (zh) * | 2019-12-13 | 2020-05-05 | 中山大学 | 一种游戏平台用户问答业务的短文本分类方法 |
CN113626079A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN113626083A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
CN113626083B (zh) * | 2020-05-08 | 2023-10-13 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
WO2021223639A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
WO2021223642A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
WO2021223643A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN109358900A (zh) | 2019-02-19 |
CN109358900B (zh) | 2020-07-03 |
CN107301453B (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107301453A (zh) | 支持离散数据表示的人工神经网络正向运算装置和方法 | |
CN107301454A (zh) | 支持离散数据表示的人工神经网络反向训练装置和方法 | |
CN107807819A (zh) | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 | |
CN109117948B (zh) | 画风转换方法及相关产品 | |
CN110188870B (zh) | 用于执行人工神经网络自学习运算的装置和方法 | |
CN107315571A (zh) | 一种用于执行全连接层神经网络正向运算的装置和方法 | |
CN107704267A (zh) | 一种卷积神经网络运算指令及其方法 | |
CN108510064A (zh) | 包括多个核心处理模块的人工神经网络的处理系统及方法 | |
CN107341547A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN107341542A (zh) | 用于执行循环神经网络和lstm运算的装置和方法 | |
CN107341541A (zh) | 一种用于执行全连接层神经网络训练的装置和方法 | |
EP0421639B1 (en) | Parallel data processing system | |
EP3444757B1 (en) | Discrete data representation supported device and method for forward operation of artificial neural network | |
CN106991476A (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
CN108320018A (zh) | 一种人工神经网络运算的装置及方法 | |
CN110163359A (zh) | 一种计算装置及方法 | |
CN110276447A (zh) | 一种计算装置及方法 | |
CN109389208A (zh) | 数据的量化装置及量化方法 | |
EP3444758B1 (en) | Discrete data representation-supporting apparatus and method for back-training of artificial neural network | |
CN111178492B (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
CN109993276A (zh) | 用于执行人工神经网络反向训练的装置和方法 | |
CN110097181A (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
CN117634577A (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 |
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. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |