Функция log_softmax
Функция log_softmax применяет логарифмическое преобразование к результату функции softmax. Она принимает на вход тензор, размерность для применения операции и необязательный параметр dtype. Функция вычисляет логарифм от softmax, что обеспечивает численную стабильность при работе с вероятностями.
Синтаксис
torch.log_softmax(input, dim, dtype=None)
Параметры функции:
-
input- входной тензор -
dim- размерность, по которой применяется log_softmax -
dtype- необязательный тип данных для результата
Пример применения к вектору
Применим log_softmax к одномерному тензору:
import torch
t = torch.tensor([1.0, 2.0, 3.0])
res = torch.log_softmax(t, dim=0)
print(res)
Результат выполнения кода:
tensor([-2.4076, -1.4076, -0.4076])
Пример применения к матрице
Применим log_softmax к двумерному тензору по разным размерностям:
import torch
t = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
res = torch.log_softmax(t, dim=1)
print(res)
Результат выполнения кода:
tensor([
[-2.4076, -1.4076, -0.4076],
[-2.4076, -1.4076, -0.4076],
])
Пример с указанием типа данных
Укажем тип данных для результата log_softmax:
import torch
t = torch.tensor([1.0, 2.0, 3.0])
res = torch.log_softmax(t, dim=0, dtype=torch.float64)
print(res.dtype)
print(res)
Результат выполнения кода:
torch.float64
tensor([-2.4076, -1.4076, -0.4076], dtype=torch.float64)
Пример сравнения с комбинацией log и softmax
Сравним результат log_softmax с отдельным применением log и softmax:
import torch
t = torch.tensor([1.0, 2.0, 3.0])
res1 = torch.log_softmax(t, dim=0)
res2 = torch.log(torch.softmax(t, dim=0))
print(res1)
print(res2)
print(torch.allclose(res1, res2))
Результат выполнения кода:
tensor([-2.4076, -1.4076, -0.4076])
tensor([-2.4076, -1.4076, -0.4076])
True