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

Класс CELU

Класс CELU реализует функцию активации Continuously Differentiable Exponential Linear Unit. В отличие от ELU, эта функция является непрерывно дифференцируемой во всех точках, что улучшает стабильность градиентов во время обучения. Первым параметром конструктор принимает параметр alpha, который контролирует насыщение для отрицательных значений. Вторым параметром можно указать inplace, позволяющий выполнять операцию на месте для экономии памяти.

Синтаксис

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

Пример

Создадим слой активации и применим его к тензору:

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

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

tensor([-0.8647, -0.3935, 0.0000, 0.5000, 2.0000])

Пример

Применим активацию к двухмерному тензору с параметром alpha=0.5:

import torch import torch.nn as nn celu = nn.CELU(alpha=0.5) t = torch.tensor([ [-1.0, 2.0], [-3.0, 4.0], ]) res = celu(t) print(res)

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

tensor([ [-0.3161, 2.0000], [-0.4751, 4.0000], ])

Пример

Используем режим inplace для модификации тензора на месте:

import torch import torch.nn as nn celu = nn.CELU(alpha=1.0, inplace=True) t = torch.tensor([-1.0, 0.5, 2.0]) celu(t) print(t)

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

tensor([-0.6321, 0.5000, 2.0000])

Пример

Применим слой к тензору с градиентами, используя зафиксированное зерно:

import torch import torch.nn as nn torch.manual_seed(0) celu = nn.CELU(alpha=1.5) t = torch.randn(4, requires_grad=True) res = celu(t) res.mean().backward() print(res) print(t.grad)

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

tensor([ 0.0000, -1.5939, 0.8820, 1.4890], grad_fn=<CeluBackward0>) tensor([0.0000, 0.3390, 0.2500, 0.2500])

Пример

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

import torch import torch.nn as nn model = nn.Sequential( nn.Linear(10, 20), nn.CELU(alpha=0.8), nn.Linear(20, 5), ) t = torch.randn(3, 10) res = model(t) print(res.shape)

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

torch.Size([3, 5])

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

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