РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
420 of 769 menu

Функция lp_pool2d

Функция lp_pool2d применяет двумерное пулингование на основе Lp-нормы к входному тензору. Эта операция полезна для извлечения признаков на основе обобщённой нормы. Первым параметром функция принимает входной тензор размерности (N, C, H, W) или (C, H, W). Вторым параметром задаётся норма p (по умолчанию 2). Третьим параметром указывается размер окна пулинга в виде (kh, kw) или k для квадратного окна. Четвёртым параметром можно задать шаг пулинга (по умолчанию равен размеру окна).

Синтаксис

torch.nn.functional.lp_pool2d(input, norm_type, kernel_size, stride=None, ceil_mode=False)

Пример

Давайте применим L2-пулинг к двумерному тензору с окном размера 2:

import torch import torch.nn.functional as F t = torch.tensor([ [1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0], [13.0, 14.0, 15.0, 16.0], ]).unsqueeze(0).unsqueeze(0) res = F.lp_pool2d(t, 2, 2) print(res.squeeze())

Результат выполнения кода:

tensor([ [8.1240, 11.3137], [20.3961, 23.5806], ])

Пример

Теперь применим L1-пулинг с шагом 1 и режимом округления вверх:

import torch import torch.nn.functional as F t = torch.tensor([ [1.0, -2.0, 3.0], [-4.0, 5.0, -6.0], [7.0, -8.0, 9.0], ]).unsqueeze(0).unsqueeze(0) res = F.lp_pool2d(t, 1, 2, stride=1, ceil_mode=True) print(res.squeeze())

Результат выполнения кода:

tensor([ [12.0000, 16.0000], [24.0000, 28.0000], ])

Пример

Используем L∞-пулинг (норма Чебышёва) для выделения максимальных значений в окне:

import torch import torch.nn.functional as F t = torch.tensor([ [1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0], ]).unsqueeze(0).unsqueeze(0) res = F.lp_pool2d(t, float('inf'), 2, stride=2) print(res.squeeze())

Результат выполнения кода:

tensor([ [6.0000, 8.0000], [10.0000, 12.0000], ])

Смотрите также

  • функцию max_pool2d,
    которая выполняет двумерное max-пулингование
  • функцию avg_pool2d,
    которая выполняет двумерное average-пулингование
  • функцию adaptive_avg_pool2d,
    которая выполняет адаптивное двумерное average-пулингование
  • функцию pad,
    которая добавляет отступы к тензору перед пулингованием
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить