首页 / 专利库 / 电脑编程 / 算法 / 一种人工神经网络运算的装置及方法

一种人工神经网络运算的装置及方法

阅读:997发布:2021-09-19

专利汇可以提供一种人工神经网络运算的装置及方法专利检索,专利查询,专利分析的服务。并且一种 人工神经网络 运算的装置及方法,人工神经网络运算的装置包括:映射单元,接收输入神经元和权值,产生输入神经元和输出神经元的连接关系数据,输出映射后的输入神经元和权值,所述映射后的输入神经元和权值的对应关系为输入神经元‑权值对,所述映射单元包括:第一映射单元,用于去除值为0或小于第一 阈值 的权值;和/或第二映射单元,用于去除值为0或小于第二阈值的输入神经元。,下面是一种人工神经网络运算的装置及方法专利的具体信息内容。

1.一种人工神经网络运算的装置,用于接受来自CPU(40)的数据和程序,执行人工神经网络运算算法,并将执行结果传输回CPU(40),所述人工神经网络运算的装置包括:
映射单元(1),接收输入神经元和权值,产生输入神经元和输出神经元的连接关系数据,输出映射后的输入神经元和权值,所述映射后的输入神经元和权值的对应关系为输入神经元-权值对,所述映射单元(1)包括:
第一映射单元(11),用于去除值为0或小于第一阈值的权值,
第一映射单元(11)包括:
第一映射判断单元(111),用于判断每一输入的权值的值是否为0或小于第一阈值;以及
第一映射执行单元(112),基于所述第一映射判断单元(111)的判断结果产生所述连接关系数据,去除值为0或小于第一阈值的权值,输出所述输入神经元-权值对,其中,神经网络的输入层具有N个输入神经元I1,I2,...,IN,输出层具有M个输出神经元O1,O2,...,OM,所述第一映射单元(11)的第一映射执行单元(112)产生所述连接关系数据包括:
对第j个输出神经元Oj得到其对应的连接关系数据,对应于输入层的N个节点,所述接关系数据有N位,初始时,所述N位的值都置为1,N个输入神经元I1,I2,...,IN与输出神经元Oj之间均有连接,若第i个输入神经元Ii与输出神经元Oj之间的权值的值为0或小于第一阈值,将该连接关系数据中第i位的值置为0,Ii与Oj之间无连接,将所有的输出神经元O1,O2,...,OM的连接关系数据拼合为一个向量,该向量的第N×(j-1)+1个分量到第N×j个分量为输出神经元Oj对应的连接关系数据,或者
对第j个输出神经元Oj得到其对应的连接关系数据,若第i个输入神经元Ii与输出神经元Oj之间的权值的值为0或小于第一阈值,则Ii与Oj之间无连接,否则有连接,与Oj有连接的n个输入神经元为Ii_1,Ii_2,...,Ii_n,其中1≤i_11,
所述人工神经网络运算的装置还包括:
存储单元(2),用于存储外界输入的数据及指令,所述数据包括输入神经元和权值,所述映射单元(1)调取所述输入神经元和权值并输出映射后的输入神经元和权值;以及运算单元(8),用于调取所述映射后的输入神经元和权值并进行运算获得输出神经元。
2.根据权利要求1所述的装置,还包括第二映射单元(12),用于去除值为0或小于第二阈值的输入神经元,
第二映射单元(12)包括:
第二映射判断单元(121),用于判断每一输入的输入神经元的值是否为0或小于第二阈值;以及
第二映射执行单元(122),基于所述第二映射判断单元(121)的判断结果产生所述连接关系数据,去除值为0或小于第二阈值的输入神经元,输出所述输入神经元-权值对。
3.根据权利要求2所述的装置,其中,神经网络的输入层具有N个输入神经元I1,I2,...,IN,输出层具有M个输出神经元O1,O2,...,OM,所述第二映射单元(12)的第二映射执行单元(122)产生所述连接关系数据包括:
对第j个输出神经元Oj得到其对应的连接关系数据,对应于输入层的N个节点,所述连接关系数据有N位,初始时,所述N位的值都置为1,N个输入神经元I1,I2,...,IN与输出神经元Oj之间均有连接,若第i个输入神经元Ii的值为0或小于第二阈值,将该连接关系数据中第i位的值置为0,Ii与Oj之间无连接,将所有的输出神经元O1,O2,...,OM的连接关系数据拼合为一个向量,该向量的第N×(j-1)+1个分量到第N×j个分量为输出神经元Oj对应的连接关系数据。
4.根据权利要求2所述的装置,其中,神经网络的输入层具有N个输入神经元I1,I2,...,IN,输出层具有M个输出神经元O1,O2,...,OM,所述第二映射单元(12)的第二映射执行单元(122)产生所述连接关系数据包括:
对第j个输出神经元Oj得到其对应的连接关系数据,若第i个输入神经元Ii的值为0或小于第二阈值,则Ii与Oj之间无连接,否则有连接,与Oj有连接的n个输入神经元为Ii_1,Ii_2,...,Ii_n,其中1≤i_11。
5.根据权利要求1所述的装置,其中,所述运算单元(8)包括:
乘法运算单元;
至少一个加法器;和/或
非线性变换单元。
6.根据权利要求1所述的装置,还包括:
指令缓存单元(4),用于缓存所述指令;
输入神经元缓存(6),用于缓存所述映射后的输入神经元;
权值缓存(7),用于缓存所述映射后的权值;
控制单元(5),用于读取所述指令缓存单元(4)中的指令,并控制所述运算单元(8)调取所述输入神经元缓存(6)中的所述映射后的输入神经元和所述权值缓存(7)中所述映射后的权值并进行运算;以及
输出神经元缓存(9),用于缓存所述运算单元(8)获得的所述输出神经元。
7.根据权利要求6所述的装置,其中,所述映射单元(1)输出的映射后的输入神经元和权值存储在所述存储单元(2)上,所述装置还包括:
DMA(3),用于调取存储单元(2)上的指令及映射后的输入神经元和权值分别存储至所述指令缓存单元(4)、输入神经元缓存(6)、权值缓存(7),并将所述输出神经元缓存(9)中的所述输出神经元存储至存储单元(2)上用于传输至外界。
8.根据权利要求6所述的装置,其中,所述装置还包括:
DMA(3),用于调取存储单元(2)上的指令存储至所述指令缓存单元(4),并调取存储单元(2)上的数据至映射单元(1),所述映射单元(1)输出的映射后的输入神经元和权值分别存储至输入神经元缓存(6)、权值缓存(7),并将所述输出神经元缓存(9)中的所述输出神经元存储至存储单元(2)上用于传输至外界。
9.一种人工神经网络运算的方法,包括权利要求5至8中任一所述的装置,所述方法包括:
映射单元(1)调取所述存储单元(2)中的所述输入神经元和权值并输出映射后的输入神经元和权值;
运算单元(8)调取所述映射后的输入神经元和权值并进行运算获得输出神经元。
10.根据权利要求9所述的方法,其中,所述运算包括:
乘法运算;
加法运算;和/或
非线性变换。
11.根据权利要求9所述的方法,所述方法还包括:
所述映射单元(1)调取所述存储单元(2)中的全部的所述输入神经元和权值并输出映射后的输入神经元和权值,并存储至所述存储单元(2);
输入神经元缓存(6)、权值缓存(7)通过DMA(3)读取部分所述映射后的输入神经元和权值,并被运算单元(8)调取;
输出神经元缓存(9)缓存所述运算单元(8)获得的所述输出神经元,并通过DMA(3)存储至所述存储单元(2);
判断所述输入神经元和权值是否均经过运算,若是,运算结束,否则,返回输入神经元缓存(6)、权值缓存(7)通过DMA(3)读取部分所述映射后的输入神经元和权值的步骤。
12.根据权利要求9所述的方法,所述方法还包括:
所述映射单元(1)通过DMA(3)调取所述存储单元(2)中的部分的所述输入神经元和权值并输出映射后的输入神经元和权值;
输入神经元缓存(6)、权值缓存(7)缓存所述映射后的输入神经元和权值,并被运算单元(8)调取;
输出神经元缓存(9)缓存所述运算单元(8)获得的所述输出神经元,并通过DMA(3)存储至所述存储单元(2);
判断所述输入神经元和权值是否均经过映射及运算,若是,运算结束,否则,返回映射单元(1)通过DMA(3)调取所述存储单元(2)中的部分的所述输入神经元和权值的步骤。
13.一种芯片,其中,所述芯片包括权利要求1至8中任一所述的人工神经网络运算的装置。
14.一种电子装置,其中,所述电子装置包括权利要求13所述的芯片。

