tf.keras.layers.MaxPool2D
Stay organized with collections
Save and categorize content based on your preferences.
Max pooling operation for 2D spatial data.
tf.keras.layers.MaxPool2D(
pool_size=(2, 2), strides=None, padding='valid', data_format=None, **kwargs
)
Downsamples the input representation by taking the maximum value over the
window defined by pool_size
for each dimension along the features axis.
The window is shifted by strides
in each dimension. The resulting output
when using "valid" padding option has a shape(number of rows or columns) of:
output_shape = (input_shape - pool_size + 1) / strides)
The resulting output shape when using the "same" padding option is:
output_shape = input_shape / strides
For example, for stride=(1,1) and 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)>
For example, for stride=(2,2) and 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)>
Usage Example:
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)
For example, for stride=(1,1) and 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)>
Arguments |
pool_size
|
integer or tuple of 2 integers,
window size over which to take the maximum.
(2, 2) will take the max value over a 2x2 pooling window.
If only one integer is specified, the same window length
will be used for both dimensions.
|
strides
|
Integer, tuple of 2 integers, or None.
Strides values. Specifies how far the pooling window moves
for each pooling step. If None, it will default to pool_size .
|
padding
|
One of "valid" or "same" (case-insensitive).
"valid" adds no zero padding. "same" adds padding such that if the stride
is 1, the output shape is the same as input shape.
|
data_format
|
A string,
one of channels_last (default) or channels_first .
The ordering of the dimensions in the inputs.
channels_last corresponds to inputs with shape
(batch, height, width, channels) while channels_first
corresponds to inputs with shape
(batch, channels, height, width) .
It defaults to the image_data_format value found in your
Keras config file at ~/.keras/keras.json .
If you never set it, then it will be "channels_last".
|
- If
data_format='channels_last'
:
4D tensor with shape (batch_size, rows, cols, channels)
.
- If
data_format='channels_first'
:
4D tensor with shape (batch_size, channels, rows, cols)
.
Output shape:
- If
data_format='channels_last'
:
4D tensor with shape (batch_size, pooled_rows, pooled_cols, channels)
.
- If
data_format='channels_first'
:
4D tensor with shape (batch_size, channels, pooled_rows, pooled_cols)
.
Returns |
A tensor of rank 4 representing the maximum pooled values. See above for
output shape.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-10-01 UTC.
[null,null,["Last updated 2020-10-01 UTC."],[],[],null,["# tf.keras.layers.MaxPool2D\n\n\u003cbr /\u003e\n\n|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|\n| [TensorFlow 1 version](/versions/r1.15/api_docs/python/tf/keras/layers/MaxPool2D) | [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.3.0/tensorflow/python/keras/layers/pooling.py#L330-L461) |\n\nMax pooling operation for 2D spatial data.\n\n#### View aliases\n\n\n**Main aliases**\n\n[`tf.keras.layers.MaxPooling2D`](/api_docs/python/tf/keras/layers/MaxPool2D)\n**Compat aliases for migration**\n\nSee\n[Migration guide](https://www.tensorflow.org/guide/migrate) for\nmore details.\n\n[`tf.compat.v1.keras.layers.MaxPool2D`](/api_docs/python/tf/keras/layers/MaxPool2D), [`tf.compat.v1.keras.layers.MaxPooling2D`](/api_docs/python/tf/keras/layers/MaxPool2D)\n\n\u003cbr /\u003e\n\n tf.keras.layers.MaxPool2D(\n pool_size=(2, 2), strides=None, padding='valid', data_format=None, **kwargs\n )\n\nDownsamples the input representation by taking the maximum value over the\nwindow defined by `pool_size` for each dimension along the features axis.\nThe window is shifted by `strides` in each dimension. The resulting output\nwhen using \"valid\" padding option has a shape(number of rows or columns) of:\n`output_shape = (input_shape - pool_size + 1) / strides)`\n\nThe resulting output shape when using the \"same\" padding option is:\n`output_shape = input_shape / strides`\n\nFor example, for stride=(1,1) and padding=\"valid\": \n\n x = tf.constant([[1., 2., 3.],\n [4., 5., 6.],\n [7., 8., 9.]])\n x = tf.reshape(x, [1, 3, 3, 1])\n max_pool_2d = tf.keras.layers.MaxPooling2D(pool_size=(2, 2),\n strides=(1, 1), padding='valid')\n max_pool_2d(x)\n \u003ctf.Tensor: shape=(1, 2, 2, 1), dtype=float32, numpy=\n array([[[[5.],\n [6.]],\n [[8.],\n [9.]]]], dtype=float32)\u003e\n\nFor example, for stride=(2,2) and padding=\"valid\": \n\n x = tf.constant([[1., 2., 3., 4.],\n [5., 6., 7., 8.],\n [9., 10., 11., 12.]])\n x = tf.reshape(x, [1, 3, 4, 1])\n max_pool_2d = tf.keras.layers.MaxPooling2D(pool_size=(2, 2),\n strides=(1, 1), padding='valid')\n max_pool_2d(x)\n \u003ctf.Tensor: shape=(1, 2, 3, 1), dtype=float32, numpy=\n array([[[[ 6.],\n [ 7.],\n [ 8.]],\n [[10.],\n [11.],\n [12.]]]], dtype=float32)\u003e\n\n#### Usage Example:\n\n input_image = tf.constant([[[[1.], [1.], [2.], [4.]],\n [[2.], [2.], [3.], [2.]],\n [[4.], [1.], [1.], [1.]],\n [[2.], [2.], [1.], [4.]]]])\n output = tf.constant([[[[1], [0]],\n [[0], [1]]]])\n model = tf.keras.models.Sequential()\n model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2),\n input_shape=(4,4,1)))\n model.compile('adam', 'mean_squared_error')\n model.predict(input_image, steps=1)\n array([[[[2.],\n [4.]],\n [[4.],\n [4.]]]], dtype=float32)\n\nFor example, for stride=(1,1) and padding=\"same\": \n\n x = tf.constant([[1., 2., 3.],\n [4., 5., 6.],\n [7., 8., 9.]])\n x = tf.reshape(x, [1, 3, 3, 1])\n max_pool_2d = tf.keras.layers.MaxPooling2D(pool_size=(2, 2),\n strides=(1, 1), padding='same')\n max_pool_2d(x)\n \u003ctf.Tensor: shape=(1, 3, 3, 1), dtype=float32, numpy=\n array([[[[5.],\n [6.],\n [6.]],\n [[8.],\n [9.],\n [9.]],\n [[8.],\n [9.],\n [9.]]]], dtype=float32)\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Arguments --------- ||\n|---------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `pool_size` | integer or tuple of 2 integers, window size over which to take the maximum. `(2, 2)` will take the max value over a 2x2 pooling window. If only one integer is specified, the same window length will be used for both dimensions. |\n| `strides` | Integer, tuple of 2 integers, or None. Strides values. Specifies how far the pooling window moves for each pooling step. If None, it will default to `pool_size`. |\n| `padding` | One of `\"valid\"` or `\"same\"` (case-insensitive). \"valid\" adds no zero padding. \"same\" adds padding such that if the stride is 1, the output shape is the same as input shape. |\n| `data_format` | A string, one of `channels_last` (default) or `channels_first`. The ordering of the dimensions in the inputs. `channels_last` corresponds to inputs with shape `(batch, height, width, channels)` while `channels_first` corresponds to inputs with shape `(batch, channels, height, width)`. It defaults to the `image_data_format` value found in your Keras config file at `~/.keras/keras.json`. If you never set it, then it will be \"channels_last\". |\n\n\u003cbr /\u003e\n\n#### Input shape:\n\n- If `data_format='channels_last'`: 4D tensor with shape `(batch_size, rows, cols, channels)`.\n- If `data_format='channels_first'`: 4D tensor with shape `(batch_size, channels, rows, cols)`.\n\n#### Output shape:\n\n- If `data_format='channels_last'`: 4D tensor with shape `(batch_size, pooled_rows, pooled_cols, channels)`.\n- If `data_format='channels_first'`: 4D tensor with shape `(batch_size, channels, pooled_rows, pooled_cols)`.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| A tensor of rank 4 representing the maximum pooled values. See above for output shape. ||\n\n\u003cbr /\u003e"]]