tf.nn.fractional_max_pool
Выполняет дробный max pooling входных данных.
tf.nn.fractional_max_pool(
value,
pooling_ratio,
pseudo_random=False,
overlapping=False,
seed=0,
name=None
)
Дробный max pooling немного отличается от обычного max pooling. При обычном max pooling размер входного набора уменьшается путем выбора максимального значения из небольших подобластей набора размером N x N (часто 2x2), при этом набор пытаются уменьшить в N раз, где N — целое число. Дробный max pooling, как можно догадаться по слову «дробный», означает, что общий коэффициент уменьшения N не обязательно должен быть целым числом.
Размеры областей pooling генерируются случайным образом, но распределяются довольно равномерно. Например, рассмотрим измерение высоты и ограничения на список строк, которые будут границами областей pooling.
Сначала определим следующее:
- input_row_length : количество строк во входном наборе
- output_row_length : количество строк, которое будет меньше размера входного набора
- alpha = input_row_length / output_row_length : коэффициент уменьшения
- K = floor(alpha)
- row_pooling_sequence : результирующий список строк — границ областей pooling
Тогда 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-D with shape [batch, height, width, channels]. |
pooling_ratio | An int or list of ints that has length 1, 2 or 4. Коэффициент pooling для каждого измерения value; в настоящее время поддерживаются только измерения строк и столбцов, значение должно быть >= 1.0. Например, допустимый коэффициент pooling выглядит так: [1.0, 1.44, 1.73, 1.0]. Первый и последний элементы должны быть равны 1.0, поскольку pooling для измерений пакета и каналов не поддерживается. Значения 1.44 и 1.73 — коэффициенты pooling для измерений высоты и ширины соответственно. |
pseudo_random | Необязательный bool. По умолчанию — False. Если задано значение True, последовательность pooling генерируется псевдослучайным образом, в противном случае — случайным образом. Различия между псевдослучайной и случайной генерацией описаны в статье (Graham, 2015). |
overlapping | Необязательный bool. По умолчанию — False. Если задано значение True, при pooling значения на границе соседних ячеек используются обеими ячейками. Например: index 0 1 2 3 4 value 20 5 16 3 7 Если последовательность pooling равна [0, 2, 4], то значение 16 с индексом 2 будет использовано дважды. Результатом дробного max pooling будет [20, 16]. |
seed | Необязательный int. По умолчанию — 0. Если задано ненулевое значение, генератор случайных чисел инициализируется указанным seed. В противном случае он инициализируется случайным seed. |
name | Имя операции (необязательно). |
| Возвращает |
|---|
Кортеж объектов Tensor (output, row_pooling_sequence, col_pooling_sequence). output: выходной Tensor после дробного max pooling. Имеет тот же тип, что и value. row_pooling_sequence: Tensor типа int64. col_pooling_sequence: Tensor типа int64.
| Вызывает исключение | |
|---|---|
ValueError | Если seed не указан, а детерминированность операций включена. |
| Ссылки | |
|---|---|
| Дробный max pooling: Graham, 2015 (pdf) |
© 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/nn/fractional_max_pool