Spec-Zone.ru › TensorFlow

tf.nn.max_pool

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

Просмотреть псевдонимы

Псевдонимы совместимости для миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.nn.max_pool_v2

tf.nn.max_pool(
    input, ksize, strides, padding, data_format=None, name=None
)

Для заданного окна ksize функция возвращает максимальное значение в этом окне. Используется для уменьшения объема вычислений и предотвращения переобучения.

Рассмотрим пример пулинга с неперекрывающимися окнами размером 2x2:

matrix = tf.constant([
    [0, 0, 1, 7],
    [0, 2, 0, 0],
    [5, 2, 0, 0],
    [0, 0, 9, 8],
])
reshaped = tf.reshape(matrix, (1, 4, 4, 1))
tf.nn.max_pool(reshaped, ksize=2, strides=2, padding="SAME")
<tf.Tensor: shape=(1, 2, 2, 1), dtype=int32, numpy=
array([[[[2],
         [7]],
        [[5],
         [9]]]], dtype=int32)>

Размер окна можно изменить с помощью параметра ksize. Например, если увеличить размер окна до 3:

tf.nn.max_pool(reshaped, ksize=3, strides=2, padding="SAME")
<tf.Tensor: shape=(1, 2, 2, 1), dtype=int32, numpy=
array([[[[5],
         [7]],
        [[9],
         [9]]]], dtype=int32)>

Теперь в двух позициях пулинга выбраны два дополнительных больших числа (5 и 9).

Обратите внимание, что теперь наши окна перекрываются, поскольку на каждой итерации мы по-прежнему перемещаемся на 2 единицы. Поэтому число 9 повторяется дважды: оно входит в два перекрывающихся окна.

Расстояние перемещения окна на каждой итерации можно изменить с помощью параметра strides. Если задать значение, равное размеру окна, перекрытие исчезнет:

tf.nn.max_pool(reshaped, ksize=3, strides=3, padding="SAME")
<tf.Tensor: shape=(1, 2, 2, 1), dtype=int32, numpy=
array([[[[2],
         [7]],
        [[5],
         [9]]]], dtype=int32)>

Поскольку окно не помещается в наши входные данные без остатка, по краям добавляются отступы, и результат получается таким же, как при использовании окна размером 2x2. Можно вовсе отказаться от добавления отступов и просто отбросить окна, которые не помещаются во входные данные целиком, передав "VALID" аргументу padding:

tf.nn.max_pool(reshaped, ksize=3, strides=3, padding="VALID")
<tf.Tensor: shape=(1, 1, 1, 1), dtype=int32, numpy=array([[[[5]]]],
 dtype=int32)>

Теперь мы выбрали наибольшее значение в окне размером 3x3, начинающемся в верхнем левом углу. Поскольку во входных данных не помещаются другие окна, они отбрасываются.

Аргументы
input Тензор ранга N+2 с формой [batch_size] + input_spatial_shape + [num_channels], если data_format не начинается с «NC» (значение по умолчанию), или [batch_size, num_channels] + input_spatial_shape, если data_format начинается с «NC». Пулинг выполняется только по пространственным измерениям.
ksize Целое число или список из ints длиной 1, N или N+2. Размер окна для каждого измерения входного тензора.
strides Целое число или список из ints длиной 1, N или N+2. Шаг скользящего окна для каждого измерения входного тензора.
padding Либо string "SAME" или "VALID", указывающее тип алгоритма добавления отступов, либо список, задающий явные отступы в начале и конце каждого измерения. Подробнее см. здесь. При использовании явных отступов и data_format, равном "NHWC", значение должно иметь форму [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]]. При использовании явных отступов и data_format, равном "NCHW", значение должно иметь форму [[0, 0], [0, 0], [pad_top, pad_bottom], [pad_left, pad_right]]. При использовании явных отступов их размер не может превышать размер скользящего окна.
data_format Строка. Задает измерение каналов. При N=1 это может быть «NWC» (значение по умолчанию) или «NCW», при N=2 — «NHWC» (значение по умолчанию) или «NCHW», а при N=3 — «NDHWC» (значение по умолчанию) или «NCDHW».
name Необязательное имя операции.
Возвращает
Тензор Tensor с форматом, заданным параметром data_format. Выходной тензор после максимального пулинга.
Вызывает исключения
ValueError Если
  • явные отступы используются с входным тензором ранга 5.
  • явные отступы используются с data_format='NCHW_VECT_C'.

© 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/max_pool

Spec-Zone.ru

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