Cześć, skończyłem prototyp sieci neuronowej.
I tak wywołuję:
public void iloscPrzebiegowSieci(int licznik){
for(int i=0;i<licznik;i++){
netA();
netB();
fanetA();
fanetB();
netZ();
fanetZ();
tablicaWynikow(x1,x2,x3,propagacjaWsteczna()); // propagacjaWsteczna() zwraca tablicę
System.out.println("licznik"+i);
}
ale to nie ważne tylko co pokazuje konsola:
licznik0
licznik1
licznik2
licznik3
licznik4
licznik5
licznik6
licznik7
licznik8
licznik9
Wartość oczekiwana: 0.8
Współczynnik korekcji: 0.01
Tablica zwrócona po 10 przebiegu
[0.49987719394694813, 0.6998899098322473, 0.5999508775787792, 0.8999559639328991, 0.7999754387893898, 0.7999779819664494, 0.5999140357628637, 0.39992293688257313, 0.4991798570639368, 0.8999030856177592, 0.8999099944635253]
1.319813205306318 sygnał A
1.4998325469089389 sygnał B <- sygnały z warstwy wejściowej do neuronów A i B
0.7891506270371467
0.8175494997932883 sygnały z funkcji aktywacji dla neuronu Z
1.9451568959219179 funkcja aktywacji neuronu Zet
0.8749175896280418 wynik działania sieci po 10 przebiegu
Dlatego się zastanawiam jak to mniej więcej się odbywa. Chodzi o te liczniki dlaczego one się najpierw wypisują?
Jakieś podpowiedzi?
P.S. Tak wyglądają wyniki po milionie przebiegów:
Wartość oczekiwana: 0.8
Współczynnik korekcji: 0.01
Tablica zwrócona po 1000000 przebiegu
[0.4327005536092148, 0.6395596909601108, 0.5730802214437907, 0.8758238763841083, 0.7865401107219445, 0.7879119381921119, 0.552890387526557, 0.35769178367204363, 0.051583132520329804, 0.8475391331178729, 0.8510558742234517]
1.2062639355997098 sygnał A
1.3978558777226069 sygnał B <- sygnały z warstwy wejściowej do neuronów A i B
0.7696372279891445
0.8018434282369424 sygnały z funkcji aktywacji dla neuronu Z
1.3862943613540124 funkcja aktywacji neuronu Zet
0.8000000000000022 wynik działania sieci po 1000000 przebiegu
te 0022 na końcu to przeuczenie