人工神经网络运算电路的制作方法

文档序号:13844780阅读:302来源:国知局
人工神经网络运算电路的制作方法

本发明涉及图像处理领域,具体而言,涉及一种人工神经网络运算电路。



背景技术:

人工神经网络(artificialneuralnetwork),是20世纪80年代以来人工智能领域兴起的研究热点,它从生物信息处理角度对大脑神经元网络进行抽象,按不同的连接方式组成不同的网络。人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式、语音识别、非结构化信息处理等方面的缺陷,使之在模式识别、智能控制、优化组合、预测等领域得到成功应用。

然而,人工神经网络是并行分布式系统,传统的cpu和gpu对于人工神经网络,运算效率低下,成本高昂,功耗过大。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种人工神经网络运算电路,以至少解决cpu对于人工神经网络运算效率较低的技术问题。

根据本发明实施例的一个方面,提供了一种人工神经网络运算电路,包括:控制器,用于向至少一个神经元发送控制指令及学习参数;所述至少一个神经元,与所述控制器连接,用于根据所述控制指令及所述学习参数对输入数据进行神经元运算,并输出运算结果。

可选地,所述至少一个神经元包括:缓冲器,用于存储所述控制指令、所述输入数据以及所述学习参数;计算电路,与所述缓冲器连接,用于根据所述控制指令及所述学习参数对所述输入数据进行神经元运算。

可选地,所述缓冲器包括:指令缓冲器,用于存储所述控制指令;数据缓冲器,用于存储接收到的所述输入数据和所述学习参数。

可选地,所述计算电路用于执行以下步骤根据所述控制指令及所述学习参数对所述输入数据进行神经元运算:读取所述指令缓冲器中存储的所述控制指令;若所述控制指令为反向传播指令,从所述数据缓冲器中读取所述学习参数;根据所述反向传播指令修正所述学习参数;将修正后的所述学习存入所述数据缓冲器。

可选地,所述计算电路用于执行以下步骤根据所述控制指令及所述学习参数对所述输入数据进行神经元运算:读取所述指令缓冲器中存储的所述控制指令;若所述控制指令为前向传播指令,从所述数据缓冲器读取所述输入数据和所述学习参数;依据所述学习参数对所述输入数据进行加权求和,得到加权求和结果;将所述加权求和结果输入预设激励函数,得到所述运算结果。

可选地,所述计算电路用于执行以下步骤依据所述学习参数对所述输入数据进行加权求和,得到加权求和结果:计算所述输入数据与所述学习参数的乘积;对各个所述乘积进行求和运算,得到所述加权求和结果。

可选地,所述人工神经网络运算电路包括n层神经网络,每层神经网络包括至少一个神经元,所述n层神经网络中最后一层神经网络中的至少一个神经元将运算结果输出至所述控制器,n为正整数。

可选地,所述控制器,还用于接收所述最后一层神经网络中的至少一个神经元输出的运算结果;将所述运算结果与目标值进行比较,生成误差信号;根据所述误差信号生成反向传播指令;将所述反向传播指令作为所述控制指令。

可选地,所述n层神经网络中第一层神经网络与输入层全连接。

可选地,所述缓冲器中的存储介质包括以下至少之一:寄存器单元、静态存储器、动态存储器。

在本发明实施例中,采用控制器向至少一个神经元发送控制指令及学习参数;所述至少一个神经元根据所述控制指令及所述学习参数对输入数据进行神经元运算,并输出运算结果的方式,通过设计适用于人工神经网络的硬件电路结构,达到了减小cpu的性能要求的目的,从而实现了提供人工神经网络运算速度的技术效果,进而解决了cpu对于人工神经网络运算效率较低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种可选的人工神经网络运算电路的结构示意图;

图2是根据本发明实施例的另一种可选的人工神经网络运算电路的结构示意图;

图3是根据本发明实施例的又一种可选的人工神经网络运算电路的结构示意图;

图4是根据本发明实施例的一种可选的神经元运算的结构示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种人工神经网络运算电路的结构实施例,图1是根据本发明实施例的人工神经网络运算电路,如图1所示,该人工神经网络运算电路包括:控制器10和至少一个神经元12。

其中,控制器10,用于向至少一个神经元12发送控制指令及学习参数;至少一个神经元12,与控制器10连接,用于根据控制指令及学习参数对输入数据进行神经元运算,并输出运算结果。

结合图2所示,以两层神经网络为例进行说明,输入层d0/d1/d2接收外部数据(相当于输入数据),并将其传导到第一隐层(即第一层神经网络),输入数据可以为音频或视频数据;第一隐层的神经元00、神经元01、神经元02与输入层全连接(也可为部分连接),根据控制器的控制指令对输入数据进行神经元运算,神经元的学习参数由控制器产生并传送给对应的神经元,第一隐层将运算结果传送给下一层神经网络,第二隐层(即第二神经网络)的神经元10、神经元11根据上一层的输入、学习参数及控制指令进行神经元运算并输出结果。

在本发明实施例中,采用控制器向至少一个神经元发送控制指令及学习参数;至少一个神经元根据控制指令及学习参数对输入数据进行神经元运算,并输出运算结果的方式,通过设计适用于人工神经网络的硬件电路结构,达到了减小cpu的性能要求的目的,从而实现了提供人工神经网络运算速度的技术效果,进而解决了cpu对于人工神经网络运算效率较低的技术问题。

可选地,如图3所示,至少一个神经元12包括:缓冲器120和计算电路122。

其中,缓冲器120,用于存储控制指令、输入数据以及学习参数;计算电路122,与缓冲器120连接,用于根据控制指令及学习参数对输入数据进行神经元运算。

可选地,结合图1及图3所示,缓冲器120包括:指令缓冲器1200,用于存储控制指令;数据缓冲器1202,用于存储接收到的输入数据和学习参数。

本实施例中,结合图3所示,神经元12由指令缓冲器1200,数据缓冲器1202和计算电路122构成,指令缓冲器1200接收控制器10产生的前向传播指令或者后向传播指令(其中,控制指令包括前向传播指令或者后向传播指令),数据缓冲器1202接收输入数据和学习参数并存储下来,计算电路122进行专用的神经元运算。

其中,指令缓冲器1200接收到控制器10的控制指令,将控制指令缓冲在存储介质中,存储介质可为寄存器单元、sram(静态存储器)、dram(动态存储器)等;数据缓冲器1202接收输入数据及学习参数,并将其存储到对应的存储介质中,存储介质也可为寄存器单元、sram(静态存储器)、dram(动态存储器)等;计算电路122根据控制指令及学习参数对输入数据进行神经元运算。

可选地,计算电路122用于执行以下步骤根据控制指令及学习参数对输入数据进行神经元运算:读取指令缓冲器中存储的控制指令;若控制指令为反向传播指令,从数据缓冲器中读取学习参数;根据反向传播指令修正学习参数;将修正后的学习存入数据缓冲器。

计算电路122根据控制器10产生的前向指令对输入数据进行神经元运算,神经元12的学习参数由控制器10产生并传送给对应的神经元12,第i层神经网络将运算结果传送给第i+1神经网络,第i+1神经网络根据上一层的输入、学习参数及前向传播指令进行神经元运算并输出结果。以此类推,控制器10依据最后一层神经网络的输出结果跟预设值最比对,由此产生误差信号,再由误差信号的大小产生反向传播指令,并调整各层神经元的学习参数,依次迭代下去,直到最终的误差信号小于某一规定阈值为止,其中0<i<n,i为整数。

可选地,计算电路122用于执行以下步骤根据控制指令及学习参数对输入数据进行神经元运算:读取指令缓冲器中存储的控制指令;若控制指令为前向传播指令,从数据缓冲器读取输入数据和学习参数;依据学习参数对输入数据进行加权求和,得到加权求和结果;将加权求和结果输入预设激励函数,得到运算结果。

具体地,计算电路122用于执行以下步骤依据学习参数对输入数据进行加权求和,得到加权求和结果:计算输入数据与学习参数的乘积;对各个乘积进行求和运算,得到加权求和结果。

如图4所示,d0、d1、d2、d3为输入数据,w0、w1、w2、w3为对应权值(即学习参数),sum为求和运算,f为预设激励函数,可以为sigmoid函数或者tanh函数等函数。计算电路122读取指令缓冲器1200的控制指令,如前向传播指令,就到数据缓冲器1202中取出对应的输入数据和学习参数,根据输入节点(输入数据)的权值(学习参数)进行加权求和,再将其加权求和结果输入一预设激励函数中,预设激励函数可以为sigmoid、tanh等函数运算,并将结果输出,如果读取到反向传播指令,专用运算电路会从数据缓冲器中取出对应的学习参数,对其进行一次修正,再存入数据缓冲器。

其中,sigmoid函数,即f(x)=1/(1+e-x),是神经元的非线性作用函数;tanh函数用于返回任意实数的双曲正切值。

可选地,人工神经网络运算电路包括n层神经网络,每层神经网络包括至少一个神经元,n层神经网络中最后一层神经网络中的至少一个神经元将运算结果输出至控制器,n为正整数。

可选地,控制器10,还用于接收最后一层神经网络中的至少一个神经元输出的运算结果;将运算结果与目标值进行比较,生成误差信号;根据误差信号生成反向传播指令;将反向传播指令作为控制指令。

结合图2所示,仍以两层神经网络为例进行说明,控制器依据第二隐层的输出结果跟目标值进行比对,由此生成误差信号,再由误差信号的大小产生反向传播指令,并调整各层神经元的学习参数,依次迭代下去,直到最终的误差信号小于某一规定阈值为止。

可选地,n层神经网络中第一层神经网络与输入层全连接。

可选地,缓冲器中的存储介质包括以下至少之一:寄存器单元、静态存储器、动态存储器。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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