Napisz własną operację poolingu
Jak już wiesz, sieci CNN mogą mieć bardzo dużo parametrów. Warstwy poolingu są często dodawane między warstwami splotowymi sieci neuronowej, aby w skondensowany sposób podsumować ich wyniki i zmniejszyć liczbę parametrów w kolejnej warstwie. Może to być przydatne, gdy chcesz szybciej wytrenować sieć lub gdy nie masz wystarczająco dużo danych, by nauczyć się bardzo dużej liczby parametrów.
Warstwę poolingu można opisać jako szczególny rodzaj splotu. Dla każdego okna w danych wejściowych znajdowana jest maksymalna wartość piksela i tylko ta wartość jest przekazywana dalej. W tym ćwiczeniu napiszesz własną operację max poolingu, korzystając z kodu, którego wcześniej użyto do implementacji dwuwymiarowej operacji splotu.
To ćwiczenie jest częścią kursu
Modelowanie obrazów z Keras
Instrukcje do ćwiczenia
- Zaindeksuj tablicę wejściową (
im) i wybierz odpowiednie okno. - Znajdź wartość maksymalną w tym oknie.
- Przypisz ją do odpowiedniego miejsca w tablicy wyjściowej (
result).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Result placeholder
result = np.zeros((im.shape[0]//2, im.shape[1]//2))
# Pooling operation
for ii in range(result.shape[0]):
for jj in range(result.shape[1]):
result[ii, jj] = np.max(____)