说明书全文

一种人工神经网络运算的装置及方法

技术领域

[0001] 本发明涉及数据处理技术领域,更具体地涉及一种人工神经网络运算的装置和方法。

背景技术

[0002] 人工神经网络(Artificial Neural Networks,ANNs)简称为神经网络(NNs),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间的相互连接关系数据,从而达到处理信息的目的。神经网络用到的算法就是向量乘法,并且广泛采用符号函数及其各种逼近。
[0003] 神经网络被广泛应用于各种应用场景:计算视觉、语音识别自然语言处理等。在近几年的时间里,神经网络的规模一直在增长。在1998年,Lecun用于手写字符识别的神经网络的规模小于1M个权值;在2012年,krizhevskV用于参加ImageNet竞赛的规模是60M个权值。
[0004] 神经网络是一个高计算量和高访存的应用,权值越多,计算量和访存量都会增大。随着神经网络计算量和访存量的急剧增大,现有技术中通常采用通用处理器计算人工神经网络。对于通用处理器,输入神经元、输出神经元和权重分别存储在三个数组中,同时还有一个索引数组,索引数组存储了每个输出和输入连接的连接关系数据。在计算时,主要的运算是神经元与权值相乘。由于权值和神经元不是一一对应的关系,所以每一次运算都要通过索引数组找到神经元对应的权值。由于通用处理器计算能和访存能力都很弱,满足不了神经网络的需求。而多个通用处理器并行执行时,通用处理器之间相互通讯又成为了性能瓶颈。在计算剪枝之后的神经网络时,每次乘法运算都要去索引数组里重新查找权值对应的位置,增加了额外的计算量和访存开销。因此计算神经网络耗时长,功耗高。通用处理器需要把多层人工神经网络运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销。
[0005] 另一种支持人工神经网络运算及其训练算法的已知方法是使用图形处理器(GPU),该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。但由于GPU是专用来执行图形图像运算以及科学计算的设备,没有对人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。

发明内容

[0006] 鉴于现有方案存在的问题,为了克服上述现有技术方案的不足,本发明提出了一种人工神经网络运算的装置和方法。
[0007] 根据本发明的一方面,提供一种人工神经网络运算的装置,包括:映射单元,接收输入神经元和权值,产生输入神经元和输出神经元的连接关系数据,输出映射后的输入神经元和权值,所述映射后的输入神经元和权值的对应关系为输入神经元-权值对,所述映射单元包括:第一映射单元,用于去除值为0或小于第一阈值的权值;和/或第二映射单元,用于去除值为0或小于第二阈值的输入神经元。
[0008] 在一些实施例中,第一映射单元包括:第一映射判断单元,用于判断每一输入的权值的值是否为0或小于第一阈值;以及第一映射执行单元,基于所述第一映射判断单元的判断结果产生所述连接关系数据,去除值为0或小于第一阈值的权值,输出所述输入神经元-权值对;和/或第二映射单元包括:第二映射判断单元,用于判断每一输入的输入神经元的值是否为0或小于第二阈值;以及第二映射执行单元,基于所述第二映射判断单元的判断结果产生所述连接关系数据,去除值为0或小于第二阈值的输入神经元,输出所述输入神经元-权值对。
[0009] 在一些实施例中,神经网络的输入层具有N个输入神经元I1,I2,...,IN,输出层具有M个输出神经元O1,O2,...,OM,所述第一映射单元的第一映射执行单元产生所述连接关系数据包括:对第j个输出神经元Oj得到其对应的连接关系数据,对应于输入层的N个节点,所述接关系数据有N位,初始时,所述N位的值都置为1,N个输入神经元I1,I2,...,IN与输出神经元Oj之间均有连接,若第i个输入神经元Ii与输出神经元Oj之间的权值的值为0或小于第一阈值,将该连接关系数据中第i位的值置为0,Ii与Oj之间无连接,将所有的输出神经元O1,O2,...,OM的连接关系数据拼合为一个向量,该向量的第N×(j-1)+1个分量到第N×j个分量为输出神经元oj对应的连接关系数据。
[0010] 在一些实施例中,神经网络的输入层具有N个输入神经元I1,I2,...,IN,输出层具有M个输出神经元O1,O2,...,OM,所述第一映射单元的第一映射执行单元产生所述连接关系数据包括:对第j个输出神经元Oj得到其对应的连接关系数据,若第i个输入神经元Ii与输出神经元Oj之间的权值的值为0或小于第一阈值,则Ii与Oj之间无连接,否则有连接,与Oj有连接的n个输入神经元为Ii_1,Ii_2,...,Ii_n,其中1≤i_1<i_2<...<i_n≤N,输出神经元Oj对应的连接关系数据有n位,第1位值等于i_1-1,连接关系数据第k位的值等于i_k-i_(k-1),其中,n≥k>1。
[0011] 在一些实施例中,神经网络的输入层具有N个输入神经元I1,I2,...,IN,输出层具有M个输出神经元O1,O2,...,OM,所述第二映射单元的第二映射执行单元产生所述连接关系数据包括:对第j个输出神经元Oj得到其对应的连接关系数据,对应于输入层的N个节点,所述连接关系数据有N位,初始时,所述N位的值都置为1,N个输入神经元I1,I2,...,IN与输出神经元Oj之间均有连接,若第i个输入神经元Ii的值为0或小于第二阈值,将该连接关系数据中第i位的值置为0,Ii与Oj之间无连接,将所有的输出神经元O1,O2,...,OM的连接关系数据拼合为一个向量,该向量的第N×(j-1)+1个分量到第N×j个分量为输出神经元Oj对应的连接关系数据。
[0012] 在一些实施例中,神经网络的输入层具有N个输入神经元I1,I2,...,IN,输出层具有M个输出神经元O1,O2,...,OM,所述第二映射单元的第二映射执行单元产生所述连接关系数据包括:对第j个输出神经元Oj得到其对应的连接关系数据,若第i个输入神经元Ii的值为0或小于第二阈值,则Ii与Oj之间无连接,否则有连接,与Oj有连接的n个输入神经元为Ii_1,Ii_2,...,Ii_n,其中1≤i_1<i_2<...<i_n≤N,输出神经元oj对应的连接关系数据有n位,第1位值等于i_1-1,连接关系数据第k位的值等于i_k-i_(k-1),其中,n≥k>1。
[0013] 在一些实施例中,人工神经网络运算的装置还包括:存储单元,用于存储外界输入的数据及指令,所述数据包括输入神经元和权值,所述映射单元调取所述输入神经元和权值并输出映射后的输入神经元和权值;运算单元,用于调取所述映射后的输入神经元和权值并进行运算获得输出神经元。
[0014] 在一些实施例中,所述运算装置包括:乘法运算单元;至少一个加法器;和/或非线性变换单元。
[0015] 在一些实施例中,人工神经网络运算的装置还包括:指令缓存单元,用于缓存所述指令;输入神经元缓存,用于缓存所述映射后的输入神经元;权值缓存,用于缓存所述映射后的权值;控制单元,用于读取所述指令缓存单元中的指令,并控制所述运算单元调取所述输入神经元缓存中的所述映射后的输入神经元和所述权值缓存中所述映射后的权值并进行运算;以及输出神经元缓存,用于缓存所述运算单元获得的所述输出神经元。
[0016] 在一些实施例中,所述映射单元输出的映射后的输入神经元和权值存储在所述存储单元上,所述装置还包括:DMA,用于调取存储单元上的指令及映射后的输入神经元和权值分别存储至所述指令缓存单元、输入神经元缓存、权值缓存,并将所述输出神经元缓存中的所述输出神经元存储至存储单元上用于传输至外界。
[0017] 在一些实施例中,人工神经网络运算的装置还包括:DMA,用于调取存储单元上的指令存储至所述指令缓存单元,并调取存储单元上的数据至映射单元,所述映射单元输出的映射后的输入神经元和权值分别存储至输入神经元缓存、权值缓存,并将所述输出神经元缓存中的所述输出神经元存储至存储单元上用于传输至外界。
[0018] 根据本发明的另一方面,提供一种人工神经网络运算的方法,包括人工神经网络运算的装置,所述方法包括:映射单元调取所述存储单元中的所述输入神经元和权值并输出映射后的输入神经元和权值;运算装置调取所述映射后的输入神经元和权值并进行运算获得输出神经元。
[0019] 在一些实施例中,所述运算包括:乘法运算;加法运算;和/或非线性变换。
[0020] 在一些实施例中,所述方法还包括:所述映射单元调取所述存储单元中的全部的所述输入神经元和权值并输出映射后的输入神经元和权值,并存储至所述存储单元;输入神经元缓存、权值缓存通过DMA读取部分所述映射后的输入神经元和权值,并被运算单元调取;输出神经元缓存缓存所述运算单元获得的所述输出神经元,并通过DMA存储至所述存储单元;判断所述输入神经元和权值是否均经过运算,若是,运算结束,否则,返回输入神经元缓存、权值缓存通过DMA读取部分所述映射后的输入神经元和权值的步骤。
[0021] 在一些实施例中,所述方法还包括:所述映射单元通过DMA调取所述存储单元中的部分的所述输入神经元和权值并输出映射后的输入神经元和权值;输入神经元缓存、权值缓存缓存所述映射后的输入神经元和权值,并被运算单元调取;输出神经元缓存缓存所述运算单元获得的所述输出神经元,并通过DMA存储至所述存储单元;判断所述输入神经元和权值是否均经过映射及运算,若是,运算结束,否则,返回映射单元通过DMA调取所述存储单元中的部分的所述输入神经元和权值的步骤。
[0022] 根据本发明的再一方面,提供一种芯片,所述芯片包括所述的人工神经网络运算的装置。
[0023] 根据本发明的又一方面,提供一种电子装置,其中,所述电子装置包括所述的芯片。
[0024] 从上述技术方案可以看出,本发明具有以下有益效果:
[0025] (1)通过第一映射单元和/或第二映射单元,产生输入神经元和权值的连接关系数据,减少了计算量,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;
[0026] (2)通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。附图说明
[0027] 图1为本发明实施例中映射单元的结构示意图;
[0028] 图2为本发明实施例中一个人工神经网络的结构示意图;
[0029] 图3为图2中的人工神经网络经第一映射后的第一个输出神经元的第一连接方式示意图;
[0030] 图4为图2中的人工神经网络经第一映射后的第一个输出神经元的第二连接方式示意图;
[0031] 图5为本发明一实施例的人工神经网络运算的装置的结构示意图;
[0032] 图6为图5中人工神经网络运算的装置的运算方法的流程图
[0033] 图7为图6中运算单元运算步骤的流程图;
[0034] 图8为本发明另一实施例的人工神经网络运算的装置的结构示意图;
[0035] 图9为图8中人工神经网络运算的装置的运算方法的流程图;
[0036] 图10为本发明又一实施例的人工神经网络运算的系统的结构示意图。

