基於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神經網路之MATLAB@GUI篇神經網路MatlabGUI
- BP神經網路神經網路
- BP神經網路流程圖神經網路流程圖
- bp神經網路學習神經網路
- 資料探勘---BP神經網路神經網路
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- 為什麼說BP神經網路就是人工神經網路的一種?神經網路
- 機器學習——BP神經網路演算法機器學習神經網路演算法
- Andrew BP 神經網路詳細推導神經網路
- python對BP神經網路實現Python神經網路
- 機器學習演算法(八):基於BP神經網路的乳腺癌的分類預測機器學習演算法神經網路
- 神經網路 | 基於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
- MATLAB的神經網路工具箱介紹Matlab神經網路
- MATLAB中神經網路工具箱的使用Matlab神經網路
- 構建兩層以上BP神經網路(python程式碼)神經網路Python
- matlab練習程式(神經網路分類)Matlab神經網路
- 基於XILINX FPGA的卷積神經網路(三)FPGA卷積神經網路
- 基於直接地址對映的CMAC神經網路Mac神經網路
- m基於深度學習網路的手勢識別系統matlab模擬,包含GUI介面深度學習MatlabGUI
- 《TensorFlow2.0》前饋神經網路和 BP 演算法神經網路演算法
- 資料探勘(9):BP神經網路演算法與實踐神經網路演算法
- MATLAB一維插值和二維插值 比較Matlab
- 關於神經網路的討論神經網路
- 使用圖神經網路做基於會話的推薦神經網路會話
- 基於Keras的關聯神經網路CorrNet綜合指南Keras神經網路
- 基於神經網路的Alpha Fold改變了生物世界神經網路
- 基於圖神經網路的動態物化檢視管理神經網路