Пространственный Dropout является специализированной формой регуляризации нейронных сетей, которая применяется преимущественно в сверточных и последовательных моделях. Основная цель этих слоев — предотвращение переобучения за счет случайного «отключения» целых каналов входных данных вместо отдельных нейронов. Это особенно важно для сетей, работающих с пространственно-зависимыми признаками, такими как изображения или временные ряды.
Назначение: применяется к данным размерности
(samples, timesteps, features) — обычно к
последовательностям, например, к временным рядам или текстовым данным
после слоя эмбеддинга.
Принцип работы: вместо случайного зануления отдельных значений, слой отключает все элементы одного канала признаков на всей временной шкале. Это сохраняет структуру временной зависимости, что критично для рекуррентных и последовательных моделей.
Параметры:
rate — вероятность зануления канала (float от 0 до
1).noise_shape — необязательный параметр, позволяет
задавать маску нестандартной формы.seed — для воспроизводимости случайных операций.Пример использования:
const spatialDropout1D = new KerasJS.layers.SpatialDropout1D({
rate: 0.3,
inputShape: [100, 64] // 100 временных шагов, 64 признака
});
Особенности:
Embedding и LSTM, где
важно сохранять временную структуру.Dropout1D, не разрывает
корреляцию между временными шагами.Назначение: используется для данных размерности
(samples, rows, cols, channels) — чаще всего для
изображений после сверточных слоев.
Принцип работы: слой случайно отключает целые каналы признаков изображения, сохраняя внутреннюю пространственную структуру каждого канала. Это предотвращает переобучение модели, которая может слишком сильно зависеть от отдельных фильтров.
Параметры:
rate — вероятность зануления канала.dataFormat — формат входных данных,
'channelsLast' (по умолчанию) или
'channelsFirst'.seed — для фиксирования генератора случайных
чисел.Пример использования:
const spatialDropout2D = new KerasJS.layers.SpatialDropout2D({
rate: 0.2,
inputShape: [32, 32, 128] // 32x32 изображения, 128 каналов
});
Особенности:
Conv2D) или слоев
нормализации.| Слой | Отключение элементов | Сохраняет пространственную структуру |
|---|---|---|
| Dropout | отдельные нейроны | нет |
| SpatialDropout1D | каналы признаков | да, по временной оси |
| SpatialDropout2D | каналы изображений | да, сохраняется внутренняя структура |
Ключевое отличие — масштабирование и целенаправленное отключение каналов, а не отдельных элементов. Это улучшает устойчивость сети к переобучению, сохраняя критические пространственные или временные зависимости в данных.
Вероятность зануления (rate) обычно
выбирается в диапазоне 0.1–0.5 в зависимости от размера модели и объема
данных.
Расположение слоя:
Комбинация с другими регуляризаторами:
SpatialDropout хорошо сочетается с BatchNormalization, но
порядок слоев важен — сначала нормализация, затем Dropout.
В Keras.js слои SpatialDropout1D и
SpatialDropout2D доступны через модуль layers.
Они полностью поддерживают сериализацию моделей из Keras (Python), что
позволяет загружать предварительно обученные модели и выполнять инференс
в браузере или на сервере с Node.js.
Особенность использования в Keras.js: