CN102096844A - 基于fpga的rbf函数计算模块 - Google Patents

基于fpga的rbf函数计算模块 Download PDF

Info

Publication number
CN102096844A
CN102096844A CN2011100532565A CN201110053256A CN102096844A CN 102096844 A CN102096844 A CN 102096844A CN 2011100532565 A CN2011100532565 A CN 2011100532565A CN 201110053256 A CN201110053256 A CN 201110053256A CN 102096844 A CN102096844 A CN 102096844A
Authority
CN
China
Prior art keywords
data
calculation
floating
point
rbf
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011100532565A
Other languages
English (en)
Inventor
彭喜元
赵光权
刘大同
马宁
江维
庞业勇
仲雪洁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN2011100532565A priority Critical patent/CN102096844A/zh
Publication of CN102096844A publication Critical patent/CN102096844A/zh
Pending legal-status Critical Current

Links

Images

Abstract

基于FPGA的RBF函数计算模块,涉及一种机器学习方法中的算法,具体涉及到一种算法的硬件实现方法。本发明解决了现有采用查表法实现RBF函数的方法存在的硬件资源占用率高的缺点。本发明提出一种采用分段线性逼近的方法实现RBF函数的方法,获得基于FPGA的RBF函数计算模块,该模块采用两个随机存储器RAM1和RAM2分别用于存储l维向量xi及xj;二范数计算模块用于实现两个向量的二范数计算
Figure 201110053256.5_AB_0
所述指数函数计算模块用于实现指数函数e-x的计算,并获得RBF函数的最终计算结果;二范数计算模块分别从两个随机存储器RAM1和RAM2中读取向量xi及xj进行二范数计算,并将计算结果输出给指数函数计算模块,所述指数函数计算模块的计算结果为RBF函数的计算结果。

Description

