计算装置和方法与流程

文档序号:13446962阅读:181来源:国知局
计算装置和方法与流程

本公开涉及数据处理技术领域,更具体地涉及一种计算装置和方法。



背景技术:

人工神经网络(artificialneuralnetworks,anns)简称为神经网络(nns),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间的相互连接关系,从而达到处理信息的目的。神经网络用到的算法就是向量乘法,并且广泛采用符号函数及其各种逼近。

就像大脑里的神经网络一样,神经网络由一些互相连接的节点组成,如图1所示,每个圆圈表示一个神经元,每个箭头表示两个神经元之间的连接又被称为权值。

神经元的计算公式可以简单的描述成:其中,x表示所有和输出神经元相连接的输入神经元,w表示x和输出神经元之间对应的权值。f(x)是一个非线性函数,通常称作激活函数,常用的函数如:等。

神经网络被广泛应用于各种应用场景:计算视觉、语音识别和自然语言处理等。在近几年的时间里,神经网络的规模一直在增长。在1998年,lecun用于手写字符识别的神经网络的规模小于1m个权值;在2012年,krizhevsky用于参加imagenet竞赛的规模是60m个权值。

神经网络是一个高计算量和高访存的应用,权值越多,计算量和访存量都会增大。为了减小计算量和权值数量,从而降低访存量,出现了稀疏连接的神经网络,如图2所示即为一个稀疏的神经网络。

随着神经网络计算量和访存量的急剧增大,现有技术中通常采用通用处理器计算稀疏的人工神经网络。对于通用处理器,输入神经元、输出神经元和权值分别存储在三个数组中,同时还有一个索引数组,索引数组存储了每个输出神经元和输入神经元通过权值连接的连接关系。在计算时,主要的运算是神经元与权值相乘。每一次运算都要通过索引数组找到神经元对应的权值。由于通用处理器计算能力和访存能力都很弱,满足不了神经网络的需求。而多个通用处理器并行执行时,通用处理器之间相互通讯又成为了性能瓶颈。在计算剪枝之后的神经网络时,每次乘法运算都要去索引数组里重新查找权值对应的位置,增加了额外的计算量和访存开销。因此计算神经网络耗时长,功耗高。通用处理器需要把多层人工神经网络运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销。

另一种支持稀疏连接的人工神经网络运算及其训练算法的已知方法是使用图形处理器(gpu),该方法通过使用通用寄存器堆和通用流处理单元执行通用simd指令来支持上述算法。但由于gpu是专门用来执行图形图像运算以及科学计算的设备,没有对稀疏的人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行稀疏的人工神经网络运算,带来了大量的额外开销。另外gpu只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。



技术实现要素:

有鉴于此,本公开的目的在于提供一种计算装置和方法。

为了实现上述目的,作为本公开的一个方面,本公开提供了一种计算装置,用于接收输入数据并根据输入数据产生输出数据,输入数据包括一个或多个输入神经元数据和一个或多个权值数据,输出数据包括一个或多个输出神经元数据,其特征在于,

所述输入数据还包括连接关系数据,所述连接关系数据表示每个输入神经元数据和每个输出神经元数据是否有对应的符合一条件的权值数据;

所述计算装置包括:

映射单元,用于接收连接关系数据和所述权值数据,然后根据连接关系数据对所述权值数据做映射处理,得到映射后的权值数据;以及

运算单元,用于接收指令对所述输入神经元数据和所述映射后的权值数据执行运算,得到输出神经元数据。

其中,所述符合一条件的权值数据包括非零权值数据。

其中,映射单元根据连接关系数据对所述权值数据做映射处理,得到映射后的权值数据包括:对于每个输出神经元数据,映射单元补上零权值数据,将零权值数据对应到与该输出神经元数据没有对应的非零权值数据的输入神经元数据,将权值数据和零权值数据合并输出。

其中,所述运算单元接收指令对所述输入神经元数据和所述映射后的权值数据执行运算,得到输出神经元数据包括:所述运算单元将所述输入神经元数据和映射后的权值数据相乘,得到加权神经元数据;将加权神经元数据相加得到总加权神经元数据;和/或对总加权神经元数据执行激活函数运算,得到输出神经元数据。

