Skala szarości na wejściach do sieci neuronowej

0

Witam,

Mam sieć neuronową z algorytmem wstecznej propagacji błędów.
Na wejście podaję wartości pikseli 0 gdy kolor biały (== 0), 1 gdy kolor inny niż biały (> 0)
Sieć działa bardzo doble podając na wejścia jedynie jedynki i zera.
Mój obrazek ma każdą wartość piksela w zakresie od 0 do 255 (skala szarości dla każdego piksela).
Chciałbym te wartości dać na wejście sieci neuronowej aby dokładniej nauczyć swoją sieć.
Wiadomo że wartość np 230 na wejściu jest za duża więc proporcjonalnie do tych wartości wyliczam ułamek z zakresu 0-1
np. dla wartości 230 jest to 230/256 (nie 255 bo doliczam wartość 0 czyli 256 rożnych odcieni) jednak mimo tego skuteczność sieci znacznie spadła.

Co powinienem zrobić aby podać na wejścia poprawnie zamiast 1 i 0 to wartość z przedziału od 0 do 255?

0

Twoje dzielenie przez 256 nie jest poprawne, bo dla wartości 255 powinieneś dostać równo 1,0.

Dziel przez 255.

0

A dlaczego uważasz, że wartość 230 na wejściu jest za duża? W końcu i tak mnożysz tą wartość przez wagę więc równie dobrze możesz zrobić 255 mniejszą wagę -> wyjdzie na to samo ;-). A dlatego, że waga i tak podlega adaptacji to nie ma to większego znaczenia. Innymi słowy przeskalowanie wartości wejściowych nie powinno spowodować żadnego pozytywnego efektu.
Ja bym rozważył pójść w trochę innym kierunku - chociaż nie mam pewności czy ma to sens i przyniesie pozytywne rezultaty.
Pierwsza opcja - taka bardziej hardkorowa (po spowoduje zwiększenie ilości wejść o 256 razy) -> czyli dla każdej zmiennej utworzyć 256 zmiennych zero-jedynkowych, które będą reprezentować każdy możliwy odcień. Czyli dla każdej zmiennej będzie przypadać 256 dodatkowych zmiennych, z których tylko jedna będzie zwracać wartość 1 a reszta 0.
Druga opcja jest taka, by podzielić te 256 na kilka mniejszych zbiorów -> ewentualnie rozmyć je (tak jak to się robi w logice rozmytej) -> wówczas będzie można ograniczyć ilość zmiennych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1