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

Класс Hardsigmoid

Класс Hardsigmoid применяет кусочно-линейную аппроксимацию сигмоиды к каждому элементу тензора. Функция вычисляется по формуле: max(0, min(1, (x + 3) / 6)). Этот класс не принимает параметров при инициализации и используется как слой в нейронных сетях.

Синтаксис

torch.nn.Hardsigmoid()

Пример

Применим функцию активации к одномерному тензору:

import torch m = torch.nn.Hardsigmoid() t = torch.tensor([-5.0, -2.0, 0.0, 2.0, 5.0]) res = m(t) print(res)

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

tensor([0.0000, 0.1667, 0.5000, 0.8333, 1.0000])

Пример

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

import torch model = torch.nn.Sequential( torch.nn.Linear(5, 10), torch.nn.Hardsigmoid() ) t = torch.randn(3, 5) res = model(t) print(res.shape) print(res)

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

torch.Size([3, 10]) tensor([[0.4782, 0.6070, 0.8439, 0.7800, 0.5946, 0.4053, 0.6994, 0.5593, 0.5457, 0.4515], [0.5658, 0.7234, 0.6963, 0.3852, 0.8214, 0.3779, 0.3509, 0.7738, 0.5667, 0.3897], [0.3631, 0.4260, 0.3389, 0.4551, 0.7829, 0.5767, 0.6333, 0.6090, 0.5301, 0.7833]])

Пример

Сравним Hardsigmoid с обычной сигмоидой для наглядности:

import torch torch.manual_seed(0) t = torch.linspace(-5, 5, 11) hard_sig = torch.nn.Hardsigmoid() sig = torch.nn.Sigmoid() res_hard = hard_sig(t) res_sig = sig(t) print("Hardsigmoid:", res_hard) print("Sigmoid:", res_sig)

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

Hardsigmoid: tensor([0.0000, 0.0000, 0.1667, 0.3333, 0.5000, 0.6667, 0.8333, 1.0000, 1.0000, 1.0000, 1.0000]) Sigmoid: tensor([0.0067, 0.0474, 0.2689, 0.7311, 0.9526, 0.9933, 0.9991, 0.9998, 1.0000, 1.0000, 1.0000])

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

  • класс Hardswish,
    который использует Hardsigmoid внутри себя
  • класс Sigmoid,
    который реализует классическую сигмоиду
  • класс SiLU,
    который является гладкой аппроксимацией
  • класс ReLU,
    который также является кусочно-линейной функцией
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить