基于神经网络处理器及其使用方法与流程

文档序号:18217495发布日期:2019-07-19 22:45阅读:288来源:国知局
基于神经网络处理器及其使用方法与流程

本发明属于处理器技术领域,特别是涉及一种基于神经网络处理器及其使用方法。



背景技术:

人工智能技术在近些年来得到了迅猛的发展,深度学习技术是人工智能技术发展的助推器,深度神经网络包括卷积神经网络、深度置信网络、循环神经网络等。以图像识别应用为例,经过反复训练、迭代,深度学习算法通过深度神经网络可以自动地获得隐藏的图像的特征数据,并且产生优于传统的基于模式识别分析方法的效果。

然而,实现深度学习技术依赖于极大的计算量。在训练阶段,需要在海量数据中通过反复迭代计算得到神经网络中的权重数据;在推理阶段,同样需要神经网络在极短的响应时间(通常为毫秒级)内完成对输入数据的运算处理,这需要所部署的神经网络运算电路(包括cpu、gpu、fpga和asic等)达到每秒千亿次甚至万亿次的计算能力。随着神经网络运算电路的规模越来越大、数据吞吐量越来越高,计算效率成为一个严重问题。

以卷积神经网络为例,参见图2所示,其处理数据的过程由卷积层、池化层、归一化层、非线性层和全连接层等多层结构组成。与传统神经网络相比,卷积神经网络在结构上增加了卷积层和池化层,每层内又包含多个特征图。卷积层和池化层之间均采用部分连接的方式,体现出了局部感知的思想。在网络末端,通常采用全连接层,即当前层内神经元与下一层神经元一一相连。

卷积层完成卷积操作,具体操作过程是:将一个k*k大小的二维权重卷积核对特征图进行扫描,在扫描过程中权重与特征图内对应的特征元素求内积,并将所有内积值求和,得到一个输出层特征元素。当每个卷积层具有n个特征图层时,会有n个k*k大小的卷积核与该卷积层内特征图进行卷积操作,n个内积值求和得到一个输出层特征元素。

池化层又称为下采样层,具体操作过程是:将一个p*p大小的二维窗口对特征图层进行扫描,在扫描过程中计算窗口在图层对应数据中的最大值或平均值,得到输出层特征元素点。池化层一方面可以消除部分噪声信息,有利于特征提取,另外一方面也可以减少下一层特征元素的数量,减小网络规模。

归一化层对局部输入区域进行归一化,常用的归一化方法为局部相应归一化,即在多个相邻特征图中相同位置的元素经过标准化归一操作后得到输出特征图中的特征元素。归一化层通常在卷积层后,归一化层的使用可以加快神经网络收敛速度。

非线性层用于完成非线性计算,神经网络中常用的非线性函数包括sigmoid函数、tanh函数和relu函数等,特征图内每个特征像素均需要经过非线性处理后输出到下一层特征图。

全连接层在卷积神经网络模型的末端,当前层神经元与下一层神经网络中所有神经元均连接,即n-1层的任意一个节点,都和第n层所有节点有连接,数学上的计算方式为当前层特征元素与对应的权重元素进行内积运算。全连接是一种不错的模式,但是网络很大的时候,训练速度会很慢。

由上述神经网络中的数据处理过程可知,神经网络的训练过程中包括大量卷积和内积计算,即乘法和加法运算,为了提高神经网络的训练速度,降低能耗,可采用硬件的方式来实现神经网络中的大部分功能。

本发明提供一种基于神经网络处理器及其使用方法,专用于神经网络计算处理,解决大数量级计算效率低的问题。



技术实现要素:

本发明的目的在于提供基于神经网络处理器及其使用方法,通过将计算单元按不同照神经网络层的计算划分成若干子计算单元,并将存储单元对应子计算单元需要的节点值划分成对应的存储子单元;当进行大数量级的神经网络计算时,不同子计算模块专用于对应神经网络层的计算,实现了神经网络计算的高效计算,解决了现有神经网络大数量级计算效率低的问题。

为解决上述技术问题,本发明是通过以下技术方案实现的:

本发明为基于神经网络处理器,包括:

存储单元,用于存储数据和控制指令;

控制单元,用于从存储单元获取控制指令并发出控制信号;

计算单元,用于述存储单元获得神经网络中的一层的节点值和对应的权重值以获得下一层的节点值;

所述存储单元具体包括卷积子存储单元、归一化子存储单元、池化子存储单元、线性子存储单元以及全连接子存储单元;

所述计算单元包括若干子计算单元;所述计算单元具体包括卷积子计算单元、归一化子计算单元、池化子计算单元、线性子计算单元以及全连接子计算单元;

所述卷积子存储单元内存储输入数据作为卷积层节点值;所述卷积子计算单元从卷积子存储单元内获取卷积层节点值并进行卷积计算获取归一化节点值;

所述卷积子计算单元存储归一化节点值至归一化子存储单元;所述归一化子计算单元从所述归一化子存储单元获取归一化节点值并进行归一化处理获取池化节点值;

