Функция F.softsign
Функция F.softsign применяет мягкую сигнатуру (softsign) поэлементно к переданному тензору. Данная функция является гладкой аппроксимацией функции знака и относится к семейству активационных функций. Она ограничивает выходные значения в диапазоне от -1 до 1, но в отличие от гиперболического тангенса имеет более пологие "хвосты" и другую кривизну вблизи нуля. Формула функции: softsign(x) = x / (1 + |x|). Функция принимает на вход тензор произвольной формы и возвращает тензор той же формы.
Параметры функции:
-
input- входной тензор, к которому применяется функция.
Функция F.softsign входит в модуль torch.nn.functional, поэтому для её использования необходимо импортировать его как F.
Синтаксис
torch.nn.functional.softsign(input)
Пример
Применим функцию softsign к одномерному тензору, содержащему положительные и отрицательные значения:
import torch
import torch.nn.functional as F
t = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
res = F.softsign(t)
print(res)
Результат выполнения кода:
tensor([-0.7500, -0.5000, 0.0000, 0.5000, 0.7500])
Пример
Рассмотрим применение softsign к двумерному тензору:
import torch
import torch.nn.functional as F
t = torch.tensor([
[-5.0, -2.0, 0.0],
[2.0, 5.0, 10.0]
])
res = F.softsign(t)
print(res)
Результат выполнения кода:
tensor([
[-0.8333, -0.6667, 0.0000],
[ 0.6667, 0.8333, 0.9091]
])
Пример
Сравним поведение softsign и tanh для больших значений. Обратите внимание, что softsign медленнее стремится к насыщению:
import torch
import torch.nn.functional as F
t = torch.tensor([-10.0, -5.0, 0.0, 5.0, 10.0])
softsign_res = F.softsign(t)
tanh_res = torch.tanh(t)
print("softsign:", softsign_res)
print("tanh: ", tanh_res)
Результат выполнения кода:
softsign: tensor([-0.9091, -0.8333, 0.0000, 0.8333, 0.9091])
tanh: tensor([-1.0000, -0.9999, 0.0000, 0.9999, 1.0000])