基于FPGA的RBF函数计算模块
技术领域
本发明涉及一种机器学习方法中的算法,具体涉及到一种算法的硬件实现方法。
背景技术
RBF函数是在机器学习算法(例如最小二乘支持向量机,回声状态网络等)中广泛应用的一种核函数,其本质是一个非线性函数。在上述机器学习算法基于FPGA的可重构计算实现过程中,因非线性函数不能被直接计算而难以FPGA实现,而传统的查找表方法又存在资源占用率高的缺点。
发明内容
为了解决现有采用查表法实现RBF函数的方法存在的硬件资源占用率高的缺点,本发明提出一种采用分段线性逼近的方法实现RBF函数的方法,获得一种基于FPGA的RBF函数计算模块。
所述基于FPGA的RBF函数计算模包括两个随机存储器RAM1、RAM2、二范数计算模块和指数函数计算模块,所述两个随机存储器RAM1和RAM2分别用于存储l维向量xi及xj;二范数计算模块用于实现两个向量的二范数计算
Figure BDA0000049037840000011
所述指数函数计算模块用于实现指数函数e-x的计算,并获得RBF函数的最终计算结果;二范数计算模块分别从两个随机存储器RAM1和RAM2中读取向量xi及xj进行二范数计算,并将计算结果输出给指数函数计算模块,所述指数函数计算模块的计算结果为RBF函数的计算结果。
RBF函数的基本原理为:
RBF函数表达式
K ( x i , x j ) = exp { - | | x i - x j | | 2 2 / σ 2 }
其中σ为训练前确定的超参数,即一个固定值,xi、xj为进行了归一化处理之后的l维向量。
RBF函数是典型的非线性函数,其不能够直接在FPGA实现计算。传统的实现方法为查找表法:即将特定输入范围数据对应的计算结果存储于RAM中,将输入数据作为RAM的地址输入,则RAM中对应的存储数据即为结果。该方法简单易实现,但对RAM资源数量的要求高,高精度的实现往往需要大量的RAM资源。
本发明采用先进的分段线性插值方法,分段线性插值方法的原理是将要求实现的函数输入范围进行分段,在每个分段内采用线性拟合方法拟合非线性输出。本发明将函数的求值区间划分成了多个划分区域,然后针对每个划分区域采用线性逼近方法获得近似非线性函数,获得每个分段的线性拟合值k和b存储于RAM中。在实际应用时,以实际输入数据作为RAM地址,查找具体的k和b,然后经过计算获得输出值。采用分段线性插值方法后,不但降低了RAM资源需求、还提高了计算精度。在Xinlinx Virtex XC5VFX130T型号FPGA上的具体试验结果表明,在单精度条件下,相对于PC平台(Pentium Dual core 2.60GHzCPU和2G DDR2内存,Matlab 7.5.0.开发环境效率)的64位双精度计算结果,本方法的最大绝对误差小于10-5,且能够实现180倍的效率提升。
附图说明
图1是本发明所述的RBF函数的计算模块的原理框图。
具体实施方式
本实施方式所述的RBF函数的计算模块包括两个随机存储器RAM1、RAM2、二范数计算模块1和指数函数计算模块2,所述两个随机存储器RAM1和RAM2分别用于存储l维向量xi及xj;二范数计算模块1用于实现两个向量的二范数计算
Figure BDA0000049037840000021
所述指数函数计算模块2用于实现指数函数e-x的计算,并获得RBF函数的最终计算结果;二范数计算模块1分别从两个随机存储器RAM1和RAM2中读取向量xi及xj进行二范数计算,并将计算结果输出给指数函数计算模块2,所述指数函数计算模块2的计算结果为RBF函数的计算结果。
在FPGA中实现RBF函数的计算模块设计过程为:
对能实现两个l维向量RBF函数计算的PE单元进行设计,由公式
K ( x i , x j ) = exp { - | | x i - x j | | 2 2 / σ 2 }
可知,要实现两个向量的核函数计算可以将其分为两个部分,即两向量二范数计算:
Figure BDA0000049037840000023
部分及指数函数e-x计算部分。
所述二范数计算模块采用浮点减法器分别从两个随机存储器RAM1和RAM2中读取两个l维的向量数据,并将读取的两个数据做差之后,作为第一浮点乘法器的两个输入数据,该浮点乘法器将输入的两个数据相乘之后输出给范数计算单元3,该范数计算单元3输出数据给计数器,该计数器将接收到的第l个数据输出给第二乘法器作为一个输入数据,该第二浮点乘法器将输入数据与1/σ2相乘之后作为该二范数计算模块的输出结果。
所述范数计算单元3用于实现范数的计算,即,用于将浮点乘法器输出的数据进行累加计算。
所述范数计算单元3可采用下述结构实现:采用随机存储器RAM存储浮点乘法器的输出数据,采用先入先出存储器FIFO存储浮点加法器的输出数据,该浮点加法器分别从随机存储器和先入先出存储器FIFO中读取数据进行加法计算获得输出数据。
二范数计算模块3的设计过程为:根据二范数的计算公式推导后获得公式
| | x i - x j | | 2 2 = ( x i 0 - x j 0 ) 2 + ( x i 1 - x j 1 ) 2 + ( x i 2 - x j 2 ) 2 + ( x i 3 - x j 3 ) 2 + . . . . . . + ( x il - x jl ) 2
式中,xi0,xi1,…,xil表示l维向量xi中的各个数值,xj0,xj1,…,xjl表示l维向量xj中的各个数值,本实施方式所述的二范数计算模块就是基于上述公式设计获得的硬件逻辑模块,参见图1中的1所指的虚线框内的结构。
所述二范数计算模块3中的浮点减法器分别对两个随机存储器RAM1和RAM2进行多次寻址,即可获得将两个向量的各个数值的差数据。
所述范数计算单元采用浮点加法器和一个随机存储器RAM3、一个先入先出存储器FIFO组成,用于实现对乘法器输出的两个数值的差的平方进行累加计算。
由于ISE(是一种使用XILINX的FPGA的设计工具)中浮点减法器及乘法器均能实现流水,当减法器的延迟时间为ts,乘法器的延迟时间设为tm时,维数l的两向量xi与xj通过减法器及乘法器计算完成所需时间为:t=ts+tm+l。例如,若两向量xi与xj均为6维数据,减法器及乘法器的延迟均设为3个时钟,则通过减法器及乘法器计算完成所需时间t为:t=3+3+6=12个时钟。
由于范数计算单元中的浮点加法器必须有一定时间延迟才能正确计算,故而在设计中为了将乘法器连续输出的l个计算值相加计算范数值,先将乘法器计算获得的l个值保存到RAM3中,通过对RAM3连续l次寻址逐一将每次输出的结果与FIFO中存储数据结果相加即可得到
Figure BDA0000049037840000032
上述采用先入先出存储器存储加法器输出的结果数据,而没有采用RAM,主要是为了运用FIFO的同步复位端口以清除加法器最后一次计算并保存到FIFO中的数据以便下次计算使用。
由于连续相加了l次,而只有当计算到第l次时得到的才是两l维向量的范数值,因而在加法器最后连接了计数器以便准确输出范数值。
二范数计算模块最后的乘法器是计算获得
Figure BDA0000049037840000041
指数函数计算模块将二范数计算模块输出的数据存入先入先出存储器FIFO,同时将该数据输出给乘法器A,该乘法器A将输入数据与10h相乘之后输出结果数据给浮点转定点单元,浮点转定点单元将输入的浮点数转换成定点数之后输出给取整单元,该取整单元将输入的数据取整之后同时输出给k参数存储器和先入先出存储器FIFOB,该先入先出存储器FIFOB输出数据给b参数存储器,乘法器B读取k参数存储器中的数据和先入先出存储器FIFOA中的数据做乘法,并将结果数据输出给减法器,该减法器将输入数据与b参数存储器中读取的数据进行加法操作之后获得二范数计算模块的结果数据输出,h为分段计算过程中的取数间隔m的小数位数。
指数函数计算模块的设计,是为了实现e-x的计算,该模块采用了非线性函数逼近法,即运用一系列直线y=bi-kix的计算值来逼近指数函数值,其中斜率为负主要是由e-x决定的。设计获得的指数函数计算模块的结构参见图1中的2所指的虚线框内的结构。
二范数计算模块进行计算的过程中,当若未知变量x∈(0,n)时,在对指数函数进行线性逼近时取数间隔Δ为m,则共有
Figure BDA0000049037840000042
个节点,则b参数存储器RAM中存储
Figure BDA0000049037840000043
个常量,k参数存储器中存储个斜率值,在计算过程中,
为了寻找输入浮点数对应的斜率和常量在RAM5及RAM6中地址,需要将输入数通过浮点乘法器乘以10h。例如,若x∈(-6,0),取数间隔为0.01,则h为2,且共有601个节点,RAM5及RAM6中分别存储600个斜率K值及常量B值,输入浮点数寻址斜率和常量需要通过浮点乘法器与常量102相乘。
指数函数模块中,将乘法器输出结果通过浮点转定点模块及取整模块即可得到输入数据对应的斜率及常量在k参数存储器RAM及b参数存储器RAM中的地址。将k参数存储器RAM输出的斜率通过乘法器与先入先出存储器FIFO输入的数据相乘,所得结果与b参数存储器RAM输出的常量通过减法器相减即可得到输入数据对应的指数函数值。
所述指数函数计算模块中的两个先入先出存储器FIFO主要是暂存数据防止数据丢失。
本实施方式中,采用DSP48E来搭建调用模块,每个IP核计算时的延迟时间可以设定,不同的延迟时间所对应的时钟的上限不同,综合占用资源及计算效率等方面的考虑,设定乘法器的延迟时间为2个时钟,加法器的延迟时间和减法器的延迟时间设为3个时钟。
  IP核   DSP48E的个数   延迟时间
  乘法器   3   2
  加法器   2   3
  减法器   2   3
当乘法器选择Max Usage(3×DSP)2个延迟时间配置模式时,需要与之匹配的理论时钟为176MHz,减法与加法IP Full Usage(2×DSP)3个延迟时间配置模式时需要与之匹配的理论时钟为175MHz
1.计算性能分析
运行平台Xinlinx Virtex XC5VFX130T FPGA,时钟频率100MHz。
计算6维向量需要1.817ms。能够比PC平台(Pentium Dual core 2.60GHz CPU和2GDDR2内存,Matlab 7.5.0.开发环境效率)提升180倍左右。相对于PC平台中64位双精度的实现结果,本方法计算中最大绝对误差小于10-5

Claims (5)

1.基于FPGA的RBF函数计算模块,其特征在于,该计算模块包括两个随机存储器RAM1、RAM2、二范数计算模块和指数函数计算模块,所述两个随机存储器RAM1和RAM2分别用于存储l维向量xi及xj;二范数计算模块用于实现两个向量的二范数计算
Figure FDA0000049037830000011
所述指数函数计算模块用于实现指数函数e-x的计算,并获得RBF函数的最终计算结果;二范数计算模块分别从两个随机存储器RAM1和RAM2中读取向量xi及xj进行二范数计算,并将计算结果输出给指数函数计算模块,所述指数函数计算模块的计算结果为RBF函数的计算结果。
2.根据权利要求1所述的基于FPGA的RBF函数计算模块,其特征在于,所述二范数计算模块采用浮点减法器分别从两个随机存储器RAM1和RAM2中读取两个l维的向量数据,并将读取的两个数据做差之后,作为第一浮点乘法器的两个输入数据,该浮点乘法器将输入的两个数据相乘之后输出给范数计算单元,该范数计算单元输出数据给计数器,该计数器将接收到的第l个数据输出给第二乘法器作为一个输入数据,该第二浮点乘法器将输入数据与1/σ2相乘之后作为该二范数计算模块的输出结果。
3.根据权利要求2所述的基于FPGA的RBF函数计算模块,其特征在于,所述范数计算单元用于实现范数的计算,即,用于将浮点乘法器输出的数据进行累加计算。
4.根据权利要求2所述的基于FPGA的RBF函数计算模块,其特征在于,所述范数计算单元可采用下述结构实现:采用随机存储器RAM存储浮点乘法器的输出数据,采用先入先出存储器FIFO存储浮点加法器的输出数据,该浮点加法器分别从随机存储器和先入先出存储器FIFO中读取数据进行加法计算获得输出数据。
5.根据权利要求1所述的基于FPGA的RBF函数计算模块,其特征在于,指数函数计算模块将二范数计算模块输出的数据存入先入先出存储器FIFO,同时将该数据输出给乘法器A,该乘法器A将输入数据与10h相乘之后输出结果数据给浮点转定点单元,浮点转定点单元将输入的浮点数转换成定点数之后输出给取整单元,该取整单元将输入的数据取整之后同时输出给k参数存储器和先入先出存储器FIFOB,该先入先出存储器FIFOB输出数据给b参数存储器,乘法器B读取k参数存储器中的数据和先入先出存储器FIFOA中的数据做乘法,并将结果数据输出给减法器,该减法器将输入数据与b参数存储器中读取的数据进行减法操作之后获得二范数计算模块的结果数据输出,h为分段计算过程中的取数间隔m的小数位数。
CN2011100532565A 2011-03-07 2011-03-07 基于fpga的rbf函数计算模块 Pending CN102096844A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011100532565A CN102096844A (zh) 2011-03-07 2011-03-07 基于fpga的rbf函数计算模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011100532565A CN102096844A (zh) 2011-03-07 2011-03-07 基于fpga的rbf函数计算模块

