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каждый входной канал свёртывается с собственным набором фильтров (размера ).
Примечание
Аргумент
paddingфактически добавляетdilation * (kernel_size - 1) - paddingнулей с обеих сторон входных данных. Это значение выбрано так, чтобы при инициализацииConv1dиConvTranspose1dс одинаковыми параметрами они были обратны друг другу в отношении форм входных и выходных данных. Однако приstride > 1Conv1dотображает несколько форм входных данных в одну и ту же выходную форму. Параметр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
- Форма:
-
- Входные данные: или
-
Выходные данные: или , где
- Переменные:
Примеры:
>>> # 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