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

Функция F.selu

Функция F.selu применяет масштабированную экспоненциальную линейную единицу (Scaled Exponential Linear Unit) к каждому элементу входного тензора. Эта функция активации является самомасштабирующейся и помогает сохранять среднее значение и дисперсию активаций в глубоких сетях, что способствует более стабильному обучению. Функция определяется следующим образом: для положительных значений она возвращает x * scale, а для отрицательных - scale * alpha * (exp(x) - 1), где alpha и scale - предопределённые константы.

В качестве первого параметра функция принимает тензор input, к элементам которого применяется активация. Необязательный параметр inplace позволяет выполнить операцию непосредственно в исходном тензоре, изменяя его. По умолчанию inplace равен False, то есть создаётся новый тензор.

Синтаксис

torch.nn.functional.selu(input, inplace=False)

Пример

Давайте применим функцию F.selu к простому тензору с положительными и отрицательными числами:

import torch import torch.nn.functional as F t = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0]) res = F.selu(t) print(res)

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

tensor([-2.1118, -1.1274, 0.0000, 1.0507, 2.1014])

Пример

Если мы хотим изменить исходный тензор, мы можем использовать параметр inplace:

import torch import torch.nn.functional as F t = torch.tensor([-1.0, 0.0, 1.0]) F.selu(t, inplace=True) print(t)

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

tensor([-1.1274, 0.0000, 1.0507])

Пример

Функция F.selu часто используется в нейронных сетях в качестве функции активации для скрытых слоёв. Вот пример её использования в простой модели:

import torch import torch.nn as nn import torch.nn.functional as F class MyModel(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(10, 20) self.fc2 = nn.Linear(20, 5) def forward(self, x): x = F.selu(self.fc1(x)) x = self.fc2(x) return x model = MyModel() t = torch.randn(3, 10) res = model(t) print(res.shape)

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

torch.Size([3, 5])

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

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