其中,所述运算单元将加权神经元数据相加得到总加权神经元数据包括将加权神经元数据执行加法树运算得到总加权神经元数据。

其中,所述运算单元将总加权神经元数据和偏置相加得到加偏置神经元数据,和/或对加偏置神经元数据执行激活函数运算,得到输出神经元数据。

其中,所述激活函数包括sigmoid函数、tanh函数、或relu函数。

其中,所述计算装置还包括存储装置,用于存储输入数据、输出数据和指令。

其中,映射单元将部分或全部的映射后的权值数据存储在存储装置中。

其中,所述连接关系数据包括:

对于每个输出神经元数据,采用1表示每个输入神经元数据和该输出神经元数据有对应的符合一条件的权值数据,0表示表示每个输入神经元数据和该输出神经元数据没有对应的符合一条件的权值数据,组成一个0和1的字符串来表示该输出神经元数据的连接关系数据;或者

对于每个输入神经元数据,采用1表示表示该输入神经元数据和每个输出神经元数据有对应的符合一条件的权值数据,0表示表示该输入神经元数据和每个输出神经元数据没有对应的符合一条件的权值数据,组成一个0和1的字符串来表示该输入神经元数据的连接关系数据;或者

对于每个输出神经元数据,将第一有对应输入神经元数据所在的位置与第一个输入神经元的距离、第二有对应输入神经元数据所在的位置与第一有对应输入神经元数据的距离,第三有对应输入神经元数据与第二有对应输入神经元数据的距离,……,依次类推,直到穷举所有与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据,来表示所述输出的连接关系数据;其中第一有对应输入神经元数据为第一个与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据,第二有对应输入神经元数据为第二个与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据;第三有对应输入神经元数据为第三个与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据。

其中,所述用于人工神经网络运算的计算装置还包括:

指令缓存,用于存储所述指令;以及

控制单元,用于从所述指令缓存中读取指令,并将读取的指令译码。

其中,所述用于人工神经网络运算的计算装置还包括:输入神经元缓存,用于缓存输入神经元数据;和权值缓存,用于缓存权值数据。

其中,所述用于人工神经网络运算的计算装置还包括:输出神经元缓存,用于缓存输出神经元数据。

其中,所述用于人工神经网络运算的计算装置还包括直接内存存取单元,用于在所述存储装置、指令缓存、输入神经元缓存、输出神经元缓存和权值缓存中进行数据或指令读写。

其中,映射单元将映射后的权值数据存储在权值缓存中。

其中,映射单元将映射后的权值数据直接传输给运算单元。

其中,所述运算单元采用针对稀疏的多层人工神经网络运算的专用simd指令。

作为本公开的另一个方面,本公开还提供了一种包括如上所述的计算装置的稀疏的多层人工神经网络运算装置,其特征在于,还包括cpu或者gpu,用于数据搬运,控制所述计算装置,传输指令给所述计算装置;以及i/o接口,用于处理cpu或gpu的输入/输出;所述运算装置用于接受cpu或者gpu的数据和指令,执行稀疏的多层人工神经网络运算算法得到执行结果,然后将执行结果传输给cpu或gpu;所述存储单元还用于存储稀疏的多层人工神经网络模型。

其中,所述稀疏的多层人工神经网络运算装置包括多个所述计算装置。

其中,多个所述计算装置通过pcie总线互联,多个所述计算装置共用同一个宿主cpu或gpu或者分别有相应的宿主cpu或gpu。

其中,多个所述计算装置共享指令缓存、输入神经元缓存、输出神经元缓存和/或权值缓存。

作为本公开的再一个方面,本公开还提供了一种人工神经网络运算方法,所述方法接收的输入数据包括一个或多个输入神经元数据和一个或多个权值数据,所述方法输出的输出数据包括一个或多个输出神经元数据,其特征在于,

所述方法接收的输入数据还包括连接关系数据,所述连接关系数据表示每个输入神经元数据和每个输出神经元数据是否有对应的符合一条件的权值数据;

所述方法包括:

使用映射单元接收连接关系数据和所述权值数据,然后根据连接关系数据对所述权值数据做映射处理,得到映射后的权值数据;以及

使用运算单元接收指令对所述输入神经元数据和所述映射后的权值数据执行运算,得到输出神经元数据。

其中,所述符合一条件的权值数据包括非零权值数据。

其中,映射单元根据连接关系数据对所述权值数据做映射处理,得到映射后的权值数据包括:对于每个输出神经元数据,映射单元补上零权值数据,将零权值数据对应到与该输出神经元数据没有对应的非零权值数据的输入神经元数据,将权值数据和零权值数据合并输出。

其中,所述运算单元接收指令对所述输入神经元数据和所述映射后的权值数据执行运算,得到输出神经元数据包括:所述运算单元将所述输入神经元数据和映射后的权值数据相乘,得到加权神经元数据;将加权神经元数据相加得到总加权神经元数据;和/或对总加权神经元数据执行激活函数运算,得到输出神经元数据。

其中,所述运算单元将加权神经元数据相加得到总加权神经元数据包括将加权神经元数据执行加法树运算得到总加权神经元数据。

其中,所述运算单元将总加权神经元数据和偏置相加得到加偏置神经元数据,和/或对加偏置神经元数据执行激活函数运算,得到输出神经元数据。

其中,所述激活函数包括sigmoid函数、tanh函数或relu函数。

其中,所述人工神经网络运算方法还包括使用存储装置存储输入数据、输出数据和指令。

其中,映射单元将部分或全部的映射后的权值数据存储在存储装置中。

其中,所述连接关系数据包括:

对于每个输出神经元数据,采用1表示每个输入神经元数据和该输出神经元数据有对应的符合一条件的权值数据,0表示表示每个输入神经元数据和该输出神经元数据没有对应的符合一条件的权值数据,组成一个0和1的字符串来表示该输出神经元数据的连接关系数据;或者

对于每个输入神经元数据,采用1表示表示该输入神经元数据和每个输出神经元数据有对应的符合一条件的权值数据,0表示表示该输入神经元数据和每个输出神经元数据没有对应的符合一条件的权值数据,组成一个0和1的字符串来表示该输入神经元数据的连接关系数据;或者

对于每个输出神经元数据,将第一有对应输入神经元数据所在的位置与第一个输入神经元的距离、第二有对应输入神经元数据所在的位置与第一有对应输入神经元数据的距离,第三有对应输入神经元数据与第二有对应输入神经元数据的距离,……,依次类推,直到穷举所有与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据,来表示所述输出的连接关系数据;其中第一有对应输入神经元数据为第一个与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据,第二有对应输入神经元数据为第二个与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据;第三有对应输入神经元数据为第三个与该输出神经元数据有对应的符合一条件的权值数据的输入神经元数据。

其中,所述人工神经网络运算方法还包括:

使用指令缓存存储所述指令;以及

使用控制单元从所述指令缓存中读取指令,并将读取的指令译码。

其中,所述人工神经网络运算方法还包括:使用输入神经元缓存缓存输入神经元数据;和使用权值缓存缓存权值数据。

其中,所述人工神经网络运算方法还包括:使用输出神经元缓存缓存输出神经元数据。

其中,所述人工神经网络运算方法还包括使用直接内存存取单元在所述存储装置、指令缓存、输入神经元缓存、输出神经元缓存和权值缓存中进行数据或指令读写。

其中,映射单元将映射后的权值数据存储在权值缓存中。

其中,映射单元将映射后的权值数据直接传输给运算单元。

其中,所述人工神经网络运算方法采用针对稀疏的多层人工神经网络运算的专用simd指令。

作为本公开的还一个方面,本公开还提供了一种包括如上所述的人工神经网络运算方法的稀疏的多层人工神经网络运算方法,其特征在于,还包括使用cpu或gpu执行数据搬运,控制所述计算装置,传输指令给所述计算装置;和使用i/o接口处理cpu或gpu的输入/输出;所述运算装置接受cpu或gpu的数据和指令,执行稀疏的多层人工神经网络运算算法得到执行结果,然后将执行结果传输给cpu或gpu;所述存储单元存储稀疏的多层人工神经网络模型。

