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

Класс ConvTranspose3d

Класс ConvTranspose3d применяет трехмерную транспонированную свертку к входному тензору. Также этот слой называют деконволюцией или обратной сверткой. Он используется для увеличения пространственного разрешения данных, например, в генеративных моделях и сегментации изображений. Первым параметром передается количество входных каналов, вторым - количество выходных каналов, третьим - размер ядра свертки.

Синтаксис

torch.nn.ConvTranspose3d( in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', )

Пример

Давайте создадим слой ConvTranspose3d с одним входным каналом, одним выходным каналом и ядром размера 3 и применим его к тензору размером 1x1x1x1x1:

import torch t = torch.randn(1, 1, 1, 1, 1) layer = torch.nn.ConvTranspose3d(1, 1, 3) res = layer(t) print(res.shape)

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

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

Выходной тензор имеет размеры: 1 образец, 1 канал и пространственные размеры 3x3x3. Это произошло потому, что ядро размера 3 увеличило пространственные размеры до 3.

Пример

Теперь давайте рассмотрим пример с шагом 2 и выходным дополнением. Создадим слой с ядром 3 и шагом 2, а затем применим его к тензору размера 1x1x2x2x2:

import torch t = torch.randn(1, 1, 2, 2, 2) layer = torch.nn.ConvTranspose3d( in_channels=1, out_channels=1, kernel_size=3, stride=2, output_padding=1, ) res = layer(t) print(res.shape)

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

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

Выходной размер вычисляется по формуле: (output - 1) * stride - 2 * padding + kernel_size + output_padding. При входном размере 2, шаге 2, ядре 3 и выходном дополнении 1 получается размер 5.

Пример

Рассмотрим пример с несколькими входными и выходными каналами. Создадим слой с 3 входными каналами и 5 выходными каналами, применим его к тензору размером 1x3x4x4x4:

import torch t = torch.randn(1, 3, 4, 4, 4) layer = torch.nn.ConvTranspose3d( in_channels=3, out_channels=5, kernel_size=2, stride=2, padding=0, ) res = layer(t) print(res.shape)

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

torch.Size([1, 5, 8, 8, 8])

Выходной тензор имеет 5 каналов (количество выходных каналов) и увеличенные пространственные размеры с 4 до 8.

Пример

Давайте посмотрим на параметры слоя ConvTranspose3d. Создадим слой и выведем его веса и смещения:

import torch layer = torch.nn.ConvTranspose3d(2, 4, 3, bias=True) print(layer.weight.shape) print(layer.bias.shape)

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

torch.Size([2, 4, 3, 3, 3]) torch.Size([4])

Вес имеет форму (входные_каналы, выходные_каналы, глубина, высота, ширина), а смещение - это одномерный тензор размером, равным количеству выходных каналов.

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

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