Publications (1)

Publication Number Publication Date
CN102096844A true CN102096844A (zh) 2011-06-15

Family

ID=44129930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100532565A Pending CN102096844A (zh) 2011-03-07 2011-03-07 基于fpga的rbf函数计算模块

Country Status (1)

Country Link
CN (1) CN102096844A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104765713A (zh) * 2014-12-20 2015-07-08 中国科学院西安光学精密机械研究所 基于分段查表三角函数实现fpga数字信号处理的方法
CN105278914A (zh) * 2015-11-26 2016-01-27 中国科学院半导体研究所 基于fpga的可配置浮点向量范数求解ip核
CN106067064A (zh) * 2016-06-03 2016-11-02 福州大学 基于rbf的函数逼近器系统
CN106067063A (zh) * 2016-06-03 2016-11-02 福州大学 Rbf神经元电路及其工作方法
WO2017181342A1 (zh) * 2016-04-19 2017-10-26 北京中科寒武纪科技有限公司 一种非线性函数运算装置及方法
CN107305484A (zh) * 2016-04-19 2017-10-31 北京中科寒武纪科技有限公司 一种非线性函数运算装置及方法
CN108205518A (zh) * 2016-12-19 2018-06-26 上海寒武纪信息科技有限公司 获取函数值的装置、方法及神经网络装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DEPENG YANG,ETC.: "An FPGA Implementation for Solving Least Square Problem", 《PROC.IEEE SYMP. FIELD PROGRAM. CUSTOM COMPUT. MACH.》 *
JUNQING SUN,ETC: "High-Performance Mixed-Precision Linear Solver for FPGAs", 《IEEE TRANSACTIONS ON COMPUTERS》 *
都军伟等: "RBF网络高斯型传输函数的FPGA实现", 《核电子学与探测技术》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104765713A (zh) * 2014-12-20 2015-07-08 中国科学院西安光学精密机械研究所 基于分段查表三角函数实现fpga数字信号处理的方法
CN105278914A (zh) * 2015-11-26 2016-01-27 中国科学院半导体研究所 基于fpga的可配置浮点向量范数求解ip核
WO2017181342A1 (zh) * 2016-04-19 2017-10-26 北京中科寒武纪科技有限公司 一种非线性函数运算装置及方法
CN107305484A (zh) * 2016-04-19 2017-10-31 北京中科寒武纪科技有限公司 一种非线性函数运算装置及方法
CN107305484B (zh) * 2016-04-19 2021-11-05 中科寒武纪科技股份有限公司 一种非线性函数运算装置及方法
CN106067064A (zh) * 2016-06-03 2016-11-02 福州大学 基于rbf的函数逼近器系统
CN106067063A (zh) * 2016-06-03 2016-11-02 福州大学 Rbf神经元电路及其工作方法
CN106067064B (zh) * 2016-06-03 2018-09-18 福州大学 基于rbf的函数逼近器系统
CN106067063B (zh) * 2016-06-03 2018-12-25 福州大学 Rbf神经元电路及其工作方法
CN108205518A (zh) * 2016-12-19 2018-06-26 上海寒武纪信息科技有限公司 获取函数值的装置、方法及神经网络装置

