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

Функция celu

Функция celu применяет активацию CELU (Continuously Differentiable Exponential Linear Unit) к каждому элементу входного тензора. Эта функция является гладкой аппроксимацией ReLU и определяется как CELU(x) = max(0, x) + min(0, alpha * (exp(x / alpha) - 1)). В отличие от стандартной функции ELU, CELU имеет непрерывную производную во всех точках, что делает её предпочтительной в некоторых задачах, требующих гладкости градиентов. Первым параметром функция принимает входной тензор, вторым параметром можно задать коэффициент alpha (по умолчанию 1.0), который контролирует насыщение для отрицательных значений. Третьим параметром передаётся флаг inplace, позволяющий выполнить операцию непосредственно на входном тензоре, изменяя его. Функция возвращает тензор с применённой активацией.

Синтаксис

torch.celu(input, alpha=1.0, inplace=False)

Пример с активацией для положительных и отрицательных чисел

Применим функцию celu к тензору, содержащему как положительные, так и отрицательные значения:

import torch t = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0]) res = torch.celu(t) print(res)

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

tensor([-0.9502, -0.6321, 0.0000, 1.0000, 3.0000])

Пример с изменением параметра alpha

Изменим параметр alpha на 0.5, чтобы изменить крутизну насыщения для отрицательных значений:

import torch t = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0]) res = torch.celu(t, alpha=0.5) print(res)

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

tensor([-0.4751, -0.3161, 0.0000, 1.0000, 3.0000])

Пример с использованием inplace

Применим функцию celu с параметром inplace=True, чтобы изменить исходный тензор без создания нового:

import torch t = torch.tensor([-2.0, 0.0, 2.0]) torch.celu(t, inplace=True) print(t)

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

tensor([-0.8647, 0.0000, 2.0000])

Пример использования в нейронной сети

Функция celu часто используется как слой активации внутри моделей. Рассмотрим простой пример с линейным слоем и активацией:

import torch import torch.nn as nn model = nn.Sequential( nn.Linear(10, 5), nn.CELU(alpha=1.0) ) x = torch.randn(3, 10) out = model(x) print(out.shape)

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

torch.Size([3, 5])

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

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