tf.raw_ops.FractionalMaxPool
Выполняет фракционную максимальную пулинг операцию над входом.
tf.raw_ops.FractionalMaxPool(
value, pooling_ratio, pseudo_random=False, overlapping=False,
deterministic=False, seed=0, seed2=0, name=None
)
Фракционная максимальная пулинг операция немного отличается от обычной максимальной пулинговой операции. При обычной максимальной пулинговой операции вы уменьшаете входной набор, выбирая максимальное значение из меньших поднаборов размера N x N (часто 2x2) и пытаетесь уменьшить набор в N раз, где N — целое число. Фракционная максимальная пулинг операция, как можно догадаться из слова «фракционная», означает, что общий коэффициент уменьшения 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
Для получения более подробной информации о фракционной максимальной пулинговой операции см. эту статью: Benjamin Graham, Fractional Max-Pooling
| Аргументы | |
|---|---|
value | A Tensor. Должен быть одного из следующих типов: float32, float64, int32, int64. 4-мерный с формой [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 будет использоваться дважды. Результатом будет [20, 16] для фракционной максимальной пулинговой операции. |
deterministic | Необязательный bool. По умолчанию False. Если установлено в True, при итерации по узлу FractionalMaxPool в вычислительном графе будет использоваться фиксированная область пулинга. В основном используется в модульных тестах, чтобы сделать FractionalMaxPool детерминированным. |
seed | Необязательный int. По умолчанию 0. Если seed или seed2 установлены отличными от нуля, генератор случайных чисел будет инициализирован заданным seed. В противном случае он будет инициализирован случайным seed. |
seed2 | Необязательный int. По умолчанию 0. Второй seed для предотвращения конфликта семян. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
Кортеж из Tensor объектов (выход, row_pooling_sequence, col_pooling_sequence). | |
output | A Tensor. Имеет тот же тип, что и value. |
row_pooling_sequence | A Tensor типа int64. |
col_pooling_sequence | A Tensor типа int64. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/raw_ops/FractionalMaxPool