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

Класс Softsign

Класс Softsign реализует функцию активации в PyTorch. Данная функция вычисляется по формуле x / (1 + |x|) и возвращает значения в диапазоне от -1 до 1. В отличие от гиперболического тангенса, Softsign имеет более плавный переход и медленнее насыщается. Класс не принимает никаких параметров при инициализации.

Синтаксис

torch.nn.Softsign()

Пример

Давайте создадим функцию активации и применим ее к тензору чисел:

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

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

tensor([-0.7500, -0.5000, 0.0000, 0.5000, 0.7500])

Пример

Давайте применим Softsign к двумерному тензору:

import torch activation = torch.nn.Softsign() t = torch.tensor([ [-2.0, -0.5, 0.0], [0.5, 2.0, 4.0], ]) res = activation(t) print(res)

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

tensor([ [-0.6667, -0.3333, 0.0000], [0.3333, 0.6667, 0.8000], ])

Пример

Давайте используем Softsign в нейронной сети в качестве функции активации:

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

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

torch.Size([3, 5])

Все значения выходного тензора будут находиться в диапазоне от -1 до 1.

Пример

Давайте сравним Softsign с функцией Tanh на больших значениях:

import torch softsign = torch.nn.Softsign() tanh = torch.nn.Tanh() t = torch.tensor([-10.0, -5.0, 0.0, 5.0, 10.0]) res_softsign = softsign(t) res_tanh = tanh(t) print("Softsign:", res_softsign) print("Tanh: ", res_tanh)

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

Softsign: tensor([-0.9091, -0.8333, 0.0000, 0.8333, 0.9091]) Tanh: tensor([-1.0000, -0.9999, 0.0000, 0.9999, 1.0000])

Видно, что Softsign насыщается медленнее, чем Tanh, что может быть полезно для предотвращения затухания градиентов.

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

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