Zdaję sobie sprawę, że temat był wielokrotnie poruszany i jest wiele tutoriali na ten temat, jednak siedzę nad tym od trzech dni, kręcąc się w miejscu i nie ruszę dalej dopóki ktoś nie wytłumaczy mi gdzie leży błąd w moim rozumowaniu.
Próbuję napisać program, który rozpoznaje narysowane przez użytkownika cyfry. Próbowałam bezskutecznie implementować różne rozwiązania, ale nie potrafię przystosować ich do mojego problemu.
Na chwilę obecną ma gotowy interfejs pozwalający na narysowanie liczby, znajdujący obszar, na którym liczba została narysowana (obcina pustą górę, dół i boki), a następnie generujący wektor przedstawiający narysowany symbol. Siatka ma wymiary 3x6 (tymczasowo) więc wektor ma długość 18.
Wektor zawiera liczby 0 i 1 (1 = pole siatki zawiera część cyfry, 0 = pole znajduje się w miejscu, w którym nic nie zostało narysowane).
Czy 0 i 1 na wejściu sieci to dobre rozwiązanie? Większość implementacji wpuszczała na wejściu cyfry zmiennoprzecinkowe, ale nie mam pojęcia skąd one się biorą.
Zakładam, że jeżeli wektor zawiera 18 znaków, to wejście sieci powinno zawierać 18 neuronów (jeden dla każdej wartości). Ile warstw ukrytych?
Jak powinno wyglądać wyjście? Czy mogę założyć, że da się dostosować sieć tak by wypluła poprawne rozwiązanie w postaci jednej liczby (z zakresu 0-9), czy może wyjście powinno składać się z 10 neuronów, a znaleziona liczba zależy od tego, który jest aktywny?
Bardzo proszę o jakieś wskazówki, albo nakierowanie na poprawne rozwiązanie.