其中,所述稀疏的多层人工神经网络运算方法包括并行执行多个如上所述的人工神经网络运算方法。

基于上述技术方案可知,本公开的计算装置和方法具有以下有益效果:

(1)通过采用针对稀疏的多层人工神经网络运算的专用simd指令和定制的运算单元,解决了cpu和gpu运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;

(2)通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。

附图说明

图1是神经网络的节点结构示意图;

图2是稀疏连接的神经网络的节点结构示意图;

图3是作为本公开一实施例的总体结构的示意性框图;

图4是作为本公开一实施例的一稀疏连接的神经网络的节点结构示意图;

图5是图4的神经网络的连接关系示意图;

图6是作为本公开又一实施例的一稀疏连接的神经网络的连接关系示意图;

图7是作为本公开一实施例的一卷积操作的示意图;

图8是卷积神经网络变得稀疏时输入、输出和权值的变化图;

图9是作为本公开一实施例的稀疏连接的人工神经网络运算装置的结构示意图;

图10是作为本公开一实施例的映射单元的结构示意图;

图11是作为本公开一实施例的稀疏连接的人工神经网络运算过程的流程图;

图12是作为本公开另一实施例的稀疏连接的人工神经网络运算装置的结构示意图;

图13是作为本公开另一实施例的映射单元的结构示意图;

图14是作为本公开再一实施例的稀疏连接的人工神经网络运算装置的结构示意图;

图15是作为本公开再一实施例的映射单元的结构示意图;

图16是作为本公开还一实施例的稀疏连接的人工神经网络运算装置的结构示意图;

图17是作为本公开还一实施例的映射单元的结构示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。

本公开公开了一种用于稀疏连接的人工神经网络计算装置,包括:

映射单元,用于将输入数据转换成输入神经元和权值一一对应的存储方式,并存储在存储装置或者缓存中;

存储装置,用于存储数据和指令;

运算单元,用于根据所述存储装置中存储的指令对所述数据执行相应的运算;所述运算单元主要执行三步运算,第一步是将输入的神经元和权值数据相乘;第二步执行加法树运算,用于将第一步处理后的加权输出神经元通过加法树逐级相加,或者将加权输出神经元通过和偏置相加得到加偏置输出神经元;第三步执行激活函数运算,得到最终输出神经元。

其中,所述映射单元中的一一对应关系表示如下:

第一种情形:

采用1表示有连接,0表示无连接,每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系;或者

采用1表示有连接,0表示无连接,每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系;

第二种情形:

将一输出神经元第一个连接所在的输入神经元的位置距离第一个输入神经元的距离、所述输出神经元第二个输入神经元距离上一个输入神经元的距离,所述输出神经元第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出神经元的所有输入神经元,来表示所述输出神经元的连接关系。

作为优选,所述人工神经网络计算装置还包括直接内存存取单元(directmemoryaccess,dma),用于在所述存储装置和缓存中进行数据或者指令读写。

作为优选,所述人工神经网络计算装置还包括:

指令缓存,用于存储专用指令;以及

控制单元,用于从所述指令缓存中读取专用指令,并将其译码成各运算单元指令。

作为优选,所述人工神经网络计算装置还包括:

输入神经元缓存,用于缓存输入到所述运算单元的输入神经元数据;以及

权值缓存,用于缓存权值数据。

作为优选,所述人工神经网络计算装置还包括:

输出神经元缓存,用于缓存所述运算单元输出的输出神经元。

作为优选,所述映射单元用于将输入数据转换成输入神经元和权值一一对应的存储方式,并输出到所述运算单元,而不是存储在存储装置中。

作为优选,所述人工神经网络计算装置还包括输入神经元缓存和/或权值缓存,所述输入神经元缓存用于缓存输入到所述运算单元的输入神经元数据,所述权值缓存用于缓存权值数据,所述映射单元用于将输入数据转换成输入神经元和权值一一对应的存储方式,并输出到所述输入神经元缓存和/或权值缓存。

