Spec-Zone.ru › TensorFlow 2.9

tf.keras.layers.MaxPool2D

Просмотреть исходный код на GitHub

Операция максимального пулинга для 2D пространственных данных.

Наследуется от: Layer, Module

Просмотр псевдонимов

Основные псевдонимы

tf.keras.layers.MaxPooling2D

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.keras.layers.MaxPool2D, tf.compat.v1.keras.layers.MaxPooling2D

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

Уменьшает размер входных данных по пространственным измерениям (высота и ширина), выбирая максимальное значение по входному окну (размер которого определяется pool_size) для каждого канала входных данных. Окно сдвигается на strides по каждому измерению.

Полученная выходная форма, при использовании параметра "valid" заполнения, имеет пространственную форму (количество строк или столбцов) output_shape = math.floor((input_shape - pool_size) / strides) + 1 (когда input_shape >= pool_size)

Полученная выходная форма при использовании параметра "same" заполнения: output_shape = math.floor((input_shape - 1) / strides) + 1

Например, для strides=(1, 1) и padding="valid":

x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])
x = tf.reshape(x, [1, 3, 3, 1])
max_pool_2d = tf.keras.layers.MaxPooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='valid')
max_pool_2d(x)
<tf.Tensor: shape=(1, 2, 2, 1), dtype=float32, numpy=
  array([[[[5.],
           [6.]],
          [[8.],
           [9.]]]], dtype=float32)>

Например, для strides=(2, 2) и padding="valid":

x = tf.constant([[1., 2., 3., 4.],
                 [5., 6., 7., 8.],
                 [9., 10., 11., 12.]])
x = tf.reshape(x, [1, 3, 4, 1])
max_pool_2d = tf.keras.layers.MaxPooling2D(pool_size=(2, 2),
   strides=(2, 2), padding='valid')
max_pool_2d(x)
<tf.Tensor: shape=(1, 1, 2, 1), dtype=float32, numpy=
  array([[[[6.],
           [8.]]]], dtype=float32)>

Пример использования:

input_image = tf.constant([[[[1.], [1.], [2.], [4.]],
                           [[2.], [2.], [3.], [2.]],
                           [[4.], [1.], [1.], [1.]],
                           [[2.], [2.], [1.], [4.]]]])
output = tf.constant([[[[1], [0]],
                      [[0], [1]]]])
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2),
   input_shape=(4, 4, 1)))
model.compile('adam', 'mean_squared_error')
model.predict(input_image, steps=1)
array([[[[2.],
         [4.]],
        [[4.],
         [4.]]]], dtype=float32)

Например, для шага (1, 1) и заполнения "same":

x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])
x = tf.reshape(x, [1, 3, 3, 1])
max_pool_2d = tf.keras.layers.MaxPooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='same')
max_pool_2d(x)
<tf.Tensor: shape=(1, 3, 3, 1), dtype=float32, numpy=
  array([[[[5.],
           [6.],
           [6.]],
          [[8.],
           [9.],
           [9.]],
          [[8.],
           [9.],
           [9.]]]], dtype=float32)>
Аргументы
pool_size целое число или кортеж из 2 целых чисел, размер окна, по которому берется максимум. (2, 2) будет брать максимальное значение по окну пулинга 2x2. Если указано только одно целое число, то одинаковая длина окна будет использоваться для обоих измерений.
strides Целое число, кортеж из 2 целых чисел или None. Значения шагов. Указывает, насколько окно пулинга перемещается на каждый шаг пулинга. Если None, то по умолчанию используется pool_size.
padding Один из "valid" или "same" (регистр не учитывается). "valid" означает отсутствие заполнения. "same" приводит к равномерному дополнению слева/справа или сверху/снизу ввода, таким образом, что выходная высота/ширина равны входной.
data_format Строка, одна из channels_last (по умолчанию) или channels_first. Порядок измерений во входных данных. channels_last соответствует входным данным с формой (batch, height, width, channels), а channels_first соответствует входным данным с формой (batch, channels, height, width). По умолчанию используется значение image_data_format из файла конфигурации Keras по адресу ~/.keras/keras.json. Если вы его никогда не устанавливали, то он будет "channels_last".

Форма входных данных:

  • Если data_format='channels_last': 4D тензор с формой (batch_size, rows, cols, channels).
  • Если data_format='channels_first': 4D тензор с формой (batch_size, channels, rows, cols).

Форма выходных данных:

  • Если data_format='channels_last': 4D тензор с формой (batch_size, pooled_rows, pooled_cols, channels).
  • Если data_format='channels_first': 4D тензор с формой (batch_size, channels, pooled_rows, pooled_cols).
Возвращает
4D тензор, представляющий максимальные значения пулинга. Смотрите выше для формы выходных данных.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/layers/MaxPool2D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API