Spec-Zone.ru › PyTorch 2.14

MaxUnpool2d

class torch.nn.MaxUnpool2d(kernel_size, stride=None, padding=0) [исходный код]

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

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

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

Примечание

Эта операция может вести себя недетерминированно, если входные индексы содержат повторяющиеся значения. Дополнительную информацию см. в pytorch/pytorch#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.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.]]]])
forward(input, indices, output_size=None) [исходный код]

Выполняет прямой проход.

Тип возвращаемого значения:

Tensor

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

Spec-Zone.ru

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