Класс GlobalAveragePooling2D
Слой GlobalAveragePooling2D применяется к четырехмерным тензорам
формы (batch, height, width, channels) и усредняет значения
по пространственным измерениям height и width.
На выходе получается тензор формы (batch, channels).
Первый параметр data_format задает порядок измерений
каналов и может принимать значения 'channels_last' или
'channels_first'. Второй параметр keepdims определяет,
сохранять ли усредненные измерения с размером 1.
Синтаксис
tf.keras.layers.GlobalAveragePooling2D(
data_format=None,
keepdims=False,
**kwargs
)
Пример
Давайте применим слой к тензору формы
(1, 2, 3, 1) и получим усредненное значение:
import tensorflow as tf
t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]]]])
layer = tf.keras.layers.GlobalAveragePooling2D()
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([[3.5]], shape=(1, 1), dtype=float32)
Пример
Давайте обработаем тензор с тремя каналами и получим вектор из трех средних значений:
import tensorflow as tf
t = tf.constant([
[
[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]
]
])
layer = tf.keras.layers.GlobalAveragePooling2D()
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([[5.5 6.5 7.5]], shape=(1, 3), dtype=float32)
Пример
Давайте передадим параметр keepdims=True,
чтобы сохранить пространственные измерения:
import tensorflow as tf
t = tf.constant([
[
[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]
]
])
layer = tf.keras.layers.GlobalAveragePooling2D(keepdims=True)
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([[[[5.5 6.5 7.5]]]], shape=(1, 1, 1, 3), dtype=float32)
Пример
Давайте используем слой внутри модели Keras после сверточного слоя:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(4, 4, 3)),
tf.keras.layers.Conv2D(2, (3, 3), activation='relu'),
tf.keras.layers.GlobalAveragePooling2D(),
tf.keras.layers.Dense(1)
])
res = model(tf.ones((1, 4, 4, 3)))
print(res)
Результат выполнения кода:
tf.Tensor([[-0.05478583]], shape=(1, 1), dtype=float32)
Смотрите также
-
слой
GlobalAveragePooling1D,
который выполняет глобальное усреднение по одному измерению -
слой
GlobalMaxPooling2D,
который выполняет глобальный максимум по двум измерениям -
слой
AveragePooling2D,
который выполняет локальное усреднение по окну -
слой
Flatten,
который преобразует многомерный тензор в вектор