當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。