所述归一化子计算单元存储池化节点值至池化子存储单元;所述池化子计算单元从所述池化子存储单元内获取所述池化节点值并进行池化处理获取线性节点值;

所述池化子计算单元存储线性节点值至线性子存储单元;所述线性子计算单元从所述线性子存储单元获取所述线性节点值并进行线性处理获取全连接节点值;

所述线性子计算单元存储所述全连接节点值至全连接子存储单元;所述全连接子计算单元从所述全连接子存储单元内获取所述全连接节点值并进行全连接处理获取输出数据。

优选地,所述卷积子存储单元内还存储卷积权值;所述归一化子存储单元内还存储归一化权值;所述池化子存储单元内还存储池化权值;所述线性子存储单元内还存储线性权值;所述全连接子存储单元内还存储全连接权值。

优选地,任意所述子计算单元包括均包含乘法单元、加法单元以及比较单元:

所述乘法单元,用于完成节点值和权重值的乘法操作;

所述加法单元,用于对乘法单元的计算结果进行累加;

所述比较单元,用于将所述节点值中的计算元素与阈值进行比较,当所述计算元素小于阈值时,该比较单元输出第一控制信号以指示所述乘法单元不执行该计算元素的乘法操作,当所述计算元素大于等于阈值时,该比较单元输出第二控制信号以指示所述乘法单元执行该计算元素的乘法操作;

其中,所述阈值范围为10-8-10-2

其中,所述第一控制信号为“0”;所述第二选择信号为“1”。

基于神经网络处理器的使用方法,包括如下:

通过训练获得神经网络中每一层的权值并存储到对应的子存储单元中;

根据所述输入数据与卷积权值计算归一化节点值;如上方法依次计算池化节点值、线性节点值以及全连接节点值。

本发明具有以下有益效果:

1、本发明通过将计算单元按不同照神经网络层的计算划分成若干子计算单元,并将存储单元对应子计算单元需要的节点值划分成对应的存储子单元;当进行大数量级的神经网络计算时,不同子计算模块专用于对应神经网络层的计算,实现了神经网络计算的高效计算,提高了计算效率。

2、本发明通过将每个子计算单元内设置比较单元,用于将节点值中的计算元素与预设的阈值比较,用于在不影响实际计算结果情况下,过滤可以省略的微小计算元素,减少计算数量,提高计算效率。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的基于神经网络处理器的结构示意图;

图2为本发明的卷积神经网络的各网络层图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

具体实施例一:

请参阅图1所示,本发明为基于神经网络处理器,包括:

存储单元,用于存储数据和控制指令;

控制单元,用于从存储单元获取控制指令并发出控制信号;

计算单元,用于述存储单元获得神经网络中的一层的节点值和对应的权重值以获得下一层的节点值;

存储单元具体包括卷积子存储单元、归一化子存储单元、池化子存储单元、线性子存储单元以及全连接子存储单元;

计算单元包括若干子计算单元;计算单元具体包括卷积子计算单元、归一化子计算单元、池化子计算单元、线性子计算单元以及全连接子计算单元;

卷积子存储单元内存储输入数据作为卷积层节点值;卷积子计算单元从卷积子存储单元内获取卷积层节点值并进行卷积计算获取归一化节点值;

卷积子计算单元存储归一化节点值至归一化子存储单元;归一化子计算单元从归一化子存储单元获取归一化节点值并进行归一化处理获取池化节点值;

归一化子计算单元存储池化节点值至池化子存储单元;池化子计算单元从池化子存储单元内获取池化节点值并进行池化处理获取线性节点值;

池化子计算单元存储线性节点值至线性子存储单元;线性子计算单元从线性子存储单元获取线性节点值并进行线性处理获取全连接节点值;

线性子计算单元存储全连接节点值至全连接子存储单元;全连接子计算单元从全连接子存储单元内获取全连接节点值并进行全连接处理获取输出数据。

其中,卷积子存储单元内还存储卷积权值;归一化子存储单元内还存储归一化权值;池化子存储单元内还存储池化权值;线性子存储单元内还存储线性权值;全连接子存储单元内还存储全连接权值。

其中,任意子计算单元包括均包含乘法单元、加法单元以及比较单元:

乘法单元,用于完成节点值和权重值的乘法操作;

加法单元,用于对乘法单元的计算结果进行累加;

比较单元,用于将节点值中的计算元素与阈值进行比较,当计算元素小于阈值时,该比较单元输出第一控制信号以指示乘法单元不执行该计算元素的乘法操作,当计算元素大于等于阈值时,该比较单元输出第二控制信号以指示乘法单元执行该计算元素的乘法操作;

其中,阈值范围为10-8-10-2

其中,第一控制信号为“0”;第二选择信号为“1”。

基于神经网络处理器的使用方法,其特征在于,包括如下:

通过训练获得神经网络中每一层的权值并存储到对应的子存储单元中;

根据输入数据与卷积权值计算归一化节点值;如上方法依次计算池化节点值、线性节点值以及全连接节点值。

值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

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