当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.nn.max_pool2d用法及代码示例


对 2D 空间数据(例如图像)执行最大池化。

用法

tf.nn.max_pool2d(
    input, ksize, strides, padding, data_format='NHWC', name=None
)

参数

  • input data_format 指定格式的 4-D Tensor
  • ksize 长度为 1 , 24ints 的 int 或列表。输入张量的每个维度的窗口大小。如果只指定了一个整数,那么我们对所有 4 个暗淡应用相同的窗口。如果提供了两个,那么我们将它们用于 H、W 维度并保持 N、C 维度窗口大小 = 1。
  • strides 长度为 1 , 24ints 的 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

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.max_pool2d。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。