作为优选,所述运算单元在第三步执行的激活函数包括sigmoid函数、tanh函数或relu函数。

本公开还公开了一种用于稀疏连接的人工神经网络的计算方法,包括以下步骤:

步骤1,将输入数据转换成输入神经元和权值一一对应的存储方式;其中,所述对应关系包括:

第一种情形:

采用1表示有连接,0表示无连接,每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系;或者

采用1表示有连接,0表示无连接,每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系;

第二种情形:

将一输出神经元第一个连接所在的输入神经元的位置距离第一个输入神经元的距离、所述输出神经元第二个输入神经元距离上一个输入神经元的距离,所述输出神经元第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出神经元的所有输入神经元,来表示所述输出神经元的连接关系

步骤2,将输入的神经元和权值数据相乘;

步骤3,执行加法树运算,将第一步处理后的加权输出神经元通过加法树逐级相加,或者将加权输出神经元通过和偏置相加得到加偏置输出神经元;

步骤4,对加权输出神经元或加偏置输出神经元执行激活函数运算,得到最终输出神经元;其中,所述激活函数包括sigmoid函数、tanh函数或relu函数。

下面结合附图和具体实施例对本公开的技术方案进一步阐释说明。

图3是根据本公开一个实施例的总体结构的示意性框图。

i/o接口1,用于i/o数据需要经过cpu3发给稀疏的多层人工神经网络运算装置,然后由稀疏的多层人工神经网络运算装置4写入存储装置,稀疏的多层人工神经网络运算装置4需要的专用程序也是由cpu3传输到稀疏的多层人工神经网络运算装置4。

存储装置2用于暂存稀疏的多层人工神经网络模型和神经元数据,特别是当全部模型无法在稀疏的多层人工神经网络运算装置4上的缓存中放下时。

中央处理器cpu3,用于进行数据搬运以及稀疏的多层人工神经网络运算装置4启动停止等基本控制,作为稀疏的多层人工神经网络运算装置4与外部控制的接口。

稀疏的人工神经网络运算装置4,用于执行稀疏的多层人工神经网络运算单元,接受来自cpu3的数据和程序,执行上述稀疏的多层人工神经网络运算算法,稀疏的人工神经网络运算装置4的执行结果将传输回cpu3。

通用系统结构:将稀疏的人工神经网络运算装置4作为cpu3或者gpu的协处理器来执行稀疏的多层人工神经网络运算算法。

多个稀疏的人工神经网络运算装置互联的系统结构:多个稀疏的人工神经网络运算装置4可以通过pcie总线互联,以支持更大规模的稀疏的多层人工神经网络运算,可以共用同一个宿主cpu或者分别有自己的宿主cpu,可以共享内存也可以每个加速器有各自的内存。此外其互联方式可以是任意互联拓扑。

对于一个稀疏连接的神经网络如图4所示,有4个输入神经元:i1,i2,i3,i4,有2个输出神经元:o1,o2。其中,o1和i1,i3,i4有连接,把连接的权值分别表示为w11,w31,w41,o2和i2,i3有连接,把连接的权值分别表示为w22,w32。

有两种方法可以表示上面稀疏神经网络的连接关系,一种是每个输入与输出神经元之间都用一位表示是否有连接,另一种是用连接之间的距离来表示每个连接的位置。

第一种连接表示:

对于图4中的神经网络,如图5所示,输出神经元o1的连接关系为:1011,每一位表示是否与输入神经元有连接,1表示有连接,0表示无连接,输出神经元o2的连接关系为0110。在运算时,连接关系为0所对应的输入神经元不会进行运算。

在存储连接关系时,可以按照优先输入神经元或者输出神经元的顺序对连接关系进行存储。具体存储格式有以下几种:

格式一:将每个输出神经元的所有输入神经元依次摆放完,上面的例子摆放的顺序为10110110。

格式二:将每个输入神经元的所有的输出神经元依次摆放完,上面的例子摆放的顺序为10011110。

