Функция F.softmin
Функция F.softmin применяется к тензору и вычисляет
softmin для каждого элемента вдоль заданной размерности.
По сути, это softmax, но с отрицательным знаком перед входными
данными: softmin(x) = exp(-x) / sum(exp(-x)).
В результате элементы с меньшими значениями получают большие веса.
Первый параметр функции - входной тензор input,
второй - размерность dim, по которой применяется операция.
Также можно указать тип данных dtype для выходного тензора.
Синтаксис
torch.nn.functional.softmin(input, dim, dtype=None)
Пример
Рассмотрим базовое применение функции F.softmin
к одномерному тензору:
import torch
import torch.nn.functional as F
t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0])
res = F.softmin(t, dim=0)
print(res)
Результат выполнения кода:
tensor([0.6364, 0.2341, 0.0861, 0.0317, 0.0117])
Как видно, наибольший вес получил наименьший элемент (1.0), а наименьший вес - наибольший (5.0).
Пример
Применим F.softmin к двумерному тензору
вдоль разных размерностей:
import torch
import torch.nn.functional as F
t = torch.tensor([
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
])
res_dim0 = F.softmin(t, dim=0)
res_dim1 = F.softmin(t, dim=1)
print("Softmin по dim=0:")
print(res_dim0)
print("\nSoftmin по dim=1:")
print(res_dim1)
Результат выполнения кода:
Softmin по dim=0:
tensor([
[0.9526, 0.9526, 0.9526],
[0.0474, 0.0474, 0.0474],
])
Softmin по dim=1:
tensor([
[0.6652, 0.2447, 0.0900],
[0.0900, 0.2447, 0.6652],
])
При вычислении по строке (dim=1) минимальное значение в строке получает наибольший вес.
Пример
Используем параметр dtype для задания типа данных
выходного тензора:
import torch
import torch.nn.functional as F
t = torch.tensor([1, 2, 3, 4, 5])
res = F.softmin(t, dim=0, dtype=torch.float64)
print(res.dtype)
print(res)
Результат выполнения кода:
torch.float64
tensor([0.6364, 0.2341, 0.0861, 0.0317, 0.0117], dtype=torch.float64)
Выходной тензор имеет тип float64, как и было указано.
Смотрите также
-
функцию
F.softmax,
которая вычисляет softmax для входного тензора -
функцию
F.log_softmax,
которая вычисляет логарифм softmax -
функцию
F.softplus,
которая является гладкой аппроксимацией ReLU -
функцию
F.softsign,
которая вычисляет softsign для элементов тензора