Функция expm1
Функция expm1 вычисляет exp(x) - 1 для каждого элемента тензора. Она принимает тензор в качестве входного параметра и возвращает новый тензор с результатами поэлементного вычисления. Эта функция особенно полезна для малых значений x, где вычисление exp(x) - 1 напрямую может привести к потере точности из-за вычитания близких чисел.
Функция expm1 является обратной по отношению к функции log1p, которая вычисляет log(1 + x).
Синтаксис
torch.expm1(input, *, out=None)
Входной параметр input (тензор) - тензор, для которого вычисляется выражение exp(x) - 1. Необязательный параметр out (тензор) - тензор для записи результата.
Пример
Давайте вычислим exp(x) - 1 для элементов тензора:
import torch
t = torch.tensor([0.0, 1.0, 2.0, 3.0])
res = torch.expm1(t)
print(res)
Результат выполнения кода:
tensor([ 0.0000, 1.7183, 6.3891, 19.0855])
Пример
Давайте сравним expm1 с прямым вычислением для малых значений, чтобы увидеть разницу в точности:
import torch
# Small values where exp(x) is close to 1
t = torch.tensor([1e-8, 1e-7, 1e-6])
# Direct calculation
direct = torch.exp(t) - 1
# Using expm1
accurate = torch.expm1(t)
print("Direct: ", direct)
print("expm1: ", accurate)
print("Difference:", direct - accurate)
Результат выполнения кода:
Direct: tensor([1.0000e-08, 1.0000e-07, 1.0000e-06])
expm1: tensor([1.0000e-08, 1.0000e-07, 1.0000e-06])
Difference: tensor([0., 0., 0.])
Пример
Давайте применим expm1 к двумерному тензору:
import torch
t = torch.tensor([
[-1.0, 0.0, 1.0],
[0.5, -0.5, 2.0],
])
res = torch.expm1(t)
print(res)
Результат выполнения кода:
tensor([
[-0.6321, 0.0000, 1.7183],
[ 0.6487, -0.3935, 6.3891],
])
Пример
Давайте используем параметр out для записи результата в существующий тензор:
import torch
t = torch.tensor([1.0, 2.0, 3.0])
out_tensor = torch.empty(3)
torch.expm1(t, out=out_tensor)
print(out_tensor)
Результат выполнения кода:
tensor([1.7183, 6.3891, 19.0855])
Смотрите также
-
функцию
exp,
которая вычисляет экспоненту от каждого элемента тензора -
функцию
log1p,
которая вычисляет натуральный логарифм от(1 + x)для элементов тензора -
функцию
log,
которая вычисляет натуральный логарифм от каждого элемента тензора -
функцию
sqrt,
которая вычисляет квадратный корень от каждого элемента тензора