2015-05-30 1 views
12

Szukam zmiany hnn package w celu obsługi różnych funkcji aktywacji dla każdego węzła w sieci. Funkcjafunkcja mapowania z listy do danych

W szczególności this line i this line stosowanie specyficznych (aktywacja), ale staram się rozszerzyć, że aby wesprzeć coś takiego:

evalNet [email protected](Network{..}) inputs activations = do 
    s <- foldM (\x -> computeStepM n x (activations!!N)) state inputsV 

gdzie N jest węzeł id/indeks.

Obecnie jestem etapem, w którym mam listę funkcji aktywacyjnych o tej samej długości co ilość węzłów w sieci.

Potrzebuję pomocy (jak zagubiłem się w kodzie źródłowym pakietu), aby znaleźć sposób zastosowania funkcji Nthactivations z listy.

EDIT: Próbowałem StateT podejście korzystając tick (z dokumentacją) i stosując zip funkcję zarówno dać wiele egzekucje na każdym kroku, więc końcowy wynik będzie źle

Odpowiedz

3

Na mapie może chcesz coś podobnego

as = [(+1),(*2),(+(-3))] 
xs = [4,5,6] 
main = print $ zipWith ($) as xs 

Złożenie jest bardziej skomplikowane, ale można to zrobić przy użyciu tej samej idei: zamień wejścia za pomocą odpowiednich funkcji aktywacji i zmień złożoną funkcję, aby użyć wartości przychodzących krotek.

Jednak wątpię, czy naprawdę potrzebujesz/chcesz zmienić zakładkę. Jeśli się nie mylę, należy spasować po prostu na liście funkcji aktywacyjnych. Więc właściwie nie ma nic do zrobienia.

+0

Czy można zatem zrobić: 'zipWith activations $! zipVectorWith (-) (wagi <> prefixed) thresh' zamiast linii 93? –

+0

Myślę, że to ma sens. Przetestowany https://gist.githubusercontent.com/rememmber/caf1401e60d7a99d48fa/raw/128b8780280bfd94f74baa1280c629fad0c6fb09/gistfile1.hs –

+0

ALE! "computeStep" moim zdaniem nie ma WSZYSTKICH danych. Dlatego też rozmiary list byłyby różne. –