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