Напишите собственную операцию пулинга
Как мы уже видели, свёрточные нейронные сети могут содержать очень много параметров. Чтобы суммировать выходные данные свёрточных слоёв в сжатом виде и уменьшить количество параметров в следующем слое, между свёрточными слоями часто добавляют слои пулинга. Это позволяет ускорить обучение сети или справиться с ситуацией, когда данных недостаточно для оценки большого числа параметров.
Слой пулинга можно рассматривать как особый вид свёртки. Для каждого окна на входном изображении он находит максимальное значение пикселя и передаёт дальше только это значение. В этом упражнении вы напишете собственную операцию максимального пулинга, опираясь на код, который ранее использовался для реализации двумерной свёртки.
Это упражнение является частью курса
Моделирование изображений с помощью Keras
Инструкции к упражнению
- Обратитесь к входному массиву (
im) и выберите нужное окно. - Найдите максимальное значение в этом окне.
- Запишите результат в соответствующий элемент выходного массива (
result).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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(____)