emilios8 napisał(a)
sfs:
A skąd założenie, że wiersz a nie kolumna jest wektorem wejściowym?
Zazwyczaj wiersze macierzy danych wejściowych są jakimiś wzorcami na które sieć reaguje. Na przykład mapa bitowa 3x4:
101
101
101
010 // Prymitywna litera U
Z takiej mapy otrzymam wektor 101101101010 który reprezentuje właśnie literę U i stąd założenie że wektory a nie kolumny.
Ma to związek z uczeniem sieci jakiegoś wzorca który później ma rozpoznać. Podając kolumny do neuronu sieć uczyłaby się danymi z różnych wzorców.
Sorry, ale gadasz brednie! Szczególnie to ostatnie zdanie - ponowne założenie wzięte z kosmosu.
To czy wrzucimy do siedzi dane w postaci: 101101101010 czy 111000011110 czy np. 111111100000 nie ma największego znaczenia -> oczywiście pod warunkiem, że wiesz za co dana zmienna odpowiada. Możesz sobie zamienić tą Twoją tablicę losowo w wektor -> tylko później musisz uwzględnić tą samą kolejność w dalszej części programu... Czyli jeśli założysz, że wektor będzie się zaczynał od środkowego elementu tej tablicy to wszędzie musisz tak robić (dla pozostałych zmiennych).
Akurat dane wzorcowe mają tutaj najmniej do gadania. Jak uczysz sieć to nie porównujesz każdej danej wejściowej z tą samą daną we wzorcu, tylko na wyjściu masz ilość wszystkich wzorców a na wejściu np. jakąś tablicę zmiennych (wyjątkiem są sieci autoasocjacyjne, ale to raczej inna bajka). Trochę namieszałem ale chodzi o to (na Twoim przykładzie), że jak na wejściu masz tą Twoją tablicę z 12 elementami to na wyjściu możesz mieć 25 neurony (odpowiadające za każdą literę alfabetu) a możesz mieć np. tylko 3 neurony odpowiadające jakiemuś innemu zadaniu. Uwierz mi, że kolejność nie ma znaczenia jak konsekwentnie stosujesz pewien klucz.
Natomiast sama idea, żeby z powodu braku wag wrzucać wektor zmiennych "po kawałku" jest wręcz śmieszny. Nie ma w ogóle takiej opcji, żeby zabrakło wag... Jak decydujesz się na 3 zmienne wejściowe to tyle masz wrzucać do sieci (one reprezentują cały wzorzec), jak znajdziesz jakąś inną, dodatkową daną to zwiększasz ten wektor i uczysz sieć od nowa.
Ja bardziej obstawiam, że to co autor przedstawił to jest po prostu macierz zmiennych z czego i-ta zmienna w wierszu odpowiada i-temu wzorcowi -> mamy 12 danych uczących, każda po 3 zmienne.
Podając kolumny do neuronu sieć uczyłaby się danymi z różnych wzorców
że co? Niestety nie rozumiem o czym Ty mówisz...
Nie widzę sensu transponowania macierzy wejściowej. Po takiej operacji otrzymałby całkiem inne dane wejściowe. (Reprezentujące jakieś inne wzorce "litery")
i znowu... Jak niby otrzymam coś innego?! Przecież jak tworzysz z macierzy XxY wektor o długości X*Y to już (patrząc z Twojego punktu widzenia) masz "całkiem inne dane". Więc co za różnica, czy sobie ułożysz je od góry do dołu czy od lewego do prawego?
Jeżeli ma do dyspozycji tylko jeden neuron z trzema wejściami to moim zdaniem powinien cyklicznie podawać kawałki wektora wejściowego aż do jego końca.
kolejne "że co?"... Po pierwsze nikt nie powiedział (nie potwierdził), że długość tych danych reprezentuje jeden wzorzec (przynajmniej ja tak zrozumiałem dylemat autora). Nie wiadomo, czy jeden zestaw wejściowy to są kolumny czy części wierszy czy jeszcze inaczej... Jeśli części wierszy to gratuluję autorowi zadania - chyba za dużo osób u niego zdaje więc robi ludziom kisiel z mózgu. Jeśli zadanie jest dokładnie takie jak autor przedstawił to z niego w sumie nic nie wynika... W zadaniu powinno być jasno wskazane, które dane co reprezentują (za co odpowiadają).
Ja obstawiałbym, biorąc pod uwagę niejasność zadania, tak jak autor postu, że dane wejściowe są tylko 3 - tyle jest wag i nic się tu nie zmieni. Natomiast pozostałe kolumny odpowiadają kolejnym danym uczącym.
BTW. ralf powinien wiedzieć z zajęć jak interpretować swoje dane wejściowe i co one reprezentują.
Taa, tu się zgodzę :)
Pozdrawiam