Spec-Zone.ru › PyTorch 1

ConvTranspose1d

class torch.nn.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]

Применяет оператор 1D транспонированной свёртки к входному изображению, состоящему из нескольких входных каналов.

Этот модуль можно рассматривать как градиент Conv1d по отношению к его входным данным. Он также известен как свёртка с дробным шагом или обратная свёртка (хотя это не фактическая обратная операция свёртки, поскольку она не вычисляет истинное обратное преобразование свёртки). Более подробную информацию можно найти в визуализациях здесь и в статье 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, каждый входной канал свёртывается со своим набором фильтров (размера out_channelsin_channels\frac{\text{out\_channels}}{\text{in\_channels}}).

Примечание

Аргумент padding эффективно добавляет dilation * (kernel_size - 1) - padding количество нулевого заполнения к обеим сторонам входа. Это задаётся таким образом, чтобы при инициализации Conv1d и ConvTranspose1d одинаковыми параметрами, они представляли собой взаимно обратные преобразования по отношению к входным и выходным размерам. Однако, когда stride > 1, Conv1d отображает несколько входных размеров на один и тот же выходной размер. output_padding предоставляется для разрешения этой неоднозначности, фактически увеличивая вычисленный размер выходной формы с одной стороны. Обратите внимание, что output_padding используется только для определения выходного размера, но фактически не добавляет нулевого заполнения к выходу.

Примечание

В некоторых случаях при использовании CUDA-бекенда с CuDNN этот оператор может выбрать недетерминированный алгоритм для повышения производительности. Если это нежелательно, вы можете попытаться сделать операцию детерминированной (возможно, с некоторыми затратами на производительность) заданием torch.backends.cudnn.deterministic = True. См. примечания о воспроизводимости для получения дополнительной информации.

Параметры:
  • in_channels (int) – Количество каналов в входном изображении
  • out_channels (int) – Количество каналов, производимых свёрткой
  • kernel_size (int or tuple) – Размер ядра свёртки
  • stride (int or tuple, необязательно) – Шаг свёртки. По умолчанию: 1
  • padding (int or tuple, необязательно) – dilation * (kernel_size - 1) - padding нулевое заполнение будет добавлено к обеим сторонам входа. По умолчанию: 0
  • output_padding (int or tuple, необязательно) – Дополнительный размер, добавляемый к одной стороне выходной формы. По умолчанию: 0
  • groups (int, необязательно) – Количество блоков соединений от входных каналов к выходным каналам. По умолчанию: 1
  • bias (bool, необязательно) – Если True, добавляет обучаемый сдвиг к выходу. По умолчанию: True
  • dilation (int or tuple, необязательно) – Расстояние между элементами ядра. По умолчанию: 1
Форма:
  • Вход: (N,Cin,Lin)(N, C_{in}, L_{in}) или (Cin,Lin)(C_{in}, L_{in})
  • Выход: (N,Cout,Lout)(N, C_{out}, L_{out}) или (Cout,Lout)(C_{out}, L_{out}), где

    Lout=(Lin−1)×stride−2×padding+dilation×(kernel_size−1)+output_padding+1L_{out} = (L_{in} - 1) \times \text{stride} - 2 \times \text{padding} + \text{dilation} \times (\text{kernel\_size} - 1) + \text{output\_padding} + 1
Переменные:
  • weight (Тензор) – обучаемые веса модуля формы (in_channels,out_channelsgroups,(\text{in\_channels}, \frac{\text{out\_channels}}{\text{groups}}, kernel_size)\text{kernel\_size}). Значения этих весов выбираются из U(−k,k)\mathcal{U}(-\sqrt{k}, \sqrt{k}), где k=groupsCout∗kernel_sizek = \frac{groups}{C_\text{out} * \text{kernel\_size}}
  • bias (Тензор) – обучаемый сдвиг модуля формы (out_channels). Если bias True, то значения этих весов выбираются из U(−k,k)\mathcal{U}(-\sqrt{k}, \sqrt{k}), где k=groupsCout∗kernel_sizek = \frac{groups}{C_\text{out} * \text{kernel\_size}}

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.ConvTranspose1d.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API