Макс-пул в TensorFlow
Макс-пул уменьшает карту
по высоте и ширине: в каждом окне
фиксированного размера оставляют
одно наибольшее значение в каждом
канале. В Keras это класс
MaxPooling2D.
Подадим партию из одной карты
2×2 с двумя каналами и
окно 2×2, которое накрывает
всю карту. Выведем результат:
import tensorflow as tf
images = tf.constant([[[[1.0, 5.0], [3.0, 2.0]],
[[4.0, 6.0], [7.0, 8.0]]]])
layer = tf.keras.layers.MaxPooling2D(pool_size=2)
out = layer(images)
print(out)
# выведет tf.Tensor([[[[7. 8.]]]], shape=(1, 1, 1, 2), dtype=float32)
Число каналов не меняется, а высота и ширина делятся на размер окна, если окно без пропусков накрывает карту целиком. Проверим форму:
import tensorflow as tf
images = tf.constant([[[[1.0, 5.0], [3.0, 2.0]],
[[4.0, 6.0], [7.0, 8.0]]]])
layer = tf.keras.layers.MaxPooling2D(pool_size=2)
out = layer(images)
print(images.shape)
print(out.shape)
# выведет (1, 1, 1, 2)
Окно 1×2 сжимает только
ширину и оставляет высоту прежней:
import tensorflow as tf
images = tf.constant([[[[1.0, 5.0, 2.0],
[3.0, 2.0, 4.0]]]])
layer = tf.keras.layers.MaxPooling2D(pool_size=(1, 2))
out = layer(images)
print(out.shape)
Создайте карту 4×4 с одним
каналом в партии из одного
элемента, заполните её числами
от 0 до 15 по строкам.
Сожмите её окном 2×2
и выведите форму ответа.
Задайте партию из одной карты
2×3 с двумя каналами из
единиц. Примените окно 2×1
и выведите форму результата.
Соберите карту 3×3 с одним
каналом, где в центре стоит
10, а остальные ячейки -
0. Сожмите окном 3×3
и выведите единственное число
в ответе.