基於Matlab的BP神經網路分段插值模擬
CORDIC也許是最值得研究的硬體實現技術了,但是卻又很難被實現:它的優勢就是同樣的硬體可以被實現為多種函式,但是效能卻非常不好。High-order polynomial approximation可以給予很低的誤差實現,但是這普遍不適合硬體實現。一種很有成效的方法是table-driven方法,但是如果表很大將會帶來很大的開銷。
給出一種現在使用最廣泛的方法,很明顯對於FPGA來說這是一種當前最好的實現方式即low-order polynomials(主要是線性的)和小的查詢表的結合。對於這種技術主要的挑戰是如何選擇內插點以及如何確保查詢表較小。Low-order interpolation主要有三大優勢。第一,同一硬體結構可以被用於多種函式實現,由於僅需要修改low-order polynomials係數。第二,它很適合FPGA當前結構,由於內建的mulipliers、adders和memory核對於大多數函式,通過均勻分隔來進行插值不夠理想的。在sigmoid函式這個例子中,顯然更多的間隔應該被使用。然而硬體實現需要更快的將引數對映到合適的間隔上。本著這種選擇和線性插值法,最關鍵的就在於函式值和每個間隔如何聯絡起來。最普遍的方法就是武斷的選擇間隔的重點,也就是如果x∈[L,U],f(x)=f(L/2 + U/2),或者去選擇一個值來減小這種絕對誤差。這並不是一種好的方法。對於一個定點間隔,最好的函式值一般並不是中點所對應的。這取決於函式的“curvature(曲率)”,相對誤差可能比絕對誤差更重要。例如對於sigmoid函式,f(x) =1/(1+e^-x),函式是關於原點對稱的,但是相對誤差只在一面變得更加明顯,兩邊的誤差取決於間隔,因此絕對誤差並不總是一個常量或者是線性的。
普遍的方法是:假設I = [L,U]做為一個間隔,L<U 且f : I ->R被逼近,假設f’ :I->R是一個線性函式,f’(x) = c1+c2x,對於常量c1和c2,對於f,我們的目標是觀察相對誤差函式。
下面是利用Matlab對分段插值來逼近sigmoid函式的程式碼:
%% 插值誤差計算
t = 0.5:1/16:1; %9個
for i = 1:8
i
sigL(i) = 1/(1 + exp(-t(i)));
sigU(i) = 1/(1 + exp(-t(i+1)));
%sigL(i)
%sigU(i)
c2(i) = (sigU(i)-sigL(i))/(t(i+1)-t(i));
c1(i) = sigU(i)-c2(i)*t(i+1);
end
f2 = (c1(1)+c2(1)*x).*(x>=t(1)&x<t(2))+(c1(2)+c2(2)*x).*(x>=t(2)&x<t(3))+(c1(3)+c2(3)*x).*(x>=t(3)&x<t(4))+...
(c1(4)+c2(4)*x).*(x>=t(4)&x<t(5))+(c1(5)+c2(5)*x).*(x>=t(5)&x<t(6))+(c1(6)+c2(6)*x).*(x>=t(6)&x<t(7))+...
(c1(7)+c2(7)*x).*(x>=t(7)&x<t(8))+(c1(8)+c2(8)*x).*(x>=t(8)&x<=t(9));
f1 = 1./(1+exp(-x)).*(x>=0.5 & x <=1);
%x = linspace(0.5,1);
figure(1)
plot(x,f2,'g'); %分段函式繪圖
wucha = (f1-f2)./f1*2000;
hold on;
plot(x,wucha,'r');
axis([0.5,1,-0.2,0.8]);
下面是模擬圖
相關文章
- 基於BP神經網路的64QAM解調演算法matlab效能模擬神經網路演算法Matlab
- 基於BP神經網路的苦瓜生長含水量預測模型matlab模擬神經網路模型Matlab
- 基於BP神經網路的16QAM解調演算法matlab效能模擬神經網路演算法Matlab
- 基於負相關誤差函式的4整合BP神經網路matlab建模與模擬函式神經網路Matlab
- 基於SFLA演算法的神經網路最佳化matlab模擬演算法神經網路Matlab
- 基於蛙跳最佳化的神經網路資料預測matlab模擬神經網路Matlab
- 基於CNN卷積神經網路的MQAM調製識別matlab模擬CNN卷積神經網路MQMatlab
- BP神經網路之MATLAB@GUI篇神經網路MatlabGUI
- BP神經網路神經網路
- 基於小波神經網路的資料分類演算法matlab模擬神經網路演算法Matlab
- BP神經網路流程圖神經網路流程圖
- bp神經網路學習神經網路
- 資料探勘---BP神經網路神經網路
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- 為什麼說BP神經網路就是人工神經網路的一種?神經網路
- 機器學習——BP神經網路演算法機器學習神經網路演算法
- Andrew BP 神經網路詳細推導神經網路
- python對BP神經網路實現Python神經網路
- 基於RBF神經網路的自適應控制器simulink建模與模擬神經網路
- 機器學習演算法(八):基於BP神經網路的乳腺癌的分類預測機器學習演算法神經網路
- 基於WSN網路的定向步幻影路由演算法matlab模擬路由演算法Matlab
- 神經網路 | 基於MATLAB 使用CNN擬合一個迴歸模型來預測手寫數字的旋轉角度(卷積神經網路)神經網路MatlabCNN模型卷積
- 粒子群優化演算法對BP神經網路優化 Matlab實現優化演算法神經網路Matlab
- 基於神經網路的OCR識別神經網路
- 神經網路 | 基於MATLAB 深度學習工具實現簡單的數字分類問題(卷積神經網路)神經網路Matlab深度學習卷積
- MATLAB插值Matlab
- AI BP神經網路判斷手寫數字AI神經網路
- 【深度學習基礎-08】神經網路演算法(Neural Network)上--BP神經網路例子計算說明深度學習神經網路演算法
- 【深度學習基礎-07】神經網路演算法(Neural Network)上--BP神經網路基礎理論深度學習神經網路演算法
- 基於MATLAB菲涅爾衍射模擬Matlab
- 深度神經網路(DNN)反向傳播演算法(BP)神經網路DNN反向傳播演算法
- MATLAB人工神經網路ANN程式碼Matlab神經網路
- 基於numpy的前饋神經網路(feedforwardneuralnetwork)神經網路Forward
- 基於無線感測器網路的MCKP-MMF演算法matlab模擬演算法Matlab
- 基於貝葉斯最佳化卷積神經網路(Bayes-CNN)的多因子資料分類識別演算法matlab模擬卷積神經網路CNN演算法Matlab
- MATLAB的神經網路工具箱介紹Matlab神經網路
- MATLAB中神經網路工具箱的使用Matlab神經網路
- 構建兩層以上BP神經網路(python程式碼)神經網路Python