具体实施方式

[0037] 本发明某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本发明的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本发明满足适用的法律要求。
[0038] 在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。
[0039] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0040] 本发明实施例提供了一种人工神经网络运算的装置,其包括映射单元,产生连接关系数据并输出映射后的输入神经元和权值,映射后的输入神经元和权值的对应关系为输入神经元-权值对,降低了人工神经网络运算的运算量,实现了快速运算的人工神经网络运算。
[0041] 所述输入神经元-权值对不是一种真正的数据存储结构,仅仅是表示输入神经元和权值的对应关系。例如,输入神经元存储于向量A中,权值存储于向量B中,向量A和B的长度相同,向量A和B的同一位置的分量组合在一起被认为是一个输入神经元-权值对。在参与运算时,输入神经元和权值可以分开放置于不同缓存中,被运算单元使用。
[0042] 图1为本发明实施例中映射单元的结构示意图,如图1所示,输入数据包括输入神经元和权值,输入数据输入映射单元1,由映射单元1输出映射后的输入神经元和权值,映射后的输入神经元和权值的对应关系为输入神经元-权值对。
[0043] 映射单元包括第一映射单元11和/或第二映射单元12,第一映射单元11用于执行第一映射操作,可以用于去除值为0或小于第一阈值α’的权值,可选地,第一阈值α’满足0<α′<0.2,例如为0.1、0.08、0.05、0.02、0.01还可以用于去除绝对值小于或等于第一阈值α的权值,可选地,第一阈值α满足0≤α<0.2,例如为0、0.1、0.08、0.05、0.02、0.01。第二映射单元12用于执行第二映射操作,相应地,可以用于去除值为0或小于第二阈值β’的输入神经元,可选地,第二阈值β’满足0<β′<0.2,例如为0.1、0.08、0.05、0.02、0.01,还可以用于去除绝对值小于或等于第二阈值的输入神经元,可选地,第二阈值β满足0≤β<0.2,例如为0、0.1、0.08、0.05、0.02、0.01。这里提到的两个阈值α与β可以相等,也可以不相等。以下描述仅以第一映射操作去除绝对值小于或等于第一阈值α的权值,第二映射操作去除绝对值小于或等于第二阈值β的输入神经元来进行解释说明。
[0044] 第一映射单元11包括第一映射判断单元111及第一映射执行单元112,第一映射判断单元111判断每一输入的权值的绝对值是否小于或等于第一阈值α。基于第一映射判断单元的结果,第一映射执行单元112产生连接关系数据,根据产生的连接关系数据将输入数据转换成输入神经元-权值对。
[0045] 所述第一映射单元11的第一映射执行单元112产生的连接关系数据可以采用以下两种方式表示:
[0046] 第一种方式:
[0047] 采用1表示输入神经元与输出神经元之间的权值的绝对值大于第一阈值α,保留该输入神经元与输出神经元间的连接,0表示权值的绝对值小于或等于第一阈值α,去除该输入神经元与输出神经元间的连接,每个输出神经元与所有输入神经元的连接组成一个0和1的字符串来表示该输出神经元的连接关系数据,并将所有输出神经元的连接关系数据拼合成一个向量。
[0048] 第二种方式:
[0049] 根据权值的绝对值是否大于第一阈值α对连接进行保留/去除,若大于,则保留,否则去除。将一输出第一个连接所在的位置距离第一个输入神经元的距离、所述输出第二个输入神经元距离上一个输入神经元的距离,所述输出第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出神经元的连接关系数据。
[0050] 第二映射单元12包括第二映射判断单元121和第二映射执行单元122,第二映射判断单元121判断每一输入的输入神经元的绝对值是否小于或等于第二阈值β。基于第二映射判断单元的结果,则第二映射执行单元122产生连接关系数据,根据产生的连接关系数据将输入数据转换成输入神经元-权值对。
[0051] 其中,所述第二映射单元12中的第一映射执行单元122产生的连接关系数据亦可以采用以下两种方式表示:
[0052] 第一种方式:
[0053] 采用1表示输入神经元的绝对值大于第二阈值β,保留该输入神经元与输出神经元间的连接,0表示输入神经元的绝对值小于或等于第二阈值β,去除该输入神经元与输出神经元间的连接,每个输出神经元与其所有输入神经元组成一个0和1的字符串来表示该输出神经元的连接关系数据,并将所有输出神经元的连接关系数据拼合成一个向量。
[0054] 第二种方式:
[0055] 根据输入神经元的绝对值是否大于第二阈值β对连接进行保留/去除,若大于,则保留,否则去除。将一输出神经元第一个连接所在的位置距离第一个输入神经元的距离、所述输出神经元第二个输入神经元距离上一个输入神经元的距离,所述输出神经元第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出神经元的连接关系数据。
[0056] 具体地,设一个神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,第K+1层称为输出层。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层,每层神经元的个数是预知的。
[0057] 假设第一映射单元和第二映射单元都执行相应的操作,每一对输入层与输出层之间的运算过程如下:
[0058] 设输入层由N个输入神经元I1,I2,...,IN组成,输出层由M个输出神经元O1,O2,...,OM组成。
[0059] i=1,2,...,N,j=1,2,...,M
[0060] 第一种连接方式:
[0061] 首先,对每个输出神经元Oj得到其对应的连接关系数据。由于输入层有N个节点,所以该连接关系数据有N位,每一位的值为1或0,第i位值为1表示Ii与Oj之间有连接,0表示Ii与Oj之间无连接。初始时,这N位的值都置为1。如果输入神经元Ii的绝对值小于或等于第二阈值β,或者如果Ii与Oj之间的权值的绝对值小于或等于第一阈值α,则将该连接关系数据中第i位的值置为0,即认为Ii与Oj之间无连接。然后,将所有的输出神经元的连接关系数据拼合为一个向量,该向量的第N×(j-1)+1个分量到第N×j个分量值就是输出神经元oj对应的连接关系数据。
[0062] 该方法中,输入层神经元的个数等于每一个输出神经元对应的连接关系数据的存储位数。所以就算只用最简单的只取0,1值的一维数组,也能清晰地知道每个输出神经元对应的连接关系数据。
[0063] 第二种连接方式:
[0064] 对每个输出神经元Oj得到其对应的连接关系数据。如果输入神经元Ii的绝对值小于或等于第二阈值β,或者如果Ii与Oj之间的权值的绝对值小于或等于第一阈值α,则认为Ii与Oj之间无连接,反之则有连接。若与Oj有连接的输入神经元为Ii_1,Ii_2,...,Ii_n,其中1≤i_1<i_2<...<i_n≤N。则连接关系数据有n位;第1位值等于i_1-1;n≥k>1,连接关系数据第k位的值等于i_k-i_(k-1)。
[0065] 该方法中,连接关系数据可以用高维动态数组,可以用链表等等表示。
[0066] 产生连接关系数据后,映射单元的映射执行单元根据连接关系数据输出映射后的输入神经元和权值,映射后的输入神经元和权值的对应关系为输入神经元-权值对,映射后的输入神经元和权值可以在运算时被直接使用。
[0067] 总之,上述映射单元中,第一映射单元11的第一映射执行单元112和第二映射单元12的第二映射执行单元122基于输入数据产生连接关系数据,并输出映射后的输入神经元和权值,对应的连接关系数据均可采用两种表示形式:一种是每个输入与输出神经元之间都用一位表示是否有连接,另一种是用连接之间的距离来表示每个连接的位置。
[0068] 为了使得这两个映射单元的功能更加明确,以下分别给出这两个单元中的数据操作过程。
[0069] 以图2所示的一个人工神经网络为例,仅以判断标准是取值是否为0进行说明,该人工神经网络有4个输入神经元:I1,I2,I3,I4;有2个输出神经元:O1,O2;把连接的权值分别表示为:W11,W21,W31,W41,W12,W22,W32,W42。设I1的值为0,I2,I3,I4非0;设W21,W12,W42为0,其余权值非0。
[0070] 第一映射单元和第二映射单元可同时对数据进行处理,也可以依次对数据进行处理并且二者的顺序可以互换,下面仅以第一映射单元先对数据进行处理进行说明。
[0071] 采用第一种连接方式表示如下:
[0072] 在第一映射单元11中,如果不执行判断权值的操作:O1,O2的连接关系数据默认为:1111,摆放顺序为11111111;如果执行判断权值的操作,如图3所示,输出神经元O1的连接关系数据为:1011,每一位表示是否与输入有连接,1表示有连接,0表示无连接,输出神经元O2的连接关系数据为0110。在运算时,连接关系数据为0所对应的输入神经元与权值不会进行运算。在存储连接关系数据时,可以按照输出神经元的顺序对连接关系数据进行存储。将每个输出神经元的所有输入依次摆放完,拼合成一向量,上面的例子摆放的顺序为
10110110。
[0073] 在第二映射单元12中,如果不执行判断输入神经元值的操作,O1,O2的连接关系数据及摆放顺序不变;如果执行判断输入神经元值的操作,对于执行了第一映射操作后的图3所示的神经网络,输出神经元O1的连接关系数据为:0011,第一位由1换成0,是因为第一个输入神经元I1值为0,去除了从I1发出的连接,输出神经元O2的连接关系数据为:0110,最终摆放为:00110110。对于未执行第一映射操作的神经网络,输出神经元O1的连接关系数据为:0111,输出神经元O2的连接关系数据为:0111,最终摆放为:01110111。
[0074] 采用第二种连接方式表示如下:
[0075] 在第一映射单元11中,如果不执行判断权值的操作,O1,O2的连接关系数据默认为:0,1,1,1;如果执行判断权值的操作,如图4所示,输出神经元O1与输入神经元I1,I3,I4相连接,那么连接关系数据为0,2,1。0表示第一个连接所在的位置距离第一个输入神经元的距离为0,即第一个输入神经元,2表示第二个输入神经元距离上一个输入神经元的距离为2,即表示第三个输入神经元,1表示第三个输入神经元距离上一个输入神经元的距离为1,即表示第四个输入神经元。同理,O2的连接关系数据为1,1。
[0076] 在第二映射单元12中,如果不执行判断输入神经元值的操作:O1,O2的连接关系数据不变;如果执行判断输入神经元值的操作,对于执行了第一映射操作后的图4所示的神经网络,因为第一个输入神经元I1值为0,去除了从I1发出的连接,故输出神经元O1的连接关系数据为:2,1,输出神经元O2的连接关系数据为:1,1。对于未执行第一映射操作的神经网络,O1,O2的连接关系数据都是:1,1,1。
[0077] 第一映射单元11和第二映射单元12会根据上面得到的连接关系数据,输出映射后的神经元和权值,映射后的神经元和权值的对应关系为输入神经元-权值对,输入神经元-权值对可以在运算时被直接使用,以图2所示的一个人工神经网络中输出神经元O1映射的具体过程为例:
[0078] 输入神经元为:I1,I2,I3,I4,输入权值为:W11,W21,W31,W41,其中I1,W21取0,其余非0。
[0079] 首先,第一映射单元11中,连接关系数据为:1011,或0,2,1。然后,第二映射单元12中,连接关系数据为:0011,或2,1。两个映射单元的映射执行单元根据连接关系数据,输出是去除掉值为0的输入神经元以及从它发出的连接权值,则映射后的输入神经元为I3,I4,映射后的权值为W31,W41,输入神经元-权值对是:I3-W31,I4-W41。例如,用向量的方式对映射后的输入神经元和权值进行存储,则得到的输入神经元向量是(13,14),得到的权值向量是(W31,W41)。
[0080] 尽管上述举例为先利用第一映射单元执行第一映射操作,再利用第二映射单元执行第二映射,最终得到映射后的输入神经元和权值。但是在实际应用中,两个映射单元优选是同时对数据进行操作的,不分先后顺序。
[0081] 本发明实施例中的人工神经网络运算的装置,除了映射单元1,还包括:存储单元2、DMA(直接内存存取)3、指令缓存4、控制单元5、输入神经元缓存6、权值缓存7、运算单元8以及输出神经元缓存9。如图5所示,
[0082] 存储单元2,用于存储数据和指令,其接收并存储外界输入的数据及指令,该数据包括输入神经元和权值。
[0083] 映射单元1调取存储单元2中的输入神经元和权值,并由第一映射单元11执行第一映射操作,由第二映射单元12执行第二映射,映射单元1经过对数据的映射获得映射后的输入神经元和权值,存储至存储单元2中。
[0084] DMA3调用存储单元2中指令及经过映射后的输入神经元和权值,分别分配给指令缓存4、输入神经元缓存6、权值缓存7。
[0085] 控制单元5从指令缓存4中读取专用指令,并将其译码成运算单元指令并输入至运算单元8。
[0086] 运算单元8用于执行具体的运算,其根据运算指令,调取输入神经元缓存6、权值缓存7中的映射后的输入神经元和权值,进行运算。
[0087] 所述运算单元8执行运算包括神经网络计算。
[0088] 在一个实施例里,计算单元包括但不仅限于:第一部分乘法器;第二部分一个或者多个加法器(更具体的,第二个部分的加法器组成加法树);第三部分为激活函数单元;和/或第四部分向量处理单元。更具体的,向量处理单元可以处理向量运算和/或池化运算。第一部分将输入数据1(inl)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法器相加得到输出数据(out)。更具体的,第二部分为加法树时,将输入数据inl通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过称为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法数累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过称为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。向量处理单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
[0089] 所述运算单元执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法运算(更具体的,为加法树运算,用于将输入数据1通过加法树逐级相加),或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。
[0090] 输出神经元缓存9用于存储运算单元获得的输出神经元,再经DMA3存储至存储单元2中,外界可以调取存储至存储单元2中的输出神经元。
[0091] 本实施例还提供了一种人工神经网络运算的方法,如图6所示,包括以下步骤:
[0092] S101:读取人工神经网络SIMD指令,用于开始进行人工神经网络运算的操作。
[0093] S102:映射单元调用存储单元中的全部输入神经元和权值,并对其进行处理,得到映射后的输入神经元和权值,并存储至存储单元。
[0094] 具体的,第一映射单元对输入神经元和权值进行第一映射处理、第二映射单元对输入神经元和权值进行第二映射处理。两种映射单元均可以采用两种连接方式产生连接关系数据,并将输入神经元和输入权值按照连接关系数据输出映射后的神经元和权值,在前已经对两种连接方式及按照连接关系数据输出映射后的神经元和权值进行了详细描述,在此不再进行赘述。
[0095] S103:输入神经元缓存6、权值缓存7通过DMA3读取部分映射后的神经元和权值。
[0096] S104:运算单元调用神经元缓存6、权值缓存7中映射后的输入神经元和权值进行运算,获得输出神经元。
[0097] 具体的运算包括以下步骤,在一实施例中,如图7所示:
[0098] S1041:执行乘法运算,用于将调用映射后的神经元和权值数据相乘;
[0099] S1042:执行加法树运算,将第一阶段得到的结果通过加法树逐级相加,完成向量内积运算;
[0100] S1043:对第二阶段得到的结果进行非线性变换后得到输出神经元,所述非线性变换为激活函数运算,激活函数可以是sigmoid函数、tanh函数、ReLU函数或softmax函数等。
[0101] 在其他实施例中,执行加法树运算并不必然基于第一阶段的结果,直接对输入加法树运算单元的数据进行运算,非线性变换亦并不必然基于第二阶段的结果,可以直接对输入非线性变换单元的数据进行变换。
[0102] S105:运算单元将获得的输出神经元存储至输出神经元缓存9,并经DMA3存储至存储单元2中。
[0103] S106:判断是否所有映射后的神经元和权值运算完毕,若结果为N,则返回步骤S103,若结果为Y,则执行步骤S107。
[0104] S107:结束运算。
[0105] 本发明另一实施例提供了一种人工神经网络运算的装置,其包括映射单元1、存储单元2、DMA(直接内存存取)3、指令缓存4、控制单元5、输入神经元缓存6、权值缓存7、运算单元8以及输出神经元缓存9,如图8所示,
[0106] 存储单元2,用于存储数据和指令,其接收并存储外界输入的数据及指令,该数据包括输入神经元和权值。
[0107] DMA3调用存储单元2中的指令分配给指令缓存4,调用存储单元2中的输入神经元和权值分配给映射单元1直接用于映射。
[0108] 映射单元1由第一映射单元11执行第一映射操作,由第二映射单元12执行第二映射,映射单元1经过对数据的映射获得映射后的输入神经元和权值,分别传输给神经元缓存6、权值缓存7。
[0109] 控制单元5从指令缓存4中读取专用指令,并将其译码成运算单元指令并输入至运算单元8。
[0110] 运算单元8用于执行具体的运算,其根据运算指令,调取输入神经元缓存6、权值缓存7中的映射后的输入神经元和权值,进行运算。在前已对运算单元8做出了详细描述,在此不再赘述。
[0111] 输出神经元缓存9用于存储运算单元获得的输出神经元,再经DMA3存储至存储单元2中,外界可以调取存储至存储单元2中的输出神经元。
[0112] 本实施例还提供了一种人工神经网络运算的方法,如图9所示,包括以下步骤:
[0113] S201:读取人工神经网络SIMD指令,用于开始进行人工神经网络运算的操作。
[0114] S202:映射单元通过DMA3调用存储单元中的部分输入神经元和权值,并对其进行处理,得到映射后的输入神经元和权值分别直接存入神经元缓存6、权值缓存7。
[0115] 具体的,第一映射单元对输入神经元和权值进行第一映射处理、第二映射单元对输入神经元和权值进行第二映射处理。两种映射单元均可以采用两种连接方式产生连接关系数据,并将输入神经元和输入权值按照连接关系数据输出映射后的神经元和权值,在前已经对两种连接方式及按照连接关系数据输出映射后的神经元和权值进行了详细描述,在此不再进行赘述。
[0116] S203:运算单元调用神经元缓存6、权值缓存7中映射后的输入神经元和权值进行运算,获得输出神经元。
[0117] 具体的运算步骤与前一实施例中步骤S104的运算步骤相同,再次不在赘述。
[0118] S204:运算单元将获得的输出神经元存储至输出神经元缓存9,并经DMA3存储至存储单元2中。
[0119] S205:判断是否所有输入神经元和权值均经过映射及运算,若结果为N,则返回步骤S102,若结果为Y,则执行步骤S107。
[0120] S206:结束运算。
[0121] 本实施例相较于上一实施例,本实施例中映射单元的第一映射单元和第二映射单元是在计算中进行映射,将映射好的数据直接给运算单元进行运算,而上一实施例,在运算单元计算之前事先利用映射单元的第一映射单元和第二映射单元映射好的数据存储在存储单元中,本实施例,运算速度更快。
[0122] 本发明又一实施例提供一种人工神经网络运算的系统,如图10所示,其包括:I/O接口20、存储装置30、中央处理器(CPU)40以及人工神经网络运算的装置10。
[0123] I/O接口20,用于I/O数据需要经过CPU 40发给人工神经网络运算的装置10,然后由人工神经网络运算的装置10写入存储装置30,人工神经网络运算装置10需要的专用指令也是由CPU40传输到人工神经网络运算装置10。
[0124] 存储装置30用于暂存人工神经网络模型和神经元数据,特别是当全部模型无法在人工神经网络运算的装置10上的缓存中放下时。
[0125] 中央处理器(CPU)40,用于进行数据搬运以及人工神经网络运算的装置10启动停止等基本控制,作为人工神经网络运算的装置10与外部控制的接口。
[0126] 人工神经网络运算的装置10,用于接受来自CPU 40的数据和程序,执行人工神经网络运算算法,人工神经网络运算的装置10的执行结果将传输回CPU40。
[0127] 本实施例中将支持人工神经网络运算的装置10作为CPU 40或者GPU的协处理器来执行人工神经网络运算算法。
[0128] 本发明再一实施例中,多个人工神经网络运算的装置互联构成系统:多个人工神经网络运算的装置可以通过PCIE总线互联,以支持更大规模的人工神经网络运算,可以共用同一个宿主CPU或者分别有自己的宿主CPU,可以共享内存也可以每个加速器有各自的内存。此外其互联方式可以是任意互联拓扑。
[0129] 人工神经网络运算的系统可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标键盘,网卡,wifi接口。
[0130] 在一个实施例里,本披露公开了一个芯片,其包括了人工神经网络运算的装置或人工神经网络运算的系统。
[0131] 在一个实施例里,本披露公开了一个芯片封装结构,其包括了上述芯片。
[0132] 在一个实施例里,本披露公开了一个板卡,其包括了上述芯片封装结构。
[0133] 在一个实施例里,本披露公开了一个电子装置,其包括了上述板卡。
[0134] 电子装置可包括数据处理装置、机器人、电脑、打印机扫描仪平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0135] 所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调微波炉、箱、电饭煲、加湿器洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0136] 检验是否使用本发明中所述技术方案的方式如下:
[0137] 如果采用了本发明所述技术的装置或方法,在进行神经网络运算时,对于一个给定的神经网络,如果网络中有部分输入神经元和权值的绝对值等于0或在0附近,则在运算速度上,比不采用本发明所述技术的装置或方法有所提升。而且绝对值等于0或在0附近的输入神经元占网络中所有输入神经元的比例越大,运算速度提升越大;绝对值等于0或在0附近的权值占网络中所有权值的比例越大,运算速度提升越大。
[0138] 前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路专用逻辑等)、固件软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
[0139] 需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
[0140] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