rendered paste bodynntwarn 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ół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łę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