Класс AveragePooling2D
Класс AveragePooling2D применяет операцию усредняющего пулинга к двумерным данным, например, к изображениям или картам признаков сверточных слоев. Слой разбивает входные данные на окна заданного размера и вычисляет среднее значение элементов каждого окна. Первым параметром передается размер пула pool_size, вторым - шаг strides, также можно указать padding для режима дополнения и data_format для порядка осей.
Синтаксис
tf.keras.layers.AveragePooling2D(
pool_size=(2, 2),
strides=None,
padding="valid",
data_format=None
)
Пример
Давайте применим усредняющий пулинг к тензору с окном 2 на 2:
import tensorflow as tf
t = tf.constant([[[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]], dtype=tf.float32)
layer = tf.keras.layers.AveragePooling2D(pool_size=(2, 2))
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[ 3.5]
[ 5.5]]
[[11.5]
[13.5]]]], shape=(1, 2, 2, 1), dtype=float32)
Пример
Давайте применим усредняющий пулинг с шагом 1 и дополнением same:
import tensorflow as tf
t = tf.constant([[[[1], [2], [3]],
[[4], [5], [6]],
[[7], [8], [9]]]], dtype=tf.float32)
layer = tf.keras.layers.AveragePooling2D(
pool_size=(2, 2),
strides=(1, 1),
padding="same"
)
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[3. ]
[3.5 ]
[3. ]]
[[5. ]
[5.5 ]
[4.5 ]]
[[4.5 ]
[4.75]
[3.75]]]], shape=(1, 3, 3, 1), dtype=float32)
Пример
Давайте применим усредняющий пулинг к цветному изображению с тремя каналами:
<+python+>
import tensorflow as tf
t = tf.constant([[[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],
[[13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24]],
[[25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36]],
[[37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48]]]], dtype=tf.float32)
layer = tf.keras.layers.AveragePooling2D(pool_size=(2, 2))
res = layer(t)
print(res)
<-python+>
Результат выполнения кода:
tf.Tensor(
[[[[ 8.5 9.5 10.5]
[13.5 14.5 15.5]]
[[32.5 33.5 34.5]
[37.5 38.5 39.5]]]], shape=(1, 2, 2, 3), dtype=float32)
Смотрите также
-
класс
MaxPooling2D,
который выполняет максимальный пулинг для двумерных данных -
класс
GlobalAveragePooling2D,
который выполняет глобальный усредняющий пулинг -
класс
AveragePooling1D,
который выполняет усредняющий пулинг для одномерных данных -
класс
Conv2D,
который выполняет свертку для двумерных данных