РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
206 of 824 menu

Класс MaxPooling2D

Класс MaxPooling2D применяется к двумерным данным, например, к изображениям или картам признаков сверточных слоев. Слой разбивает входной тензор на окна заданного размера и выбирает максимальное значение в каждом окне. Первым параметром передается размер пула pool_size, вторым - шаг strides, третьим - тип заполнения padding.

Синтаксис

tf.keras.layers.MaxPooling2D( pool_size=(2, 2), strides=None, padding='valid', data_format=None )

Пример

Давайте создадим слой максимального пулинга с окном 2 на 2 и применим его к двумерному тензору:

import tensorflow as tf t = tf.constant([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]], dtype=tf.float32) t = tf.expand_dims(t, axis=-1) layer = tf.keras.layers.MaxPooling2D(pool_size=(2, 2)) res = layer(t) print(res.shape) print(res.numpy())

Результат выполнения кода:

(1, 2, 2, 1) [[[[ 6.] [ 8.]] [[14.] [16.]]]]

Пример

Давайте изменим шаг пулинга с помощью параметра strides:

import tensorflow as tf t = tf.constant([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]], dtype=tf.float32) t = tf.expand_dims(t, axis=-1) layer = tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(1, 1)) res = layer(t) print(res.shape) print(res.numpy())

Результат выполнения кода:

(1, 3, 3, 1) [[[[ 6.] [ 7.] [ 8.]] [[10.] [11.] [12.]] [[14.] [15.] [16.]]]]

Пример

Давайте используем заполнение padding='same', чтобы сохранить размерность выхода:

import tensorflow as tf t = tf.constant([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]], dtype=tf.float32) t = tf.expand_dims(t, axis=-1) layer = tf.keras.layers.MaxPooling2D(pool_size=(2, 2), padding='same') res = layer(t) print(res.shape) print(res.numpy())

Результат выполнения кода:

(1, 2, 2, 1) [[[[ 6.] [ 8.]] [[14.] [16.]]]]

Пример

Давайте применим слой максимального пулинга в составе модели:

import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(4, 4, 1)), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(2, activation='softmax') ]) t = tf.constant([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]], dtype=tf.float32) t = tf.expand_dims(t, axis=-1) res = model(t) print(res.shape) print(res.numpy())

Результат выполнения кода:

(1, 2) [[0.5 0.5]]

Смотрите также

  • класс MaxPooling1D,
    который выполняет максимальный пулинг над одномерными данными
  • класс MaxPooling3D,
    который выполняет максимальный пулинг над трехмерными данными
  • класс AveragePooling2D,
    который выполняет усредняющий пулинг над двумерными данными
  • класс Conv2D,
    который выполняет двумерную свертку над входными данными
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить