РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
299 of 769 menu

Класс ConvTranspose1d

Класс ConvTranspose1d из модуля torch.nn предназначен для выполнения транспонированной свертки над одномерными данными. Этот слой часто используют в генеративных моделях и архитектурах типа autoencoder для увеличения разрешения признакового пространства. Первым параметром передается количество входных каналов, вторым - количество выходных каналов, третьим - размер ядра свертки. Дополнительные параметры: stride (шаг), padding (отступы), output_padding (добавочный отступ на выходе), dilation (расширение ядра), groups (группировка) и bias (смещение).

Синтаксис

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')

Основные параметры

Рассмотрим ключевые параметры класса ConvTranspose1d:

  • in_channels - количество входных каналов
  • out_channels - количество выходных каналов
  • kernel_size - размер ядра свертки
  • stride - шаг свертки (по умолчанию 1)
  • padding - отступы, добавляемые к входным данным (по умолчанию 0)
  • output_padding - дополнительный отступ, добавляемый к выходным данным (по умолчанию 0)
  • bias - флаг использования смещения (по умолчанию True)

Пример

Создадим слой транспонированной свертки для увеличения размерности с 3 до 16 каналов и ядром размера 4:

import torch conv_trans = torch.nn.ConvTranspose1d(3, 16, 4) print(conv_trans)

Результат выполнения кода:

ConvTranspose1d(3, 16, kernel_size=(4,), stride=(1,))

Пример

Применим слой к случайному тензору размера (batch_size, channels, length). Входной тензор имеет размер (1, 3, 10), а после слоя размер увеличивается до (1, 16, 13) согласно формуле:

import torch torch.manual_seed(0) t = torch.randn(1, 3, 10) conv_trans = torch.nn.ConvTranspose1d(3, 16, 4) res = conv_trans(t) print(res.shape)

Результат выполнения кода:

torch.Size([1, 16, 13])

Пример с параметрами stride и padding

Изменим шаг и отступы, чтобы управлять размером выходного тензора. При stride=2 и padding=1 выходная длина вычисляется как (input_length - 1) * stride - 2 * padding + kernel_size + output_padding:

import torch torch.manual_seed(0) t = torch.randn(1, 3, 10) conv_trans = torch.nn.ConvTranspose1d(3, 16, 4, stride=2, padding=1) res = conv_trans(t) print(res.shape)

Результат выполнения кода:

torch.Size([1, 16, 21])

Пример использования в нейронной сети

Включим ConvTranspose1d в последовательную модель для увеличения размерности данных:

import torch model = torch.nn.Sequential( torch.nn.ConvTranspose1d(3, 64, 4, stride=2), torch.nn.ReLU(), torch.nn.ConvTranspose1d(64, 32, 4, stride=2), torch.nn.ReLU(), torch.nn.ConvTranspose1d(32, 1, 4, stride=2) ) torch.manual_seed(0) t = torch.randn(1, 3, 10) res = model(t) print(res.shape)

Результат выполнения кода:

torch.Size([1, 1, 82])

Смотрите также

  • класс Conv1d,
    который выполняет обычную одномерную свертку для уменьшения размерности
  • класс ConvTranspose2d,
    который выполняет транспонированную двумерную свертку для изображений
  • класс ConvTranspose3d,
    который выполняет транспонированную трехмерную свертку для объемных данных
  • класс Upsample,
    который выполняет простое увеличение разрешения без обучаемых параметров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить