Jakie są / są domyślnymi filtrami używanymi przez Keras Convolution2d ()?


18

Jestem całkiem nowy w sieciach neuronowych, ale całkiem przyzwoicie rozumiem algebrę liniową i matematykę splotu.

Próbuję zrozumieć przykładowy kod znajdujący się w różnych miejscach w sieci do szkolenia splotowego NN Keras z danymi MNIST do rozpoznawania cyfr. Oczekuję, że kiedy utworzę warstwę splotową, będę musiał określić filtr lub zestaw filtrów do zastosowania na wejściu. Ale wszystkie trzy próbki, które znalazłem, tworzą taką warstwę splotową:

model.add(Convolution2D(nb_filter = 32, nb_row = 3, nb_col = 3,
                        border_mode='valid',
                        input_shape=input_shape))

Wydaje się, że dotyczy to w sumie 32 filtrów 3x3 do obrazów przetwarzanych przez CNN. Ale czym są te filtry? Jak opisałbym je matematycznie? Dokumentacja keras nie jest pomocna.

Z góry dziękuję,


2
Wynika to ze zrozumienia części CNN dotyczącej konwolucji. Możesz przeczytać tutaj: cs231n.github.io/convolutional-networks
Christian Safka

Odpowiedzi:


15

Domyślnie filtry W są inicjowane losowo przy użyciu glorot_uniformmetody, która pobiera wartości z rozkładu jednolitego z dodatnimi i ujemnymi granicami opisanymi w następujący sposób:

W.U(6njan+nout,-6njan+nout),

njannout

Gdy używasz sieci do prognozowania, filtry te są stosowane na każdej warstwie sieci. Oznacza to, że dla każdego filtra na każdym obrazie wejściowym wykonywana jest dyskretna splot, a wyniki tych zwojów są podawane do następnej warstwy zwojów (lub w pełni połączonej warstwy lub cokolwiek innego, co można mieć).

Podczas treningu wartości w filtrach są optymalizowane na podstawie propagacji wstecznej w odniesieniu do funkcji utraty. Do zadań klasyfikacyjnych, takich jak rozpoznawanie cyfr, zwykle stosuje się utratę entropii krzyżowej. Oto wizualizacja niektórych filtrów wyuczonych w pierwszej warstwie (u góry) i filtrów wyuczonych w drugiej warstwie (u dołu) sieci splotowej:

wizualizacja filtrów sieci konw

Jak widać, filtry pierwszej warstwy w zasadzie wszystkie działają jak proste detektory krawędzi, podczas gdy filtry drugiej warstwy są bardziej złożone. Gdy wchodzisz głębiej w sieć, filtry są w stanie wykryć bardziej złożone kształty. Jednak wizualizacja staje się trochę trudna, ponieważ filtry te działają na obrazy, które były już wielokrotnie złożone i prawdopodobnie nie przypominają oryginalnego naturalnego obrazu.


5
glorot_uniformnie używa rozkładu normalnego. Myślę, że opisujesz glorot_normal. Nie sądzę, żeby miało to duże znaczenie dla odpowiedzi - kluczowe punkty to losowa inicjalizacja, a następnie efekty treningu. Być może warto wyjaśnić, w jaki sposób wyszkolone filtry wyglądają jak filtry krawędzi / narożników itp. (Być może z jednym z klasycznych obrazów przed / po treningu obrazowania filtrów pierwszej warstwy).
Neil Slater

Tim, dziękuję za zapewnienie matematyki. @Neil Slater - twój pogląd, że filtry po treningu z propagacją wsteczną mogą wyglądać jak wykrywanie krawędzi itp., Był bardzo pomocny. Gdybym miał więcej reputacji, dałbym +1 obu twoim wkładom.
ChrisFal

@NeilSlater Dzięki za komentarz - masz rację, ja mylić glorot_normali glorot_uniform, a ja zaktualizowane odpowiedź na to odzwierciedlać. Dodałem także trochę dodatkowych informacji o tym, jak kończą się filtry, jak zasugerowałeś.
timleathart

6

ZAfakbk(ja,jot)

bk(ja,jot)=(fakZA)(ja,jot)=l=0,1,2)m=0,1,2)fak(l,m)ZA(ja-l,jot-m)

wprowadź opis zdjęcia tutaj

Model traned wyszkoli jądra zgodnie z funkcją kosztu, a ostatecznie te jądra są filtrami twojego modelu.


Zrozumiałem tę matematykę, ale jestem pewien, że wielu czytelników tego wątku uzna diagram za pomocny. Więc dziękuję!
ChrisFal

imghost.in/images/2018/03/06/XvatD.jpg może obraz musi być ze współrzędnymi (0,0) na B?
vinnitu

@vinnitu tak, rzeczywiście. Właściwie muszę też zmodyfikować B na Bk (i, j), (i = 0,1,2, j = 0,1,2).
lucky6qi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.