对 2D 空间数据(例如图像)执行最大池化。
用法
tf.nn.max_pool2d(
input, ksize, strides, padding, data_format='NHWC', name=None
)
参数
-
input
由data_format
指定格式的 4-DTensor
。 -
ksize
长度为1
,2
或4
的ints
的 int 或列表。输入张量的每个维度的窗口大小。如果只指定了一个整数,那么我们对所有 4 个暗淡应用相同的窗口。如果提供了两个,那么我们将它们用于 H、W 维度并保持 N、C 维度窗口大小 = 1。 -
strides
长度为1
,2
或4
的ints
的 int 或列表。输入张量的每个维度的滑动窗口的步幅。如果只指定一个整数,我们将相同的步幅应用于所有 4 个暗淡。如果提供了两个,我们将它们用于 H、W 维度并保持 N、C 的步幅 = 1。 -
padding
无论是string
"SAME"
或者"VALID"
指示要使用的填充算法的类型,或指示每个维度开始和结束处的显式填充的列表。看这里了解更多信息。当使用显式填充并且data_format 是"NHWC"
, 这应该是形式[[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]]
.当使用显式填充并且 data_format 是"NCHW"
, 这应该是形式[[0, 0], [0, 0], [pad_top, pad_bottom], [pad_left, pad_right]]
.使用显式填充时,填充的大小不能大于滑动窗口大小。 -
data_format
一个字符串。支持'NHWC'、'NCHW' 和'NCHW_VECT_C'。 -
name
操作的可选名称。
返回
-
由
data_format
指定的格式的Tensor
。最大池化输出张量。
这是tf.nn.max_pool
的更具体版本,其中输入张量为 4D,表示图像等 2D 空间数据。使用这些 API 是等效的
通过在 ksize
定义的输入窗口上取其最大值,沿其空间维度(高度和宽度)对输入图像进行下采样。窗口沿每个维度移动strides
。
例如,对于 strides=(2, 2)
和 padding=VALID
,在输入之外扩展的窗口不包含在输出中:
x = tf.constant([[1., 2., 3., 4.],
[5., 6., 7., 8.],
[9., 10., 11., 12.]])
# Add the `batch` and `channels` dimensions.
x = x[tf.newaxis,:,:, tf.newaxis]
result = tf.nn.max_pool2d(x, ksize=(2, 2), strides=(2, 2),
padding="VALID")
result[0,:,:, 0]
<tf.Tensor:shape=(1, 2), dtype=float32, numpy=
array([[6., 8.]], dtype=float32)>
使用 padding=SAME
,我们得到:
x = tf.constant([[1., 2., 3., 4.],
[5., 6., 7., 8.],
[9., 10., 11., 12.]])
x = x[tf.newaxis,:,:, tf.newaxis]
result = tf.nn.max_pool2d(x, ksize=(2, 2), strides=(2, 2),
padding='SAME')
result[0,:,:, 0]
<tf.Tensor:shape=(2, 2), dtype=float32, numpy=
array([[ 6., 8.],
[10.,12.]], dtype=float32)>
我们还可以显式指定填充。以下示例在所有边(顶部、底部、左侧、右侧)添加 width-1 填充:
x = tf.constant([[1., 2., 3., 4.],
[5., 6., 7., 8.],
[9., 10., 11., 12.]])
x = x[tf.newaxis,:,:, tf.newaxis]
result = tf.nn.max_pool2d(x, ksize=(2, 2), strides=(2, 2),
padding=[[0, 0], [1, 1], [1, 1], [0, 0]])
result[0,:,:, 0]
<tf.Tensor:shape=(2, 3), dtype=float32, numpy=
array([[ 1., 3., 4.],
[ 9., 11., 12.]], dtype=float32)>
有关更多示例和详细信息,请参阅tf.nn.max_pool
。
相关用法
- Python tf.nn.max_pool用法及代码示例
- Python tf.nn.embedding_lookup_sparse用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代码示例
- Python tf.nn.dropout用法及代码示例
- Python tf.nn.gelu用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.set_weights用法及代码示例
- Python tf.nn.embedding_lookup用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.get_weights用法及代码示例
- Python tf.nn.local_response_normalization用法及代码示例
- Python tf.nn.scale_regularization_loss用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.add_loss用法及代码示例
- Python tf.nn.RNNCellDropoutWrapper.set_weights用法及代码示例
- Python tf.nn.l2_loss用法及代码示例
- Python tf.nn.log_softmax用法及代码示例
- Python tf.nn.weighted_cross_entropy_with_logits用法及代码示例
- Python tf.nn.ctc_greedy_decoder用法及代码示例
- Python tf.nn.dilation2d用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.get_weights用法及代码示例
- Python tf.nn.compute_average_loss用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.max_pool2d。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。