НачатьНачать бесплатно

Напишите собственную операцию пулинга

Как мы уже видели, свёрточные нейронные сети могут содержать очень много параметров. Чтобы суммировать выходные данные свёрточных слоёв в сжатом виде и уменьшить количество параметров в следующем слое, между свёрточными слоями часто добавляют слои пулинга. Это позволяет ускорить обучение сети или справиться с ситуацией, когда данных недостаточно для оценки большого числа параметров.

Слой пулинга можно рассматривать как особый вид свёртки. Для каждого окна на входном изображении он находит максимальное значение пикселя и передаёт дальше только это значение. В этом упражнении вы напишете собственную операцию максимального пулинга, опираясь на код, который ранее использовался для реализации двумерной свёртки.

Это упражнение является частью курса

Моделирование изображений с помощью 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(____)
Редактировать и запускать код