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 при использовании входных данных с плавающей запятой 16 бит этот модуль будет использовать разную точность для обратного прохода.
-
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— в этом случае одно и то же значение используется для измерений глубины, высоты и ширины - кортежем из трёх целых чисел — в этом случае первое
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 или кортеж) – Размер свёртки
- stride (int или кортеж, необязательно) – Шаг свёртки. По умолчанию: 1
-
padding (int или кортеж, необязательно) –
dilation * (kernel_size - 1) - paddingнулевое заполнение будет добавлено к обеим сторонам каждого измерения во входных данных. По умолчанию: 0 - output_padding (int или кортеж, необязательно) – Дополнительный размер, добавляемый к одной стороне каждого измерения в выходной форме. По умолчанию: 0
- groups (int, необязательно) – Количество блоков соединений от входных каналов к выходным каналам. По умолчанию: 1
-
bias (bool, необязательно) – Если
True, добавляет обучаемый смещение к выходу. По умолчанию:True - dilation (int или кортеж, необязательно) – Расстояние между элементами ядра. По умолчанию: 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/1.13/generated/torch.nn.ConvTranspose3d.html