From Wikipedia, the free encyclopedia
MATLAB(Matrix Laboratory,矩陣實驗室) 係一款由美國 The MathWorks 公司出品的商業數學軟件。
以下係一段用 MATLAB 寫嘅簡單前饋神經網絡嘅源碼[1]:
function m = neural()
[Attributes, Classifications] = mendez; % 由「mendez」嗰度攞數據,「mendez」係個檔案嘅名。
n = 2.6; % 設個變數做學習率。
nbrOfNodes = 8;
nbrOfEpochs = 800;
% 設矩陣嚟代表啲權重。
W = rand(nbrOfNodes, length(Attributes(1,:)));
U = rand(length(Classifications(1,:)),nbrOfNodes);
m = 0; figure; hold on; e = size(Attributes);
% 係噉 run 若干次。
while m < nbrOfEpochs
% m 用嚟數住喺第幾個 loop。
m = m + 1;
for i=1:e(1)
% 由數據嗰度攞輸入。
I = Attributes(i,:).';
D = Classifications(i,:).';
% 根據輸入同權重計吓個神經網絡俾啲乜嘢輸出。
H = f(W*I);
O = f(U*H);
% 計誤差值。
delta_i = O.*(1-O).*(D-O);
% 計前面嗰層嘅誤差值。
delta_j = H.*(1-H).*(U.'*delta_i);
% 根據誤差值調較吓啲權重。
U = U + n.*delta_i*(H.');
W = W + n.*delta_j*(I.');
end
RMS_Err = 0;
% 計 RMS 誤差值。
for i=1:e(1)
D = Classifications(i,:).';
I = Attributes(i,:).';
RMS_Err = RMS_Err + norm(D-f(U*f(W*I)),2);
end
y = RMS_Err/e(1);
plot(m,log(y),'*'); % 畫幅圖展示 RMS 誤差值點樣隨住學習次數演變;結果通常會係個誤差隨時間變細。
end
function x = f(x)
x = 1./(1+exp(-x));
呢個網絡用嘅學習屬於監督式學習。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.