MATLAB(Matrix Laboratory,矩陣實驗室) 係一款由美國 The MathWorks 公司出品的商業數學軟件

基礎

編輯

AI 應用

編輯

以下係一段用 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));

呢個網絡用嘅學習屬於監督式學習