Próbuję lepiej zrozumieć splotowe sieci neuronowe, pisząc kod Pythona, który nie zależy od bibliotek (takich jak Convnet lub TensorFlow), i utknąłem w literaturze na temat wyboru wartości dla macierzy jądra, kiedy przeprowadzanie splotu obrazu.
Próbuję zrozumieć szczegóły implementacji na etapie między mapami funkcji na poniższym obrazku pokazującym warstwy CNN.
Zgodnie z tym schematem:
Jądro macierzy jądra „przesuwa się” nad obrazem, tworząc mapę cech, w której każdy piksel jest sumą wszystkich produktów pod względem elementu między każdą wagą jądra (lub matrycy filtra) a odpowiednią wartością piksela obrazu wejściowego.
Moje pytanie brzmi: w jaki sposób inicjujemy wagi macierzy jądra (lub filtru)?
W powyższej demonstracji są to po prostu 1 i 0, ale zakładam, że jest to uproszczone ze względu na schemat.
Czy te ciężary są trenowane na jakimś etapie przetwarzania wstępnego? Czy został wybrany przez użytkownika?
źródło
Nie mogę komentować z powodu niskiej reputacji, dlatego piszę to w odpowiedzi na pytanie Felipe Almeidy. Po doskonałej odpowiedzi Indie AI nie ma już nic do dodania. Jeśli chcesz wykryć określone kształty (np. X), możesz wstępnie zdefiniować określony filtr, jak ma to miejsce w przypadku wykrywania krawędzi. Ale to jest piękno głębokiego uczenia się, jest tak wiele warstw, tyle filtrów i tyle iteracji, że filtry uczą się prawie każdego kształtu obiektu, który jest potrzebny. Teoretycznie, jeśli wykryty zostanie X, jeden z filtrów nauczy się wykrywać X (jako żółty filtr)
źródło