All pastes #491731 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-05-16 20:28 UTC
rendered paste body
nntwarn off
%lab 8 skrypt3
%Funkcja przejścia : purelin
%Pochodna funkcji przejscia : deltalin

%Wektor danych uczących
P = -1:.1:-.5;
T = [-.9602 -.5770 -.0729 .3771 .6405 .6600 ];

%Okreslenie liczby neuronow w warstwie
%R=S1=1  Q = 6
[R,Q] = size(P);
[S1,Q] = size(T);

%Zainicjowanie neuronow
[W1,B1] = rands(S1,R) 
A1 = purelin(W1*P+B1)
E = 1;
SSE = 1;

%Ustalenie parametrów uczenia
disp_freq=100;      %Co ile krokow wyswietlac wyniki
max_epoch=2000;    %Ile epok (ile krokow uczenia)
err_goal=0.01;      %Blad ktory nas zadowala
lr=0.3;             %Wspolczynnik uczenia
error = [];         %Blędy w kolejnych krokach uczenia
E = [0 0 0 0 0 0];
%Faza uczenia
for epoch=1:max_epoch,
    %Jeśli juz jest nauczone (blad jest bardzo maly) to koniec
    if SSE < err_goal,
        epoch = epoch - 1;
        break,
    end,
  %Wyznaczenie nowych wspó&#322;czynnikow wagowych
    D1 = deltalin(A1,E);   %pochodna purelin pomnozona przez E
    %D1 = poch(tansig(A1)).*E
    
    %LEARNBP Backpropagation learning rule
    [dW1,dB1] = learnbp(P,D1,lr); 
    %Poprawienie wspolczynnikow
    W1 = W1 + dW1;
    B1 = B1 + dB1;
  %Wyznaczenie b&#322;&#281;du uczenia
    A1 = purelin(W1*P+B1);
    E = T - A1;
    SSE = sumsqr(E);
    error = [error SSE];
  %Prezentacja
    if(rem(epoch,disp_freq)==0)
        epoch
        SSE
        plot(P,A1,'g',P,T,'r')
        pause(1e-100)
    end 
end
W1 
B1