第二种连接表示:

比如对于图6中的神经网络,输出神经元o1与输入神经元i1,i3,i4相连接,那么连接关系为0,2,1。0表示第一个连接所在的位置距离第一个输入神经元的距离为0,即第一个输入神经元,2表示第二个输入神经元距离上一个输入神经元的距离为2,即表示第三个输入神经元,1表示第三个输入神经元距离上一个输入神经元的距离为1,即表示第四个输入神经元。同理,o2的连接关系为1,1。

本公开的映射单元包括但不限于以上的连接关系。

卷积神经网络是人工神经网络的一种,卷积层包含多个滤波器,也就是卷积核,这些卷积核重复的作用于所有输入图像上,提取局部特征。不同的卷积核能够提取出不同种类的局部特征,一副输入图像在经过卷积层之后就变成一些能够被更好理解的抽象特征。

自然图像有其固有特性,也就是说,图像的一部分的统计特性与其他部分是一样的。这也意味着在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,都能使用同样的学习特征。当从一个大尺寸图像中随机选取一小块,比如说8*8作为样本,并且从这个小块样本中学习到了一些特征,这时可以把从这个8*8样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别是,可以用从8*8样本中学习到的特征跟原本的大尺寸图像做卷积,从而对这个大尺寸图像上的任意位置获得一个不同特征的激活值。这个8*8的样本特征被称作卷积核。

如图7是一个卷积操作的例子。卷积核是一个2*2的矩阵,卷积核在输入图像上滑动。

假设每次滑动一个像素点,则总共会有四次卷积操作。对于每次卷积操作,卷积核矩阵与对应的输入图像数据做乘加操作。

假设卷积核的权值变得稀疏,由之前的2*2,变成只有两个参数,如图8所示。则对于输出o0来说,需要的输入神经元为i0,i1,i3,i4,输入权值为:w0,w3,连接关系为1001或者0,2;

对于输出o3来说,需要的输入神经元为i3,i5,i7,i8,输入权值为:w0,w3,连接关系为1001或者0,2。

由此可见,对于同个输出特征图上的不同的输出神经元,所需要的输入神经元不同,权值和连接关系是相同的。

可执行稀疏连接的人工神经网络运算装置可以处理各种稀疏连接表示的稀疏连接的人工神经网络,可执行稀疏连接的人工神经网络运算装置中有一个专门用于处理稀疏连接的单元,在这里称为映射单元,对于不同的稀疏连接关系和处理方法,稀疏连接的人工神经网络运算装置结构会略有不同,下面将分别描述不同的结构和方法。

结构和方法一

如图9所示,映射单元1,用来将输入数据转换成输入神经元和权值一一对应的存储方式。

存储装置2,用来存储数据和指令,尤其是神经网络规模很大的时候,指令缓存4、输入神经元缓存6、输出神经元缓存9、权值缓存8放不下这么多数据,只能将数据临时存放在存储装置2。

直接内存存取单元dma3,用来将存储装置中的数据或者指令搬到各个缓存中。

指令缓存4,用来存储专用指令。

控制单元5,从指令缓存4中读取专用指令,并将其译码成各运算单元指令。

输入神经元缓存6,用来存储运算的输入神经元数据。

运算单元7,用于执行具体的运算。运算单元包括三个阶段,第一阶段执行乘法运算,用于将输入的神经元和权值数据相乘。第二阶段执行加法树运算,第一、二两阶段合起来完成了向量内积运算。第三阶段执行激活函数运算,激活函数可以是sigmoid函数、tanh函数等。第三阶段得到输出神经元,写回到输出神经元缓存。

权值缓存8,用来存储权值数据。

输出神经元缓存9,用来存储运算的输出神经元。

映射单元的结构如图10所示。

