tf.raw_ops.FractionalMaxPool
Выполняет дробный max-пулинг входных данных.
tf.raw_ops.FractionalMaxPool(
value,
pooling_ratio,
pseudo_random=False,
overlapping=False,
deterministic=False,
seed=0,
seed2=0,
name=None
)
Дробный max-пулинг немного отличается от обычного max-пулинга. При обычном max-пулинге размер входного набора уменьшается путём выбора максимального значения в небольших подобластях набора размером N x N (часто 2x2), а набор пытаются уменьшить в N раз, где N — целое число. Дробный max-пулинг, как можно понять из слова «дробный», означает, что общий коэффициент уменьшения N не обязательно должен быть целым числом.
Размеры областей пулинга генерируются случайным образом, но довольно равномерно. Например, рассмотрим размерность высоты и ограничения на список строк, которые будут границами областей пулинга.
Сначала определим следующее:
- input_row_length : количество строк во входном наборе
- output_row_length : количество строк, которое будет меньше входного
- alpha = input_row_length / output_row_length : коэффициент уменьшения
- K = floor(alpha)
- row_pooling_sequence : результирующий список строк, задающих границы областей пулинга
Тогда row_pooling_sequence должен удовлетворять следующим условиям:
- a[0] = 0 : первое значение последовательности равно 0
- a[end] = input_row_length : последнее значение последовательности равно размеру
- K <= (a[i+1] - a[i]) <= K+1 : размер всех интервалов равен K или K+1
- length(row_pooling_sequence) = output_row_length+1
Подробнее о дробном max-пулинге см. в статье: Benjamin Graham, Fractional Max-Pooling
| Аргументы | |
|---|---|
value | A Tensor. Должен иметь один из следующих типов: float32, float64, int32, int64. 4-D с формой [batch, height, width, channels]. |
pooling_ratio | Список из floats длиной >= 4. Коэффициент пулинга для каждой размерности value; в настоящее время поддерживаются только размерности строк и столбцов, значение должно быть >= 1.0. Например, допустимый коэффициент пулинга: [1.0, 1.44, 1.73, 1.0]. Первый и последний элементы должны быть равны 1.0, поскольку пулинг для размерностей пакета и каналов не поддерживается. Значения 1.44 и 1.73 — коэффициенты пулинга для размерностей высоты и ширины соответственно. |
pseudo_random | Необязательный bool. По умолчанию — False. Если задано значение True, последовательность пулинга генерируется псевдослучайным образом, в противном случае — случайным образом. Различия между псевдослучайной и случайной генерацией описаны в статье Benjamin Graham, Fractional Max-Pooling. |
overlapping | Необязательный bool. По умолчанию — False. Если задано значение True, при пулинге значения на границе соседних ячеек пулинга используются обеими ячейками. Например:
Если последовательность пулинга — [0, 2, 4], значение 16 с индексом 2 будет использовано дважды. Результатом дробного max-пулинга будет [20, 16]. |
deterministic | Необязательный bool. По умолчанию — False. Если задано значение True, при обработке узла FractionalMaxPool в графе вычислений используется фиксированная область пулинга. Это в основном используется в модульных тестах, чтобы сделать FractionalMaxPool детерминированным. |
seed | Необязательный int. По умолчанию — 0. Если для seed или seed2 задано ненулевое значение, генератор случайных чисел инициализируется указанным начальным значением. В противном случае он инициализируется случайным начальным значением. |
seed2 | Необязательный int. По умолчанию — 0. Второе начальное значение, используемое во избежание совпадения с первым. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
Кортеж объектов Tensor (output, row_pooling_sequence, col_pooling_sequence). | |
output | Tensor. Имеет тот же тип, что и value. |
row_pooling_sequence | Tensor типа int64. |
col_pooling_sequence | Tensor типа int64. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/raw_ops/FractionalMaxPool