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

Функция F.prelu

Функция F.prelu применяет параметрическую функцию активации выпрямленного линейного элемента (Parametric ReLU). В отличие от обычного ReLU, который обнуляет отрицательные значения, PReLU умножает их на обучаемый коэффициент alpha, что позволяет модели адаптировать наклон для отрицательной области. Это помогает избежать проблемы "умирающих" нейронов и улучшает обучение глубоких сетей.

Первый параметр функции - входной тензор input. Второй параметр - весовой коэффициент weight, который является обучаемым параметром и должен иметь ту же размерность, что и количество каналов входного тензора (или может быть скаляром). По умолчанию коэффициент инициализируется значением 0.25.

Синтаксис

torch.nn.functional.prelu(input, weight)

Параметры

Функция принимает два обязательных аргумента:

  • input - входной тензор произвольной формы.
  • weight - обучаемый тензор (коэффициент), который определяет наклон для отрицательных значений. Если входной тензор имеет форму (N, C, *), то weight должен иметь размер (C) или (1). Если входной тензор одномерный, weight может быть скаляром.

Пример

Базовое применение PReLU с коэффициентом по умолчанию:

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

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

tensor([-0.2500, 0.0000, 1.0000, 2.0000])

Пример

Применение PReLU к двумерному тензору с весами для каждого канала:

import torch import torch.nn.functional as F t = torch.tensor([ [-1.0, -2.0, 3.0], [4.0, -5.0, 6.0] ]) # weight для каждого из 3 каналов weight = torch.tensor([0.1, 0.2, 0.3]) res = F.prelu(t, weight) print(res)

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

tensor([ [-0.1000, -0.4000, 0.9000], [ 0.4000, -1.0000, 1.8000] ])

Пример

Использование PReLU в нейронной сети с обучаемым параметром:

import torch import torch.nn as nn import torch.nn.functional as F class MyModel(nn.Module): def __init__(self): super().__init__() self.prelu_weight = nn.Parameter(torch.tensor(0.1)) def forward(self, x): return F.prelu(x, self.prelu_weight) model = MyModel() t = torch.tensor([-0.5, 0.5, -1.0, 2.0]) res = model(t) print(res)

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

tensor([-0.0500, 0.5000, -0.1000, 2.0000], grad_fn=<PreluBackward>)

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

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