ConvTranspose3d
-
class torch.nn.modules.conv.ConvTranspose3d(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)[исходный код] -
Применяет оператор трехмерной транспонированной свертки к входному изображению, состоящему из нескольких входных плоскостей. Оператор транспонированной свертки умножает каждое значение входных данных поэлементно на обучаемое ядро и суммирует результаты по всем входным плоскостям признаков.
Этот модуль можно рассматривать как градиент Conv3d по входным данным. Он также известен как свертка с дробным шагом или деконволюция (хотя это не настоящая операция деконволюции, поскольку она не вычисляет истинную обратную операцию свертки). Дополнительные сведения см. в визуализациях здесь и в статье «Деконволюционные сети».
Этот модуль поддерживает 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каждый входной канал сворачивается с собственным набором фильтров (размером ).
Параметры
kernel_size,stride,padding,output_paddingмогут быть заданы одним из следующих способов:- одним значением
int— в этом случае одно и то же значение используется для измерений глубины, высоты и ширины; tupleиз трех целых чисел — в этом случае первоеintиспользуется для измерения глубины, второеint— для измерения высоты, а третьеint— для измерения ширины.
Примечание
Аргумент
paddingфактически добавляетdilation * (kernel_size - 1) - paddingнулевых значений с обеих сторон входных данных. Это значение выбрано так, чтобы при инициализацииConv3dиConvTranspose3dс одинаковыми параметрами они были обратными друг другу относительно форм входных и выходных данных. Однако приstride > 1Conv3dотображает несколько форм входных данных в одну и ту же форму выходных данных. Параметр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.ConvTranspose3d(16, 33, 3, stride=2) >>> # non-square kernels and unequal stride and with padding >>> m = nn.ConvTranspose3d(16, 33, (3, 5, 2), stride=(2, 1, 1), padding=(0, 4, 2)) >>> input = torch.randn(20, 16, 10, 50, 100) >>> output = m(input)
-
© 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.ConvTranspose3d.html