Класс LeakyReLU
Класс LeakyReLU из модуля torch.nn применяет функцию активации, которая возвращает входное значение для положительных чисел и умножает отрицательные значения на коэффициент наклона negative_slope. Это решает проблему "мёртвых" нейронов, характерную для классической функции ReLU, так как градиент может проходить через отрицательные значения. Параметр inplace позволяет выполнять операцию без выделения новой памяти.
Синтаксис
torch.nn.LeakyReLU(
negative_slope=0.01,
inplace=False
)
Параметры:
negative_slope- коэффициент наклона для отрицательных значений (по умолчанию 0.01)inplace- выполнять операцию непосредственно на входных данных (по умолчанию False)
Пример
Создадим слой с наклоном по умолчанию и применим его к тензору:
import torch
import torch.nn as nn
layer = nn.LeakyReLU()
t = torch.tensor([-2.0, -0.5, 0.0, 1.0, 3.0])
res = layer(t)
print(res)
Результат выполнения кода:
tensor([-0.0200, -0.0050, 0.0000, 1.0000, 3.0000])
Отрицательные значения были умножены на 0.01, положительные остались без изменений.
Пример
Изменим коэффициент наклона на 0.2 и применим слой:
import torch
import torch.nn as nn
layer = nn.LeakyReLU(negative_slope=0.2)
t = torch.tensor([-5.0, -1.0, 2.0, 4.0])
res = layer(t)
print(res)
Результат выполнения кода:
tensor([-1.0000, -0.2000, 2.0000, 4.0000])
Теперь отрицательные значения умножаются на 0.2.
Пример
Используем слой в составе последовательной модели с фиксацией случайного зерна:
import torch
import torch.nn as nn
torch.manual_seed(0)
model = nn.Sequential(
nn.Linear(5, 3),
nn.LeakyReLU(negative_slope=0.1)
)
t = torch.randn(2, 5)
res = model(t)
print(res)
Результат выполнения кода:
tensor([
[ 0.0000, 0.0000, -0.0047],
[ 0.0000, -0.1616, -0.0944]
])
Слой активации применён после линейного преобразования.
Пример
Используем параметр inplace для экономии памяти:
import torch
import torch.nn as nn
layer = nn.LeakyReLU(inplace=True)
t = torch.tensor([-3.0, 0.5, 2.0])
res = layer(t)
print(res)
print(t is res)
Результат выполнения кода:
tensor([-0.0300, 0.5000, 2.0000])
True
Операция выполнена на месте, исходный тензор изменён.