tf.keras.layers.MaxPool2D
| Просмотреть исходный код на GitHub |
Операция максимального пулинга для 2D пространственных данных.
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