tf.nn.fractional_max_pool
| Просмотреть исходный код на GitHub |
Выполняет дробное максимальное объединение входных данных.
tf.nn.fractional_max_pool(
value, pooling_ratio, pseudo_random=False, overlapping=False, seed=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
| Аргументы | |
|---|---|
value | A Tensor. 4-мерный с формой [batch, height, width, channels]. |
pooling_ratio | Целое число или список ints, длина которого 1, 2 или 4. Коэффициент объединения для каждой размерности value, в настоящее время поддерживаются только размерности строки и столбца, и должен быть ≥ 1.0. Например, допустимый коэффициент объединения выглядит так: [1.0, 1.44, 1.73, 1.0]. Первые и последние элементы должны быть 1.0, так как объединение по размерностям партии и каналов недопустимо. 1.44 и 1.73 – это коэффициент объединения по размерностям высоты и ширины соответственно. |
pseudo_random | Необязательный bool. По умолчанию False. Если установлено значение True, последовательность объединения генерируется псевдослучайным образом, в противном случае – случайным образом. Разница между псевдослучайным и случайным генератором указана в статье (Graham, 2015). |
overlapping | Необязательный bool. По умолчанию False. Если установлено значение True, это означает, что при объединении значения на границе смежных ячеек объединения используются обеими ячейками. Например: index 0 1 2 3 4 value 20 5 16 3 7 Если последовательность объединения равна [0, 2, 4], тогда 16 с индексом 2 будет использоваться дважды. Результатом будет [20, 16] для дробного максимального объединения. |
seed | Необязательное int. По умолчанию 0. Если установлено ненулевое значение, генератор случайных чисел инициализируется заданным значением, в противном случае – случайным значением. |
name | Имя операции (необязательно). |
| Возвращаемые значения |
|---|
Кортеж из Tensor объектов (output, row_pooling_sequence, col_pooling_sequence). output: Результат Tensor после дробного максимального объединения. Имеет тот же тип, что и value. row_pooling_sequence: Последовательность Tensor типа int64. col_pooling_sequence: Последовательность Tensor типа int64.
Ссылки:
Дробное максимальное объединение: Graham, 2015 (pdf)
© 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.3/api_docs/python/tf/nn/fractional_max_pool