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

Класс Conv3d

Класс Conv3d применяет трёхмерную свёртку к входным данным. Первый параметр in_channels задаёт количество входных каналов, второй out_channels - количество выходных каналов (фильтров), третий kernel_size - размер ядра свёртки. Дополнительно можно задать шаг свёртки stride, отступы padding и другие параметры.

Синтаксис

torch.nn.Conv3d( in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None )

Пример

Давайте создадим простой трёхмерный свёрточный слой для обработки объёмных данных размером 16x16x16:

import torch # Создаём слой Conv3d conv = torch.nn.Conv3d( in_channels=1, out_channels=8, kernel_size=3, stride=1, padding=1 ) # Создаём случайный входной тензор t = torch.randn(1, 1, 16, 16, 16) res = conv(t) print(res.shape)

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

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

Пример

Теперь создадим слой с шагом 2 и без отступов для уменьшения пространственных размерностей:

import torch conv = torch.nn.Conv3d( in_channels=3, out_channels=16, kernel_size=3, stride=2, padding=0 ) t = torch.randn(4, 3, 32, 32, 32) res = conv(t) print(res.shape)

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

torch.Size([4, 16, 15, 15, 15])

Пример

Давайте используем слой с отступами для сохранения размерности при ядре нечётного размера:

import torch conv = torch.nn.Conv3d( in_channels=1, out_channels=4, kernel_size=3, stride=1, padding=1 ) t = torch.randn(2, 1, 8, 8, 8) res = conv(t) print(res.shape)

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

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

Пример

Рассмотрим слой с расширением (dilation) для увеличения области восприятия без увеличения числа параметров:

import torch conv = torch.nn.Conv3d( in_channels=3, out_channels=8, kernel_size=3, dilation=2, padding=2 ) t = torch.randn(1, 3, 20, 20, 20) res = conv(t) print(res.shape)

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

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

Пример

Создадим свёрточный слой с групповой свёрткой для разделения каналов на независимые группы:

import torch conv = torch.nn.Conv3d( in_channels=6, out_channels=6, kernel_size=3, padding=1, groups=3 ) t = torch.randn(2, 6, 10, 10, 10) res = conv(t) print(res.shape)

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

torch.Size([2, 6, 10, 10, 10])

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

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