以上面稀疏连接的神经网络为例,连接关系可以是上述的两种稀疏表示之一,映射单元会根据连接关系,将输入神经元和输入权值按照连接关系输出映射后的神经元和权值,映射后的神经元和权值可以在运算时被直接使用而不需要考虑连接关系,对于输出神经元o1映射的具体过程如下:输入神经元为:i1,i2,i3,i4,输入权值为:w11,w31,w41,连接关系可以为:1011,或0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,输出包括两种情况:一种是去除掉没有连接的输入神经元,则映射后的神经元为i1,i3,i4,映射后的权值为w11,w31,w41;另一种是权值在没有连接的地方补成0,则映射后的神经元为i1,i2,i3,i4,映射后的权值为w11,0,w31,w41。

运算单元包括三个部分,第一部分乘法器,第二部分加法树,第三部分为线性函数单元。第一部分将输入神经元(in)通过和权值(w)相乘得到加权输出神经元(out),过程为:out=w*in;第二部分将加权输出神经元通过加法树逐级相加,另外还可以将输出神经元(in)通过和偏置(b)相加得到加偏置输出神经元(out),过程为:out=in+b;第三部分将输出神经元(in)通过激活函数(active)运算得到激活输出神经元(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入神经元(in)通过运算(f)得到输出神经元(out),过程为:out=f(in)。

运算过程如图11所示。

结构和方法二

如图12所示,存储装置1,用来存储数据和指令,尤其是神经网络规模很大的时候,指令缓存3、输入神经元缓存6、输出神经元缓存9、权值缓存8放不下这么多数据,只能将数据临时存放在存储装置1。

直接内存存取单元dma2,用来将存储装置中的数据或者指令搬到各个缓存中。

指令缓存3,用来存储专用指令。

控制单元4,从指令缓存3中读取专用指令,并将其译码成各运算单元指令。

映射单元5,用来将输入数据转换成输入神经元和权值一一对应的存储方式。

输入神经元缓存6,用来存储运算的输入神经元数据。

运算单元7,用于执行具体的运算。运算单元包括三个阶段,第一阶段执行乘法运算,用于将输入的神经元和权值数据相乘。第二阶段执行加法树运算,第一、二两阶段合起来完成了向量内积运算。第三阶段执行激活函数运算,激活函数可以是sigmoid函数、tanh函数等。第三阶段得到输出神经元,写回到输出神经元缓存。

权值缓存8,用来存储权值数据。

输出神经元缓存9,用来存储运算的输出神经元。

映射单元的结构如图13所示。

以上述稀疏连接的神经网络为例,连接关系可以是上述的两种稀疏表示之一,映射单元会根据连接关系,将输入神经元和输入权值按照连接关系输出映射后的神经元和权值,映射后的神经元和权值可以在运算时被直接使用而不需要考虑连接关系,对于输出神经元o1映射的具体过程如下:

输入神经元为:i1,i2,i3,i4,输入权值为:w11,w31,w41,连接关系可以为:1011,或0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,输出有两种情况:一种是去除掉没有连接的输入神经元,则映射后的神经元为i1,i3,i4,映射后的权值为w11,w31,w41;另一种是权值在没有连接的地方补成0,则映射后的神经元为i1,i2,i3,i4,映射后的权值为w11,0,w31,w41。

结构和方法一和结构方法二中的映射单元的主要区别是结构和方法一中的映射单元是在计算之前事先把输入神经元和权值映射好后存储在存储装置中,结构和方法二是在计算中进行映射,将映射好的数据直接给运算单元进行运算。

结构和方法三:

基于结构和方法二稍作修改可以改成如图14所示的结构,映射单元只对输入神经元进行映射。

此时,映射单元的结构图如图15所示。

对于输出神经元o1映射的具体过程如下:

输入神经元为:i1,i2,i3,i4,连接关系可以为:1011,或者:0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,去除掉没有连接的输入神经元,则映射后的神经元为i1,i3,i4。

结构和方法四:

基于结构和方法二稍作修改可以改成如图16所示的结构,映射单元只对输入权值进行映射。

此时,映射单元的结构图如图17所示。

对于输出神经元o1映射的具体过程如下:

输入权值为:w11,w31,w41,连接关系可以为:1011,或者:0,2,1。映射单元根据连接关系,将输入神经元和权值变成相对应的关系,映射后的权值为w11,0,w31,w41。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1