Spec-Zone.ru › PyTorch 2.14

ConvTranspose1d

class torch.nn.modules.conv.ConvTranspose1d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros', device=None, dtype=None) [source]

Применяет оператор одномерной транспонированной свёртки к входному изображению, состоящему из нескольких входных плоскостей.

Этот модуль можно рассматривать как градиент Conv1d по отношению к его входным данным. Он также известен как свёртка с дробным шагом или деконволюция (хотя на самом деле это не операция деконволюции, поскольку она не вычисляет точную обратную операцию свёртки). Подробнее см. визуализации здесь и статью «Сети деконволюции».

Этот модуль поддерживает TensorFloat32.

На некоторых устройствах ROCm при использовании входных данных типа float16 для обратного прохода в этом модуле применяется другая точность.

  • stride задаёт шаг для взаимной корреляции.
  • padding задаёт величину неявного дополнения нулями с обеих сторон для dilation * (kernel_size - 1) - padding точек. Подробности см. в примечании ниже.
  • output_padding задаёт дополнительный размер, добавляемый к одной стороне выходной формы. Подробности см. в примечании ниже.
  • dilation задаёт расстояние между точками ядра; также известно как алгоритм à trous. Описать его сложнее, но по ссылке здесь приведена наглядная визуализация того, что делает dilation.
  • groups задаёт связи между входами и выходами. in_channels и out_channels должны делиться на groups без остатка. Например:

    • При groups=1 все входы свёртываются со всеми выходами.
    • При groups=2 операция эквивалентна двум расположенным рядом слоям свёртки: каждый получает половину входных каналов и создаёт половину выходных каналов, после чего результаты объединяются конкатенацией.
    • При groups= in_channels каждый входной канал свёртывается с собственным набором фильтров (размера out_channelsin_channels\frac{\text{out\_channels}}{\text{in\_channels}}).

Примечание

Аргумент padding фактически добавляет dilation * (kernel_size - 1) - padding нулей с обеих сторон входных данных. Это значение выбрано так, чтобы при инициализации Conv1d и ConvTranspose1d с одинаковыми параметрами они были обратны друг другу в отношении форм входных и выходных данных. Однако при stride > 1 Conv1d отображает несколько форм входных данных в одну и ту же выходную форму. Параметр output_padding позволяет устранить эту неоднозначность, фактически увеличивая вычисленную выходную форму с одной стороны. Обратите внимание, что output_padding используется только для определения выходной формы и фактически не добавляет нулевое дополнение к выходным данным.

Примечание

В некоторых случаях при использовании бэкенда CUDA с CuDNN этот оператор может выбрать недетерминированный алгоритм для повышения производительности. Если это нежелательно, можно попробовать сделать операцию детерминированной (возможно, ценой снижения производительности), задав torch.backends.cudnn.deterministic = True. Дополнительные сведения см. в примечаниях о воспроизводимости.

Параметры:
  • in_channels (int) – количество каналов во входном изображении
  • out_channels (int) – количество каналов, создаваемых свёрткой
  • kernel_size (int или tuple) – размер ядра свёртки
  • stride (int или tuple, необязательный) – шаг свёртки. Значение по умолчанию: 1
  • padding (int или tuple, необязательный) – к обеим сторонам входных данных будет добавлено dilation * (kernel_size - 1) - padding нулевое дополнение. Значение по умолчанию: 0
  • output_padding (int или tuple, необязательный) – дополнительный размер, добавляемый к одной стороне выходной формы. Значение по умолчанию: 0
  • groups (int, необязательный) – количество заблокированных связей между входными и выходными каналами. Значение по умолчанию: 1
  • bias (bool, необязательный) – если True, к выходным данным добавляется обучаемое смещение. Значение по умолчанию: True
  • dilation (int или tuple, необязательный) – расстояние между элементами ядра. Значение по умолчанию: 1
Форма:
  • Входные данные: (N,Cin,Lin)(N, C_{in}, L_{in}) или (Cin,Lin)(C_{in}, L_{in})
  • Выходные данные: (N,Cout,Lout)(N, C_{out}, L_{out}) или (Cout,Lout)(C_{out}, L_{out}), где

    Lout=(Lin−1)×stride−2×padding+dilation×(kernel_size−1)+output_padding+1L_{out} = (L_{in} - 1) \times \text{stride} - 2 \times \text{padding} + \text{dilation} \times (\text{kernel\_size} - 1) + \text{output\_padding} + 1
Переменные:
  • weight (Tensor) – обучаемые веса модуля формы (in_channels,out_channelsgroups,(\text{in\_channels}, \frac{\text{out\_channels}}{\text{groups}}, kernel_size)\text{kernel\_size}). Значения этих весов выбираются из распределения U(−k,k)\mathcal{U}(-\sqrt{k}, \sqrt{k}), где k=groupsCout∗kernel_sizek = \frac{groups}{C_\text{out} * \text{kernel\_size}}
  • bias (Tensor) – обучаемое смещение модуля формы (out_channels). Если bias равно True, значения этих весов выбираются из распределения U(−k,k)\mathcal{U}(-\sqrt{k}, \sqrt{k}), где k=groupsCout∗kernel_sizek = \frac{groups}{C_\text{out} * \text{kernel\_size}}

Примеры:

>>> # With square kernels and equal stride
>>> m = nn.ConvTranspose1d(16, 33, 3, stride=2)
>>> input = torch.randn(20, 16, 50)
>>> output = m(input)
>>> # exact output size can be also specified as an argument
>>> input = torch.randn(1, 16, 12)
>>> downsample = nn.Conv1d(16, 16, 3, stride=2, padding=1)
>>> upsample = nn.ConvTranspose1d(16, 16, 3, stride=2, padding=1)
>>> h = downsample(input)
>>> h.size()
torch.Size([1, 16, 6])
>>> output = upsample(h, output_size=input.size())
>>> output.size()
torch.Size([1, 16, 12])

© 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.modules.conv.ConvTranspose1d.html

Spec-Zone.ru

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