ConvTranspose3d
-
class torch.nn.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)[source] -
Применяет оператор 3D транспонированной свёртки к входному изображению, состоящему из нескольких входных плоскостей. Оператор транспонированной свёртки поэлементно умножает каждое значение входных данных на обучаемое ядро и суммирует результаты по всем входным плоскостям признаков.
Этот модуль можно рассматривать как градиент Conv3d по отношению к его входным данным. Он также известен как свёртка с дробным шагом или деконволюция (хотя это не настоящая операция деконволюции, поскольку она не вычисляет точную обратную свёртку). Дополнительную информацию см. в визуализациях здесь и статье Deconvolutional Networks.
Этот модуль поддерживает 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 > 1,Conv3dотображает несколько форм входных данных в одну и ту же форму выходных данных. Параметр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.ConvTranspose3d.html