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" padding: output_shape = (input_shape - pool_size + 1) / strides)
Результирующая форма выходных данных при использовании опции "same" padding: output_shape = input_shape / strides
Например, для stride=(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)>
Например, для stride=(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=(1, 1), padding='valid')
max_pool_2d(x)
<tf.Tensor: shape=(1, 2, 3, 1), dtype=float32, numpy=
array([[[[ 6.],
[ 7.],
[ 8.]],
[[10.],
[11.],
[12.]]]], 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)
Например, для stride=(1,1) и padding="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 тензор, представляющий максимальные значения пулинга. См. выше для формы выходных данных. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/layers/MaxPool2D