Глобальный пул в TensorFlow
Глобальный пул превращает
каждый канал двумерной карты в
одно число. Для усреднения по
всей площади в Keras используют
класс GlobalAveragePooling2D:
на выходе получается таблица,
где строка - одна картинка из
партии, а столбцы - каналы.
Подадим партию из одной карты
2×2 с двумя каналами и
выведем ответ:
import tensorflow as tf
images = tf.constant([[[[1.0, 2.0], [3.0, 4.0]],
[[5.0, 6.0], [7.0, 8.0]]]])
layer = tf.keras.layers.GlobalAveragePooling2D()
out = layer(images)
print(out)
# выведет tf.Tensor([[4. 5.]], shape=(1, 2), dtype=float32)
Размеры высоты и ширины исчезают, остаются только партия и число каналов. Сравним формы до и после:
import tensorflow as tf
images = tf.constant([[[[1.0, 2.0], [3.0, 4.0]],
[[5.0, 6.0], [7.0, 8.0]]]])
layer = tf.keras.layers.GlobalAveragePooling2D()
out = layer(images)
print(images.shape)
print(out.shape)
# выведет (1, 2)
Если в партии несколько картинок, каждая даёт отдельную строку усреднённых каналов:
import tensorflow as tf
images = tf.zeros((3, 4, 4, 2))
layer = tf.keras.layers.GlobalAveragePooling2D()
out = layer(images)
print(out.shape)
Создайте партию из одной карты
3×3 с одним каналом из
единиц. Сведите её к одному
числу усреднением по площади
и выведите результат.
Задайте две карты 2×2
с тремя каналами в одной партии.
Получите таблицу усреднённых
значений и выведите её форму.
Соберите карту 4×4
с двумя каналами, где первый
канал - нули, второй - единицы.
Сведите карту к ряду из двух
средних и выведите ответ.