Spec-Zone.ru › TensorFlow

tf.nn.fractional_max_pool

Выполняет дробное максимальное пулинг входных данных.

tf.nn.fractional_max_pool(
    value,
    pooling_ratio,
    pseudo_random=False,
    overlapping=False,
    seed=0,
    name=None
)

Дробный максимальный пулинг немного отличается от обычного максимального пулинга. В обычном максимальном пулинге вы уменьшаете входной набор, беря максимальное значение из меньших поднаборов N x N (часто 2x2), и пытаетесь уменьшить набор в N раз, где N — целое число. Дробный максимальный пулинг, как можно догадаться из слова «дробный», означает, что общий коэффициент уменьшения N не обязательно должен быть целым числом.

Размеры областей пулинга генерируются случайным образом, но довольно равномерно. Например, давайте рассмотрим размерность высоты и ограничения на список строк, которые будут границами пулинга.

Сначала определим следующее:

  1. input_row_length : количество строк из входного набора
  2. output_row_length : которое будет меньше входного
  3. alpha = input_row_length / output_row_length : наш коэффициент уменьшения
  4. K = floor(alpha)
  5. row_pooling_sequence : это результирующий список строк границ пулинга

Затем, row_pooling_sequence должно удовлетворять следующим условиям:

  1. a[0] = 0 : первое значение последовательности равно 0
  2. a[end] = input_row_length : последнее значение последовательности равно размеру
  3. K <= (a[i+1] - a[i]) <= K+1 : все интервалы имеют размер K или K+1
  4. 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: A Tensor типа int64. col_pooling_sequence: A Tensor типа int64.

Исключения
ValueError Если зерно не указано, а детерминизм операции включен.
Ссылки
Дробный максимальный пулинг: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API