Similar Documents

Publication Publication Date Title
CN102096844A (zh) 基于fpga的rbf函数计算模块
Gomar et al. Precise digital implementations of hyperbolic tanh and sigmoid function
Wang et al. On the natural solution of an impulsive fractional differential equation of order q∈(1, 2)
CN102129420B (zh) 基于Cholesky分解解决最小二乘问题的FPGA实现装置
CN101231632A (zh) 应用fpga进行浮点fft处理的方法
CN103336877A (zh) 一种基于rvm动态可重构的卫星锂离子电池剩余寿命预测系统及方法
CN103176767A (zh) 一种低功耗高吞吐的浮点数乘累加单元的实现方法
Sapozhnikov et al. Advantages of using the probabilistic form of information representation in information-control systems
CN103294446A (zh) 一种定点乘累加器
Kumar et al. Design of High Speed 8-bit Vedic Multiplier using Brent Kung Adders
US20110302231A1 (en) Method and apparatus for performing numerical calculations
CN108196822A (zh) 一种双精度浮点开方运算的方法及系统
Yuxia et al. Chaos optimization method of SVM parameters selection for chaotic time series forecasting
Chen et al. A matrix-multiply unit for posits in reconfigurable logic leveraging (open) CAPI
CN102209962A (zh) 计算离散傅里叶变换(dft)系数矩阵的方法和设备
CN102081592B (zh) 一种混合基dft和idft快速实现方法及装置
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
CN102129419B (zh) 基于快速傅立叶变换的处理器
Almushaira et al. A fast conservative scheme for the space fractional nonlinear Schrödinger equation with wave operator
Soleymani Novel computational iterative methods with optimal order for nonlinear equations
Closas et al. Computational complexity reduction techniques for quadrature Kalman filters
Kumar et al. High-performance, energy-efficient, and memory-efficient FIR filter architecture utilizing 8x8 approximate multipliers for wireless sensor network in the Internet of Things
RU179930U1 (ru) Вероятностный комбинированный умножитель
CN104809297A (zh) 一种磁场-结构场耦合计算中的异型网格间的电磁力密度传递方法
Zhu et al. Error flatten logarithm approximation for graphics processing unit

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110615