Spec-Zone.ru › PyTorch 2

MaxUnpool2d

class torch.nn.MaxUnpool2d(kernel_size, stride=None, padding=0) [source]

Вычисляет частичное обращение функции MaxPool2d.

MaxPool2d не является полностью обратимой, так как не максимальные значения теряются.

MaxUnpool2d принимает на вход результат работы функции MaxPool2d, включая индексы максимальных значений, и вычисляет частичное обращение, в котором все не максимальные значения устанавливаются в ноль.

Примечание

Данная операция может вести себя недетерминированно, если входные индексы содержат повторяющиеся значения. Смотрите https://github.com/pytorch/pytorch/issues/80827 и Воспроизводимость для получения более подробной информации.

Примечание

MaxPool2d может отображать несколько входных размеров в одинаковые размеры вывода. Следовательно, процесс обращения может стать неоднозначным. Для этого вы можете указать необходимый размер вывода в качестве дополнительного аргумента output_size в вызове forward. Смотрите входы и пример ниже.

Параметры
  • kernel_size (int или tuple) – Размер окна максимального пулинга.
  • stride (int или tuple) – Шаг окна максимального пулинга. По умолчанию он равен kernel_size.
  • padding (int или tuple) – Добавка, которая была добавлена к входу
Входы:
  • input: входной тензор для обратной операции
  • indices: индексы, полученные функцией MaxPool2d
  • output_size (необязательно): целевой размер вывода
Форма:
  • Вход: (N,C,Hin,Win)(N, C, H_{in}, W_{in}) или (C,Hin,Win)(C, H_{in}, W_{in}).
  • Вывод: (N,C,Hout,Wout)(N, C, H_{out}, W_{out}) или (C,Hout,Wout)(C, H_{out}, W_{out}), где

    Hout=(Hin−1)×stride[0]−2×padding[0]+kernel_size[0]H_{out} = (H_{in} - 1) \times \text{stride[0]} - 2 \times \text{padding[0]} + \text{kernel\_size[0]}
    Wout=(Win−1)×stride[1]−2×padding[1]+kernel_size[1]W_{out} = (W_{in} - 1) \times \text{stride[1]} - 2 \times \text{padding[1]} + \text{kernel\_size[1]}

    или как указано в output_size в операторе вызова

Пример:

>>> pool = nn.MaxPool2d(2, stride=2, return_indices=True)
>>> unpool = nn.MaxUnpool2d(2, stride=2)
>>> input = torch.tensor([[[[ 1.,  2.,  3.,  4.],
                            [ 5.,  6.,  7.,  8.],
                            [ 9., 10., 11., 12.],
                            [13., 14., 15., 16.]]]])
>>> output, indices = pool(input)
>>> unpool(output, indices)
tensor([[[[  0.,   0.,   0.,   0.],
          [  0.,   6.,   0.,   8.],
          [  0.,   0.,   0.,   0.],
          [  0.,  14.,   0.,  16.]]]])
>>> # Now using output_size to resolve an ambiguous size for the inverse
>>> input = torch.torch.tensor([[[[ 1.,  2.,  3., 4., 5.],
                                  [ 6.,  7.,  8., 9., 10.],
                                  [11., 12., 13., 14., 15.],
                                  [16., 17., 18., 19., 20.]]]])
>>> output, indices = pool(input)
>>> # This call will not work without specifying output_size
>>> unpool(output, indices, output_size=input.size())
tensor([[[[ 0.,  0.,  0.,  0.,  0.],
          [ 0.,  7.,  0.,  9.,  0.],
          [ 0.,  0.,  0.,  0.,  0.],
          [ 0., 17.,  0., 19.,  0.]]]])

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.MaxUnpool2d.html

Spec-Zone.ru

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