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

Класс 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

Операция выполнена на месте, исходный тензор изменён.

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

  • класс ReLU,
    который обнуляет отрицательные значения
  • класс PReLU,
    который обучает коэффициент наклона
  • класс ELU,
    который использует экспоненциальное преобразование
  • класс SELU,
    который обеспечивает самонормализацию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить