一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路制造技术

技术编号:11239138 阅读:128 留言:0更新日期:2015-04-01 12:36
本发明专利技术公开了一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路,其特征是如下步骤进行:1确定拟合多项式的阶数;2获得sigmoid函数的拟合区间;3获得分段区间;4获得拟合多项式;5设计系数存储模块;6设计多项式运算模块;7设计判断模块;8获得拟合硬件电路;9判断操作数所在的拟合执行区间;10读取拟合多项式系数;11在多项式运算模块中进行拟合计算。本发明专利技术能在降低硬件资源消耗的基础上,提高运算精度、加快运算速度以及提升运算结构的灵活性。

【技术实现步骤摘要】

本专利技术涉及人工神经网络领域,具体地说是一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
技术介绍
神经网络是人工神经网络的简称,神经网络的研究与应用也是当前的研究热点之一。神经网络的优势主要体现两个方面,一个是并行性,另一个就是强大的非线性信息处理与学习能力。目前,已经有多个神经网络模型的理论基础、工作原理达到了成熟的水平,使得进一步研究它们在信号处理、控制系统、语音识别等多个相关领域的应用成为热点。与软件模拟相比,基于硬件实现的神经网络具有处理速度快、高并行性,更容易达到神经网络实时运算的要求。在用FPGA实现神经网络时,有两个难点:一个是数据的表示方式,另一个是神经网络激活函数的逼近方法,这两点决定了硬件资源利用效率的高低和逼近的精度。神经网络的激活函数有多种形式,Sigmoid函数是神经网络中使用最广泛的一种激励函数,实现难度也最大,是神经网络FPGA实现的一个重要环节。当前,sigmoid函数的FPGA实现方法有:直接查找表,分段线性逼近,多项式逼近,CORDIC算法,遗传算法等。其中直接查找表法(ZhiliangNie,2012;Alexander Gomperts,2010)是将sigmoid运算结果存储在存储模块中,根据输入操作数,直接查找读取结果,这种方法需要耗费大量的存储资源,且硬件实现精度不高;分段线性逼近法(ManishPanicker,2012)在(-5,5)范围内,采用3段式分段线性逼近,采用32bit定点数格式,运算和存储资源较少,但运算精度较低,最大均方差为0.00187;CORDIC算法(Xi Chen,2006)采用CORDIC算法和查找表算法相结合,数据格式采用自定义16bit浮点格式输入和自定义32bit浮点格式输出,运算资源大,运算精度很低。遗传算法(BharatKishore Bharkhada,2004)在[0,8]范围内,采用基因遗传算法拟合整系数分段三次多项式,采用16位定点数格式,运算资源不高,存储资源较低,运算精度不高,绝对误差2.4376×10-3;多项式逼近算法最为常见,传统的泰勒级数展开法,需要消耗消耗大量的运算资源,且运算精度很低。较为经典的分段多项式逼近算法(Joao O.P.Pinto,2006)采用分段5阶多项式,存储资源低,运算资源不高,运算精度较高,最大误差为8×10-5,这一拟合精度是当前所有现有技术中能够达到的最优精度,但是,仍然不能满足高精度运算要求。且在数据格式的选择方面,以上所有的方法为提高运算精度多为自定义浮点格式,而在实时高速处理领域,数据格式往往是IEEE754标准的32bit单精度浮点格式,这种自定义数据格式在与其他处理模块通讯时,还需要考虑数据格式的转换,通信代价较大。在降低资源消耗方面,为降低运算资源消耗,采用查找表法,虽能获得运算结果,并大大降低了运算资源消耗,却极大的增加了存储资源。在运算精度方面,由于所用算法本身的问题,综合资源方面的考虑,当前的现有技术中,硬件实现的精度普遍不高,远远不能满足实时高精度处理的要求;这些都是亟需解决的瓶颈问题。
技术实现思路
本专利技术是为避免上述现有技术的不足之处,提出了一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路,以期能在降低硬件资源消耗的基础上,提高运算精度、加快运算速度以及提升运算结构的灵活性。本专利技术为解决技术问题采用如下技术方案:本专利技术一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路的特点是按如下步骤进行:步骤1、根据给定的拟合精度u、运算资源和存储资源,确定拟合多项式的阶数n;步骤2、根据所述拟合精度u,利用式(1)获得sigmoid函数f(x)的拟合区间[a,b];f(x)=11+e-xf(x)-u=0x=ba=-b---(1)]]>步骤3、利用式(2)所示的对称性将所述拟合区间[a,b]以原点0为对称中心划分成2m个小区间[a,q1],(q1,q2],…,(qm,0],(0,qm+1],…,(q2m,b];a,q1,q2,…,qm,0,qm+1,…q2m,b分别表示所述2m个小区间的端点值;q1,q2,…,qm,qm+1,…q2m分别表示所述2m个小区间的缩放端点值;由所述2m个小区间的端点值依次构成端点集合Q={Q0,Q1,…,Qt,…Q2m本文档来自技高网
...
一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

【技术保护点】
一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路,其特征是按如下步骤进行:步骤1、根据给定的拟合精度u、运算资源和存储资源,确定拟合多项式的阶数n;步骤2、根据所述拟合精度u,利用式(1)获得sigmoid函数f(x)的拟合区间[a,b];f(x)=11+e-xf(x)-u=0x=ba=-b---(1)]]>步骤3、利用式(2)所示的对称性将所述拟合区间[a,b]以原点0为对称中心划分成2m个小区间[a,q1],(q1,q2],…,(qm,0],(0,qm+1],…,(q2m,b];a,q1,q2,…,qm,0,qm+1,…q2m,b分别表示所述2m个小区间的端点值;q1,q2,…,qm,qm+1,…q2m分别表示所述2m个小区间的缩放端点值;由所述2m个小区间的端点值依次构成端点集合Q={Q0,Q1,…,Qt,…Q2m};Qt表示所述2m个小区间的端点值中第t个端点值;从而获得分段区间[Q0,Q1],[Q1,Q2],…,[Qt,Qt+1],…,[Q2m‑1,Q2m];t=0,1,…,2m‑1;f(‑x)=1‑f(x)    (2)步骤4、将所述阶数n分别和2m个分段区间组成2m个向量组[n,Q0,Q1],[n,Q1,Q2],…,[n,Qt,Qt+1],…,[n,Q2m‑1,Q2m];[n,Qt,Qt+1]表示第t个向量组;将所述2m个向量组依次代入列梅兹算法,从而依次获得所述分段区间各自所对应的逼近精度u0″,u1″,…,ut″,…u2m‑1″;步骤5、依次判断所述逼近精度u0″,u1″,…,ut″,…u2m‑1″是否满足所述拟合精度u,若满足,则满足逼近精度所对应的分段区间即为拟合执行区间,满足逼近精度所对应的逼近多项式的系数即为所述拟合执行区间的拟合多项式系数;若不满足,则缩放所述不满足逼近精度所对应的分段区间中的缩放端点值,并返回步骤4执行,直到获得满足所述拟合精度u的2m个拟合执行区间和2m组拟合多项式系数;步骤6、若所述sigmoid函数f(x)的自变量x在区间(b,+∞)内,则区间(b,+∞)作为拟合执行区间;且区间(b,+∞)所对应的拟合多项式的常数项系数为1、其余各项系数均为0;若所述sigmoid函数f(x)的自变量x在区间(‑∞,a)内,则区间(‑∞,a)作为拟合执行区间,且区间(‑∞,a)所对应的拟合多项式的各项系数均为0;从而获得2m+2个n阶数拟合多项式,完成sigmoid函数的拟合;步骤7、将所述2m+2个n阶数拟合多项式的系数固化在ROM中,形成系数存储模块;步骤8、根据所述n阶数拟合多项式,利用n个浮点加法器、2n‑1个浮点乘法器和(n‑2)×l个寄存单元设计多项式运算模块;l为所述浮点加法器和所述浮点乘法器的流水级数;步骤9、根据所述2m+2个拟合执行区间设计判断模块;由所述多项式运算模块、系数存储模块和判断模块构成拟合硬件电路;步骤10、输入一个操作数ω作为所述拟合硬件电路的输入值;并利用所述判断模块判断所述操作数ω所在的拟合执行区间;步骤11、从所述系数存储模块中读取所述操作数ω所在的拟合执行区间所对应的拟合多项式的系数;步骤12、将所述操作数ω和所述操作数ω所对应的拟合多项式的系数读入所述多项式运算模块中进行拟合计算,从而获得拟合结果作为所述拟合硬件电路的输出值。...

【技术特征摘要】
1.一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路,其特征是按如下步骤进行:
步骤1、根据给定的拟合精度u、运算资源和存储资源,确定拟合多项式的阶数n;
步骤2、根据所述拟合精度u,利用式(1)获得sigmoid函数f(x)的拟合区间[a,b];
f(x)=11+e-xf(x)-u=0x=ba=-b---(1)]]>步骤3、利用式(2)所示的对称性将所述拟合区间[a...

【专利技术属性】
技术研发人员:宋宇鲲王浩张多利杜高明
申请(专利权)人:合肥工业大学
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1