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

Класс Conv2d

Класс Conv2d применяет двумерную свертку к входным данным. Он принимает входной тензор формы (batch_size, in_channels, height, width) и возвращает тензор формы (batch_size, out_channels, new_height, new_width). Параметры свертки (веса и смещения) обучаются в процессе обратного распространения. Основные параметры: in_channels - количество входных каналов, out_channels - количество выходных каналов (фильтров), kernel_size - размер ядра свертки.

Синтаксис

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

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

in_channels - количество каналов на входе (например, 3 для RGB-изображения). out_channels - количество фильтров, которые будет применять слой. kernel_size - размер ядра свертки (целое число или кортеж). stride - шаг свертки (по умолчанию 1). padding - добавление нулей по краям (по умолчанию 0). padding_mode - режим заполнения ('zeros', 'reflect', 'replicate', 'circular'). bias - булево значение, добавлять ли обучаемый bias.

Пример

Создадим сверточный слой с одним входным каналом, одним выходным каналом и ядром 3x3:

import torch import torch.nn as nn conv = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3) print(conv)

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

Conv2d(1, 1, kernel_size=(3, 3), stride=(1, 1))

Пример

Применим свертку к случайному тензору размером 1x1x5x5 (батч, каналы, высота, ширина):

import torch import torch.nn as nn torch.manual_seed(0) conv = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3) t = torch.randn(1, 1, 5, 5) res = conv(t) print(res.shape)

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

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

Пример

Используем свертку с шагом 2 и паддингом 1 для сохранения размера:

import torch import torch.nn as nn torch.manual_seed(0) conv = nn.Conv2d( in_channels=3, out_channels=10, kernel_size=3, stride=2, padding=1 ) t = torch.randn(1, 3, 32, 32) res = conv(t) print(res.shape)

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

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

Пример

Создадим свертку с ядром 5x5 и нулевым паддингом, чтобы выходные размеры совпадали с входными:

import torch import torch.nn as nn torch.manual_seed(0) conv = nn.Conv2d( in_channels=3, out_channels=16, kernel_size=5, padding=2 ) t = torch.randn(8, 3, 64, 64) res = conv(t) print(res.shape)

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

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

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

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