مثالی از max-pool در تنسوفلو :
batch_size=1
input_height = 3
input_width = 3
input_channels = 1
layer_input = tf.constant([
[
[[1.0], [0.2], [1.5]],
[[0.1], [1.2], [1.4]],
[[1.1], [0.4], [0.4]]
]
])
kernel = [batch_size, input_height, input_width, input_channels]
max_pool = tf.nn.max_pool(layer_input, kernel, [1, 1, 1, 1], "VALID")
print(sess.run(max_pool))
#خروجی
[[[[ 1.5]]]]
البته این مثالی که من قرار دادم روش padding ش VALID بود که شما SAME را هم می تونید استفاده کنید که تقاوت این دو روش در این پست بحث شده.
بعضی اوقات که نیاز برایند کلی receptive field را در هر بار اجرا داشته باشیم می تونیم از روش average pool استفاده کنیم.که در تنسورفلو به صورت زیر استفاده میشه.
batch_size=1
input_height = 3
input_width = 3
input_channels = 1
layer_input = tf.constant([
[
[[1.0], [1.0], [1.0]],
[[1.0], [0.5], [0.0]],
[[0.0], [0.0], [0.0]]
]
])
kernel = [batch_size, input_height, input_width, input_channels]
max_pool = tf.nn.avg_pool(layer_input, kernel, [1, 1, 1, 1], "VALID")
sess = tf.Session()
print(sess.run(max_pool))
#خروجی
[[[[ 0.5]]]]