tf.keras.layers.MaxPool2D
Stay organized with collections
Save and categorize content based on your preferences.
Max pooling operation for 2D spatial data.
Inherits From: Layer
, Operation
tf.keras.layers.MaxPool2D(
pool_size=(2, 2),
strides=None,
padding='valid',
data_format=None,
name=None,
**kwargs
)
Used in the notebooks
Used in the guide |
Used in the tutorials |
|
|
Downsamples the input along its spatial dimensions (height and width)
by taking the maximum value over an input window
(of size defined by pool_size
) for each channel of the input.
The window is shifted by strides
along each dimension.
The resulting output when using the "valid"
padding option has a spatial
shape (number of rows or columns) of:
output_shape = math.floor((input_shape - pool_size) / strides) + 1
(when input_shape >= pool_size
)
The resulting output shape when using the "same"
padding option is:
output_shape = math.floor((input_shape - 1) / strides) + 1
Args |
pool_size
|
int or tuple of 2 integers, factors by which to downscale
(dim1, dim2). If only one integer is specified, the same
window length will be used for all dimensions.
|
strides
|
int or tuple of 2 integers, or None. Strides values. If None,
it will default to pool_size . If only one int is specified, the
same stride size will be used for all dimensions.
|
padding
|
string, either "valid" or "same" (case-insensitive).
"valid" means no padding. "same" results in padding evenly to
the left/right or up/down of the input such that output has the same
height/width dimension as the input.
|
data_format
|
string, either "channels_last" 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, height, width, channels)
.
- If
data_format="channels_first"
:
4D tensor with shape (batch_size, channels, height, width)
.
Output shape:
- If
data_format="channels_last"
:
4D tensor with shape
(batch_size, pooled_height, pooled_width, channels)
.
- If
data_format="channels_first"
:
4D tensor with shape
(batch_size, channels, pooled_height, pooled_width)
.
Examples:
strides=(1, 1)
and padding="valid"
:
x = np.array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
x = np.reshape(x, [1, 3, 3, 1])
max_pool_2d = keras.layers.MaxPooling2D(pool_size=(2, 2),
strides=(1, 1), padding="valid")
max_pool_2d(x)
strides=(2, 2)
and padding="valid"
:
x = np.array([[1., 2., 3., 4.],
[5., 6., 7., 8.],
[9., 10., 11., 12.]])
x = np.reshape(x, [1, 3, 4, 1])
max_pool_2d = keras.layers.MaxPooling2D(pool_size=(2, 2),
strides=(2, 2), padding="valid")
max_pool_2d(x)
stride=(1, 1)
and padding="same"
:
x = np.array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
x = np.reshape(x, [1, 3, 3, 1])
max_pool_2d = keras.layers.MaxPooling2D(pool_size=(2, 2),
strides=(1, 1), padding="same")
max_pool_2d(x)
Attributes |
input
|
Retrieves the input tensor(s) of a symbolic operation.
Only returns the tensor(s) corresponding to the first time
the operation was called.
|
output
|
Retrieves the output tensor(s) of a layer.
Only returns the tensor(s) corresponding to the first time
the operation was called.
|
Methods
from_config
View source
@classmethod
from_config(
config
)
Creates a layer from its config.
This method is the reverse of get_config
,
capable of instantiating the same layer from the config
dictionary. It does not handle layer connectivity
(handled by Network), nor weights (handled by set_weights
).
Args |
config
|
A Python dictionary, typically the
output of get_config.
|
Returns |
A layer instance.
|
symbolic_call
View source
symbolic_call(
*args, **kwargs
)
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. Some content is licensed under the numpy license.
Last updated 2024-06-07 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-06-07 UTC."],[],[],null,["# tf.keras.layers.MaxPool2D\n\n\u003cbr /\u003e\n\n|----------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/layers/pooling/max_pooling2d.py#L5-L107) |\n\nMax pooling operation for 2D spatial data.\n\nInherits From: [`Layer`](../../../tf/keras/Layer), [`Operation`](../../../tf/keras/Operation)\n\n#### View aliases\n\n\n**Main aliases**\n\n[`tf.keras.layers.MaxPooling2D`](https://www.tensorflow.org/api_docs/python/tf/keras/layers/MaxPool2D)\n\n\u003cbr /\u003e\n\n tf.keras.layers.MaxPool2D(\n pool_size=(2, 2),\n strides=None,\n padding='valid',\n data_format=None,\n name=None,\n **kwargs\n )\n\n### Used in the notebooks\n\n| Used in the guide | Used in the tutorials |\n|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - [Effective Tensorflow 2](https://www.tensorflow.org/guide/effective_tf2) - [Sparse weights using structural pruning](https://www.tensorflow.org/model_optimization/guide/pruning/pruning_with_sparsity_2_by_4) | - [Image classification](https://www.tensorflow.org/tutorials/images/classification) - [Data augmentation](https://www.tensorflow.org/tutorials/images/data_augmentation) - [Load and preprocess images](https://www.tensorflow.org/tutorials/load_data/images) - [Custom training with tf.distribute.Strategy](https://www.tensorflow.org/tutorials/distribute/custom_training) - [Convolutional Neural Network (CNN)](https://www.tensorflow.org/tutorials/images/cnn) |\n\nDownsamples the input along its spatial dimensions (height and width)\nby taking the maximum value over an input window\n(of size defined by `pool_size`) for each channel of the input.\nThe window is shifted by `strides` along each dimension.\n\nThe resulting output when using the `\"valid\"` padding option has a spatial\nshape (number of rows or columns) of:\n`output_shape = math.floor((input_shape - pool_size) / strides) + 1`\n(when `input_shape \u003e= pool_size`)\n\nThe resulting output shape when using the `\"same\"` padding option is:\n`output_shape = math.floor((input_shape - 1) / strides) + 1`\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `pool_size` | int or tuple of 2 integers, factors by which to downscale (dim1, dim2). If only one integer is specified, the same window length will be used for all dimensions. |\n| `strides` | int or tuple of 2 integers, or None. Strides values. If None, it will default to `pool_size`. If only one int is specified, the same stride size will be used for all dimensions. |\n| `padding` | string, either `\"valid\"` or `\"same\"` (case-insensitive). `\"valid\"` means no padding. `\"same\"` results in padding evenly to the left/right or up/down of the input such that output has the same height/width dimension as the input. |\n| `data_format` | string, either `\"channels_last\"` 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, height, width, channels)`.\n- If `data_format=\"channels_first\"`: 4D tensor with shape `(batch_size, channels, height, width)`.\n\n#### Output shape:\n\n- If `data_format=\"channels_last\"`: 4D tensor with shape `(batch_size, pooled_height, pooled_width, channels)`.\n- If `data_format=\"channels_first\"`: 4D tensor with shape `(batch_size, channels, pooled_height, pooled_width)`.\n\n#### Examples:\n\n`strides=(1, 1)` and `padding=\"valid\"`: \n\n x = np.array([[1., 2., 3.],\n [4., 5., 6.],\n [7., 8., 9.]])\n x = np.reshape(x, [1, 3, 3, 1])\n max_pool_2d = keras.layers.MaxPooling2D(pool_size=(2, 2),\n strides=(1, 1), padding=\"valid\")\n max_pool_2d(x)\n\n`strides=(2, 2)` and `padding=\"valid\"`: \n\n x = np.array([[1., 2., 3., 4.],\n [5., 6., 7., 8.],\n [9., 10., 11., 12.]])\n x = np.reshape(x, [1, 3, 4, 1])\n max_pool_2d = keras.layers.MaxPooling2D(pool_size=(2, 2),\n strides=(2, 2), padding=\"valid\")\n max_pool_2d(x)\n\n`stride=(1, 1)` and `padding=\"same\"`: \n\n x = np.array([[1., 2., 3.],\n [4., 5., 6.],\n [7., 8., 9.]])\n x = np.reshape(x, [1, 3, 3, 1])\n max_pool_2d = keras.layers.MaxPooling2D(pool_size=(2, 2),\n strides=(1, 1), padding=\"same\")\n max_pool_2d(x)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Attributes ---------- ||\n|----------|------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `input` | Retrieves the input tensor(s) of a symbolic operation. \u003cbr /\u003e Only returns the tensor(s) corresponding to the *first time* the operation was called. |\n| `output` | Retrieves the output tensor(s) of a layer. \u003cbr /\u003e Only returns the tensor(s) corresponding to the *first time* the operation was called. |\n\n\u003cbr /\u003e\n\nMethods\n-------\n\n### `from_config`\n\n[View source](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/ops/operation.py#L191-L213) \n\n @classmethod\n from_config(\n config\n )\n\nCreates a layer from its config.\n\nThis method is the reverse of `get_config`,\ncapable of instantiating the same layer from the config\ndictionary. It does not handle layer connectivity\n(handled by Network), nor weights (handled by `set_weights`).\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ||\n|----------|----------------------------------------------------------|\n| `config` | A Python dictionary, typically the output of get_config. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ||\n|---|---|\n| A layer instance. ||\n\n\u003cbr /\u003e\n\n### `symbolic_call`\n\n[View source](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/ops/operation.py#L58-L70) \n\n symbolic_call(\n *args, **kwargs\n )"]]