Слои пулинга выполняют задачу уменьшения пространственных размеров входного тензора, сохраняя при этом ключевые признаки. Основная цель — снижение вычислительной сложности и уменьшение риска переобучения за счет введения пространственной инвариантности.
Описание MaxPooling2D выбирает максимальное значение из каждой области (окна) входного тензора. Он используется в основном после сверточных слоев для сохранения наиболее выраженных признаков.
Синтаксис
const maxPoolLayer = new KerasJS.layers.MaxPooling2D({
poolSize: [2, 2],
strides: [2, 2],
padding: 'valid'
});
Параметры
poolSize: Размер окна пулинга. Чаще всего
[2, 2].strides: Шаг перемещения окна. Если не задан, равен
poolSize.padding: 'valid' — без добавления,
'same' — добавление нулей для сохранения размеров.Особенности применения
Описание AveragePooling2D вычисляет среднее значение элементов внутри окна. Это позволяет получать более сглаженные признаки по сравнению с MaxPooling.
Синтаксис
const avgPoolLayer = new KerasJS.layers.AveragePooling2D({
poolSize: [2, 2],
strides: [2, 2],
padding: 'valid'
});
Параметры
poolSize,
strides, padding).Особенности применения
Описание GlobalAveragePooling2D выполняет усреднение по всей пространственной размерности тензора, превращая двумерные карты признаков в одномерный вектор.
Синтаксис
const globalAvgPoolLayer = new KerasJS.layers.GlobalAveragePooling2D();
Особенности применения
[height, width, channels] в
[channels].| Слой | Основная функция | Сильные стороны | Ограничения |
|---|---|---|---|
| MaxPooling2D | Выбор максимального значения | Сохраняет ярко выраженные признаки | Игнорирует менее значимые признаки |
| AveragePooling2D | Усреднение значений | Сглаживает шум, более устойчив к выбросам | Теряет локальные особенности |
| GlobalAveragePooling2D | Усреднение по всей карте признаков | Преобразует в компактный вектор, регуляризация | Потеря пространственной информации |
'same' помогает сохранить
размерность при использовании сложных архитектур, особенно при глубокой
сети.Слои пулинга являются ключевым инструментом при проектировании сверточных нейронных сетей в Keras.js, позволяя эффективно управлять размерностью данных и извлекать важные признаки без чрезмерного усложнения модели.