Hej,
zadanie polega na rozpoznaniu cyfry(0-9) przedstawionej za pomoca bitmapy 5x6 za pomoca sieci neuronowej i wykorzystanie do tego algorytmu wstecznej propagacji bledu. Rozumiem to tak, mam bitmape 5x6 czyli neuronow warsty wejsciowej jest 30, w warstawie ukrytej np 17 i w warstwie wyjsciowej 10 (kazdy odpowiada liczbie 0-9). Jak ma teraz wygladac logika calej sieci ? Rozumiem to tak; dla kazdego neuronu losuje sobie wagi i wartosc progowa obie z przedzialu (-1,1) i np dla 1 neuronu wejsciowej mam wagi [1,0]. Potem robie to samo dla sieci ukrytej. Jeśli wprowadzam teraz bitmape przedstawiające liczbe zero to oczekuję wyniku (1,0,0,0,0,0,0,0,0,0) tak ?. Wprowadzam przykład do nauki licze sobie wyjście całej sieci, nastepnie licze błąd neuronow w warstwie wyjsciowej i potem algorytmem wstecznej propagacji błędów błąd w warstwie urkytej (bez warstwy wejsciowej tak ?). Po tym wszystkim aktualizuje wagi w warstwie ukrytej (bez warstwy wejsciowej tak ?) I co dalej czy wprowadzam następny przykład i powtarzam te kroki i tak az wykorzystam wszystkie dane do nauki sieci i blad nie bedzie juz mala wtedy siec sie "nauczona"? Czy licze jeszcze raz jakie jest wyjscie sieci dla tego samego przykladu i znowu sprawdzam blad i jak jest bliski zera to dopiero koncze nauke na tym przykladzie i wprowadzam nowe?
Jak już "naucze" siec to wprowadzam przykład który np przedstawia liczbe 7(rozni sie od tego przykladu 7 na ktorym uczyla sie siec) i mam wektor wyjsciowej, i na jego podstawie widze gdzie jest najwieksza wartosc, to pokazuje mi do ktorej cyfry ten wprowadzony przyklad jest najbardziej podobny. Chce zebyscie powiedzieli mi czy poprawnie rozumiem cala logike rozwiazania tego zadania przed zaimplementowaniem go w Javie.
Przykład jak wyglądaja dane:
Dla 0:
1 1 1 1 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 1 1 1 1
Dla 7:
1 1 1 1 1
0 0 0 0 1
1 1 0 1 1
1 0 1 1 1
1 0 1 1 1
1 0 1 1 1