基于FPGA的RBF神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)
2.3 隱層非線(xiàn)性函數(shù)映射的實(shí)現(xiàn)
RBF神經(jīng)網(wǎng)絡(luò)隱層中的映射函數(shù)為高斯函數(shù),為非線(xiàn)性函數(shù)。而非線(xiàn)性函數(shù)在硬件上實(shí)現(xiàn)往往比較復(fù)雜,難度較大。通常實(shí)際工程中采用查表法或迭代法來(lái)近似模擬這些非線(xiàn)性函數(shù),查表法較迭代法雖在結(jié)構(gòu)和運(yùn)算復(fù)雜度上有明顯降低,但在精度上也會(huì)明顯降低。若要提高精度,只能增加表的大小,但增加表的大小,直接帶來(lái)的影響就是會(huì)加大存儲(chǔ)空間和降低查表效率,所以,在FPGA上采用何種方法實(shí)現(xiàn)高斯函數(shù)的存儲(chǔ)達(dá)到精度和效率之間的平衡就至關(guān)重要。
高斯函數(shù)表達(dá)式為
其中,可以看作是方差為1的高斯函數(shù),而當(dāng)方差固定時(shí),高斯函數(shù)的形狀不會(huì)發(fā)生變化,只是位置上會(huì)發(fā)生平移,此時(shí)我們可以采用查表法來(lái)解決該部分的非線(xiàn)性映射,為進(jìn)一步提高查表效率、壓縮ROM表的存儲(chǔ)空間,在這里采用STAM(Symmetric Table Loo kup Addition Method)算法實(shí)現(xiàn)數(shù)據(jù)的非線(xiàn)性存儲(chǔ);另外,部分中心固定,而且維持在一定范圍,可以采用CORDIC迭代法來(lái)實(shí)現(xiàn)該部分的函數(shù)計(jì)算。
2.3.1 STAM算法
STAM算法的主體思想是先產(chǎn)生系數(shù),然后利用系數(shù)的對(duì)稱(chēng)性減小ROM表的大小。在該算法中先把輸入X分為m+1個(gè)部分:x0,x1,…,xm。則f(x)可以近似為
該種方法雖然在某種程度上使得查找表的數(shù)量增加了,但每個(gè)表的大小卻大大減小了,整體上查找表還是減少了,效率上也相應(yīng)提高了。
式(13)構(gòu)造的查找表a0(x0,x1),其輸入值的位數(shù)為n0+n1。式(14)所構(gòu)造的其余m-1個(gè)查找表ai-1(x0,xi),由于δi被定義為xi的取值區(qū)間的中間點(diǎn),故查找表中的系數(shù)值具有對(duì)稱(chēng)性,即ai-1(x0,xi)與ai-1(x0,2δi-xi)互為補(bǔ)碼,其輸入值的位數(shù)可以減為n0+n1-1,從而使這m-1個(gè)查找表的存儲(chǔ)空間節(jié)省了一半。
評(píng)論