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ół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