Spec-Zone.ru › PyTorch 1

MaxUnpool2d

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

Вычисляет частичное обратное преобразование MaxPool2d.

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

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

Примечание

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/1.13/generated/torch.nn.MaxUnpool2d.html

Spec-Zone.ru

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