SHARE
TWEET

learnbp

pabloducato Jun 16th, 2018 22 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. clear all; % Wyczyszczenie informacji o wszystkich zmiennych w programie
  2. nntwarn off;% Wyłączenie komunikatów informujących o używaniu przestarzałych funkcji
  3. format compact;%Zlikwidowanie dodatkowych pustych linii w odpowiedzi programu
  4. file = dlmread ('data2.txt'); %Wczytanie danych wejsciowych z pliku
  5. P = file(:, 1:34)';%Liczba atrybutow zbioru danych wejsciowego
  6. T = file(:, 35)';%Nr atrybutu klasyfikujacy zbior Jonosfery
  7. [R,Q] = size(P);%Okreslenie liczby neuronow w warstwie wejsciowej, [R,Q]=34x351
  8.     for S1 = 1: 3 : 25,%Liczba neuronów w warstwie pierwszej
  9.         for S2 = 1: 3 : S1,%Liczba neuronów w warstwie drugiej
  10.         [S3,Q] = size(T);%Określenie liczby neuronów w warstwie wyjściowej [S3,Q]=1x351
  11.         lr=1e-6;%Współczynnik uczenia le-3; le-4; le-5; le-6
  12.         [W1,B1] = nwtan(S1,R);%Losowa inicjacja wag do warstwy pierwszej
  13.         [W2,B2] = nwtan(S2,S1);
  14.         [W3,B3] = rands(S3,S2);
  15.         disp_freq = 1000;  %Częstotliwość wyświetlania wyników
  16.         %err_goal wynosi 0.25 poniewaz (0.5)^2 to liczba wystapien w ciagu uczacym
  17.         %wartosc 0.5 = polowa najmniejszej odleglosci pomiedzy reprezentantami klas
  18.         err_goal=0.25;%Błąd oczekiwany
  19.         error = [];%Macierz błedu
  20.         %Maksymalna ilość epok (ilosc kroków uczenia)
  21.             for max_epoch =[20000, 40000, 60000, 80000, 100000],
  22.                 for epoch=1:max_epoch,%Ograniczenie zakresu epoch od 1 do max_epoch
  23.                 A1 = tansig(W1*P,B1);%Wartości na wyjściu warstwy A1
  24.                 A2 = tansig(W2*A1,B2);%Wartości na wyjściu warstwy A2
  25.                 A3 = purelin(W3*A2,B3);%Wartości na wyjściu warstwy A3
  26.                 E = T -A3;%Obliczanie błedu
  27.                 D3 = deltalin(A3,E);%Obliczanie delty dla warstwy trzeciej
  28.                 D2 = deltatan(A2,D3,W3);%Obliczanie delty dla warstwy drugiej
  29.                 D1 = deltatan(A1,D2,W2); %Obliczanie delty dla warstwy pierwszej
  30.                 [dW1,dB1] = learnbp(P,D1,lr);%Obliczanie zmian wag
  31.                 W1 = W1 + dW1;%Aktualizacja wag wektora wejsciowego
  32.                 B1 = B1 + dB1;%Aktualizacja wag przesuniec
  33.                 [dW2,dB2] = learnbp(A1,D2,lr);
  34.                 W2 = W2 + dW2;
  35.                 B2 = B2 + dB2; 
  36.                 [dW3,dB3] = learnbp(A2,D3,lr);
  37.                 W3 = W3 + dW3;
  38.                 B3 = B3 + dB3;
  39.                 SSE = sumsqr(E);%Suma kwadratow bledow     
  40.                 if SSE > 10E20,%Zakończenie uczenia w wypadku dużej wartości SSE(NaN)
  41.                 break,
  42.                 end,
  43.                 error = [error SSE];%Dołączenie "SSE" do tablicy "error"
  44.                 if SSE < err_goal,%Zakończenie uczenia w wypadku osiagniecia SSE < err_goal
  45.                 epoch = epoch - 1;
  46.                 break,
  47.                 end,
  48.                 if(rem(epoch,disp_freq)==0)%Wyswietlanie wynikow
  49.                 epoch %Wypisujemy na ekran ilości epok
  50.                 SSE %Wypisujemy na ekran SSE
  51.                 S1 %Wypisanie na ekran ilosc neuronow w warstwie pierwszej
  52.                 S2 %Wypisanie na ekran ilosc neuronów w warstwie drugiej
  53.                 lr %Wypisanie na ekran wartosci wspolczynnika uczenia
  54.                 end
  55.             end
  56.         nauczanie = 100*(1-sum((abs(T-A3)>=.5)')/length(T))
  57.         %Zapisanie parametrow oraz wyników do pliku *.txt
  58.         wyniki  = [S1 S2 lr epoch 100*(1-sum((abs(T-A3)>=.5)')/length(T)) SSE]
  59.         fid = fopen('wynnikilr6.txt','a+');%Otworzenie pliku *.txt, flaga 'a+'
  60.             for i=1:size(wyniki,1)
  61.             fprintf(fid, '%g\t' ,wyniki(i,:));
  62.             end
  63.         fprintf(fid,'\r\n');
  64.         fclose(fid);%Zamkniecie pliku *.txt
  65.         end
  66.     end
  67. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top