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)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.ConvTranspose3d.html