Spec-Zone.ru › TensorFlow 2.9

tf.nn.max_pool

Просмотреть исходный код на GitHub

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

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

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

См. Руководство по миграции для получения более подробной информации.

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 Необязательное имя операции.
Возвращаемое значение
A Tensor формата, указанного в data_format. Тензор результата максимального пулингового преобразования.

© 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/versions/r2.9/api_docs/python/tf/nn/max_pool

Spec-Zone.ru

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