Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % wczytanie środowiska, wyłączenie ostrzeżeo oraz uruchomienie skróconego zapisu liczb
- clear all
- nntwarn off
- format compact
- % wczytanie danych, zapis do zmiennych: P danych wejściowych, T danych wyjściowych
- file = dlmread ('od0do1.txt',',');
- P = file(:,1:6)';
- T = file(:,7)';
- % inicjalizacja zmiennych pomocniczych, zostaje wypełniona danymi podczas wykonywania 10 eksperymentów dla każdej pary neuronów
- PROC_TMP=zeros(1,10); % procent nauczenia dla każdego eksperymentu
- EPOCH_TMP=zeros(1,10); % ilośd przebytych epok podczas nauki dla każdego eksperymentu
- SSE_TMP=zeros(1,10); % wartośd błędu średniokwadratowego dla każdego eksperymentu
- % inicjalizacja tablic dla danych zapisywanych do plików
- wyniki_pelne=[];
- odpowiedzi=[];
- % główna pętla algorytmu
- for S1=1:10:120, % początek : krok : docelowa liczba
- for S2=1:10:S1,
- for lr_inc=1.03:0.01:1.07, % lr_inc - współczynnik wzrostu prędkości uczenia (domyślnie 1.05)
- for lr_dec=0.6:0.05:0.8, % lr_dec - współczynnik redukcji prędkości uczenia (domyślnie = 0.7)
- for max_err=1.02:0.01:1.06, % max_err- maksymalna wartośd współczynnika błędu (domyślnie = 1.04)
- for eksperyment=1:1:10,
- % deklaracja częstotliwości odświeżania, maksymalnej ilości epok możliwych do przebycia, % błędu granicznego oraz współczynnika uczenia
- disp_freq=100;
- max_epoch=20000;
- err_goal=.25;
- lr=.001;
- % inicjalizacja parametrów dla funkcji trainbpa
- TP = [disp_freq , max_epoch , err_goal , lr, lr_inc, lr_dec, max_err] ;
- % inicjalizacja współczynników wagowych i przesunięd w sieci jednokierunkowej (do 3 warstw)
- [W1,B1,W2,B2,W3,B3] = initff(P,S1,'tansig',S2,'tansig',T,'purelin') ;
- % wywołanie funkcji uczącej trainbpa, opisanej poniżej
- [W1,B1,W2,B2,W3,B3,TE,TR] = trainbpa(W1,B1,'tansig',W2,B2,'tansig',W3,B3,'purelin',P,T,TP) ;
- % symulacja sieci jednokierunkowej (do 3 warstw)
- A3 = simuff(P,W1,B1,'tansig',W2,B2,'tansig',W3,B3,'purelin') ;
- % obliczenie różnicy błędu oczekiwanego od otrzymanego
- E = T-A3;
- % obliczenie sumy kwadratów błędów
- SSE = sumsqr(E);
- % wyświetlenie aktualnych wartości obliczonej i wzorcowej
- [T' A3' (T-A3)' (abs(T-A3)>0.5)']
- %obliczenie procentowej wartości uczenia się sieci
- proc=100*(1-sum((abs(T-A3)>.5)')/length(T));
- % tworzenie macierzy pełnych wartości po każdym eksperymencie oraz ich zapis do pliku
- wyniki_pelne=[S1 S2 eksperyment lr_inc lr_dec max_err proc lr TE SSE]
- dlmwrite('wyniki_pelne_s1s2eks10_01.txt', wyniki_pelne, '-append', 'delimiter', '\t');
- % wypełnienie danymi po wykonywaniu każdego eksperymentu dla wszystkich par neuronów
- PROC_TMP(1,eksperyment)=proc;
- EPOCH_TMP(1,eksperyment)=TE;
- SSE_TMP(1,eksperyment)=SSE;
- end
- % obliczenie najmniejszej wartości błędu średniokwadratowego oraz ilości epok podczas nauki
- sse_best=min(SSE_TMP);
- epoch_best=min(EPOCH_TMP);
- % obliczenie średniej wartości procentu nauczenia, ilości epok podczas nauki oraz błędu średniokwadratowego
- PROC_SR=mean(PROC_TMP);
- EPOCH_SR=mean(EPOCH_TMP);
- SSE_SR=mean(SSE_TMP);
- % tworzenie macierzy uśrednionych wartości oraz ich zapis do pliku
- odpowiedzi=[S1 S2 sse_best epoch_best PROC_SR EPOCH_SR SSE_SR lr_inc lr_dec max_err];
- dlmwrite('odpowiedzi_s1s2eks10_01.txt', odpowiedzi, '-append', 'delimiter', '\t');
- end
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement