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

Класс LazyConv2d

Класс LazyConv2d из модуля torch.nn применяется для выполнения двумерной свертки (2D convolution) с отложенным определением размерности входных данных. В отличие от обычного Conv2d, этот слой не требует явного указания количества входных каналов при инициализации. Первым параметром передаётся количество выходных каналов, вторым - размер ядра свертки. Остальные параметры (шаг, дополнение, dilation, groups, bias) являются необязательными.

Синтаксис

torch.nn.LazyConv2d(out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

Пример

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

import torch import torch.nn as nn torch.manual_seed(0) # Создаем ленивый слой с 16 выходными каналами и ядром 3x3 layer = nn.LazyConv2d(out_channels=16, kernel_size=3) # Входной тензор имеет форму [batch, channels, height, width] x = torch.randn(2, 3, 32, 32) # При первом проходе определяется размер входных каналов res = layer(x) print(res.shape)

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

torch.Size([2, 16, 30, 30])

Пример

Давайте создадим ленивый слой с пользовательскими параметрами:

import torch import torch.nn as nn torch.manual_seed(0) # Слой с шагом 2, дополнением 1 и без смещения layer = nn.LazyConv2d( out_channels=8, kernel_size=5, stride=2, padding=1, bias=False ) # Входной тензор с 12 каналами x = torch.randn(1, 12, 64, 64) res = layer(x) print(res.shape)

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

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

Пример

Давайте посмотрим, как меняются веса слоя после инициализации:

import torch import torch.nn as nn torch.manual_seed(0) layer = nn.LazyConv2d(out_channels=4, kernel_size=3) # До первого прохода веса не определены print(hasattr(layer, 'weight')) x = torch.randn(1, 5, 10, 10) res = layer(x) # После прохода веса инициализируются print(hasattr(layer, 'weight')) print(layer.weight.shape)

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

False True torch.Size([4, 5, 3, 3])

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

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