РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
744 of 824 menu

Функция fractional_max_pool

Функция fractional_max_pool применяется к четырехмерному тензору и выполняет дробный максимальный пулинг. Первым параметром передается входной тензор, вторым - список коэффициентов пулинга для каждого измерения (обычно для высоты и ширины). Третьим параметром передается размер окна пулинга. Функция возвращает кортеж из двух тензоров: выходного тензора и тензора с индексами выбранных элементов. Дробный пулинг позволяет использовать нецелые коэффициенты уменьшения размерности, что дает более гибкий контроль над выходной формой тензора.

Синтаксис

tf.nn.fractional_max_pool( value, pooling_ratio, [ksize], [pseudo_random], [overlapping], [deterministic], [seed], [name] )

Пример

Давайте создадим четырехмерный тензор и применим к нему дробный максимальный пулинг с коэффициентами 1.0, 1.5, 1.5, 1.0 и размером окна 2:

import tensorflow as tf t = tf.constant([[[[1.0], [2.0], [3.0], [4.0]], [[5.0], [6.0], [7.0], [8.0]], [[9.0], [10.0], [11.0], [12.0]], [[13.0], [14.0], [15.0], [16.0]]]]) res = tf.nn.fractional_max_pool( t, pooling_ratio=[1.0, 1.5, 1.5, 1.0], ksize=2 ) print(res[0].shape) print(res[0])

Результат выполнения кода:

(1, 3, 3, 1) tf.Tensor( [[[[ 1.] [ 2.] [ 3.]] [[ 5.] [ 6.] [ 7.]] [[ 9.] [10.] [11.]]]], shape=(1, 3, 3, 1), dtype=float32)

Пример

Давайте получим индексы выбранных элементов вместе с выходным тензором:

import tensorflow as tf tf.random.set_seed(0) t = tf.constant([[[[1.0], [2.0], [3.0], [4.0]], [[5.0], [6.0], [7.0], [8.0]], [[9.0], [10.0], [11.0], [12.0]], [[13.0], [14.0], [15.0], [16.0]]]]) res = tf.nn.fractional_max_pool( t, pooling_ratio=[1.0, 1.5, 1.5, 1.0], ksize=2, seed=0 ) output = res[0] row_pooling_sequence = res[1] col_pooling_sequence = res[2] print(output.shape) print(row_pooling_sequence) print(col_pooling_sequence)

Результат выполнения кода:

(1, 3, 3, 1) tf.Tensor([0 2 3], shape=(3,), dtype=int64) tf.Tensor([0 2 3], shape=(3,), dtype=int64)

Пример

Давайте применим дробный пулинг с перекрывающимися окнами:

import tensorflow as tf tf.random.set_seed(0) t = tf.constant([[[[1.0], [2.0], [3.0], [4.0]], [[5.0], [6.0], [7.0], [8.0]], [[9.0], [10.0], [11.0], [12.0]], [[13.0], [14.0], [15.0], [16.0]]]]) res = tf.nn.fractional_max_pool( t, pooling_ratio=[1.0, 1.5, 1.5, 1.0], ksize=2, overlapping=True, seed=0 ) print(res[0].shape) print(res[0])

Результат выполнения кода:

(1, 3, 3, 1) tf.Tensor( [[[[ 2.] [ 3.] [ 4.]] [[ 6.] [ 7.] [ 8.]] [[10.] [11.] [12.]]]], shape=(1, 3, 3, 1), dtype=float32)

Смотрите также

  • функцию max_pool,
    которая выполняет максимальный пулинг над тензором
  • функцию avg_pool,
    которая выполняет усредняющий пулинг над тензором
  • функцию conv2d,
    которая выполняет двумерную свертку над тензором
  • функцию dropout,
    которая применяет dropout к элементам тензора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить