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

Класс ELU

Класс ELU применяет экспоненциальную линейную функцию активации к каждому элементу входного тензора. Первым параметром конструктор принимает коэффициент alpha (по умолчанию 1.0), который определяет наклон для отрицательных значений. Вторым параметром можно указать inplace - выполнять ли операцию на месте (по умолчанию False).

Функция ELU вычисляется по формуле: если входное значение x > 0, то выход равен x, иначе выход равен alpha * (exp(x) - 1). Эта функция позволяет получать отрицательные выходы, что помогает нейронным сетям обучаться быстрее, так как среднее значение активаций стремится к нулю.

Синтаксис

torch.nn.ELU(alpha=1.0, inplace=False)

Пример

Давайте создадим слой ELU с коэффициентом по умолчанию и применим его к тензору:

import torch import torch.nn as nn elu = nn.ELU() t = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0]) res = elu(t) print(res)

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

tensor([-0.8647, -0.6321, 0.0000, 1.0000, 2.0000])

Пример

Теперь создадим ELU с коэффициентом alpha равным 0.5 и применим к тому же тензору:

import torch import torch.nn as nn elu = nn.ELU(alpha=0.5) t = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0]) res = elu(t) print(res)

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

tensor([-0.4323, -0.3161, 0.0000, 1.0000, 2.0000])

Пример

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

import torch import torch.nn as nn elu = nn.ELU() t = torch.tensor([ [-3.0, -2.0, -1.0], [0.0, 1.0, 2.0], [3.0, 4.0, 5.0], ]) res = elu(t) print(res)

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

tensor([ [-0.9502, -0.8647, -0.6321], [ 0.0000, 1.0000, 2.0000], [ 3.0000, 4.0000, 5.0000], ])

Пример

Используем ELU в составе последовательной модели нейронной сети:

import torch import torch.nn as nn torch.manual_seed(0) model = nn.Sequential( nn.Linear(10, 20), nn.ELU(alpha=1.0), nn.Linear(20, 5), nn.ELU(alpha=1.0), ) t = torch.randn(3, 10) res = model(t) print(res.shape)

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

torch.Size([3, 5])

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

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