Класс LocalResponseNorm
Класс LocalResponseNorm применяет локальную нормализацию
ответов (Local Response Normalization, LRN) к входному тензору.
Этот метод нормализует значения активаций в локальных окрестностях
вдоль оси каналов. Параметр size определяет размер
окрестности для нормализации, alpha - масштабирующий
коэффициент, beta - показатель степени,
а k - константа, добавляемая для избежания деления на ноль.
Синтаксис
torch.nn.LocalResponseNorm(size, alpha=1e-4, beta=0.75, k=1.0)
Параметры
Метод принимает следующие параметры:
size(int) - размер локальной окрестности для нормализации (обязательный параметр).alpha(float) - масштабирующий коэффициент (по умолчанию 1e-4).beta(float) - показатель степени (по умолчанию 0.75).k(float) - константа (по умолчанию 1.0).
Пример ⁅n="sect"⁆
Давайте создадим слой нормализации с размером окрестности 5 и применим его к случайному тензору:
import torch
import torch.nn as nn
torch.manual_seed(0)
lrn = nn.LocalResponseNorm(size=5)
t = torch.randn(1, 10, 5, 5)
res = lrn(t)
print(res.shape)
Результат выполнения кода:
torch.Size([1, 10, 5, 5])
Пример ⁅n="sect"⁆
Рассмотрим пример с изменёнными параметрами alpha и beta:
import torch
import torch.nn as nn
torch.manual_seed(1)
lrn = nn.LocalResponseNorm(size=3, alpha=0.001, beta=0.5, k=2.0)
t = torch.randn(1, 6, 4, 4)
res = lrn(t)
print(res[0, 0, 0, :4])
Результат выполнения кода:
tensor([-0.2505, 0.0100, 0.1135, 0.1305])
Пример ⁅n="sect"⁆
Использование LocalResponseNorm в составе последовательной модели Sequential:
import torch
import torch.nn as nn
torch.manual_seed(2)
model = nn.Sequential(
nn.Conv2d(3, 16, kernel_size=3, padding=1),
nn.LocalResponseNorm(size=3),
nn.ReLU(),
nn.MaxPool2d(2)
)
t = torch.randn(1, 3, 32, 32)
res = model(t)
print(res.shape)
Результат выполнения кода:
torch.Size([1, 16, 16, 16])
Смотрите также
-
класс
BatchNorm2d,
который применяет пакетную нормализацию для двумерных данных -
класс
LayerNorm,
который выполняет нормализацию по признаковому измерению -
класс
GroupNorm,
который группирует каналы для нормализации -
класс
InstanceNorm2d,
который выполняет нормализацию для каждого объекта независимо