Функция tanh
Функция tanh применяет гиперболический тангенс
к каждому элементу входного тензора. Она возвращает
тензор той же размерности, где каждый элемент был
преобразован по формуле: (exp(x) - exp(-x)) / (exp(x) + exp(-x)).
Результат лежит в интервале от -1 до 1. Функция часто
используется как функция активации в скрытых слоях
нейронных сетей, особенно в рекуррентных.
Синтаксис
torch.tanh(input) -> Tensor
Параметры
- input (Tensor) - входной тензор, к элементам которого применяется гиперболический тангенс.
Пример
Применим гиперболический тангенс к одномерному тензору:
import torch
t = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
res = torch.tanh(t)
print(res)
Результат выполнения кода:
tensor([-0.9640, -0.7616, 0.0000, 0.7616, 0.9640])
Пример
Применим функцию к двумерному тензору:
import torch
t = torch.tensor([
[-1.0, 0.0, 1.0],
[-2.0, 2.0, 0.5]
])
res = torch.tanh(t)
print(res)
Результат выполнения кода:
tensor([
[-0.7616, 0.0000, 0.7616],
[-0.9640, 0.9640, 0.4621]
])
Пример
Использование гиперболического тангенса в качестве функции активации для слоя нейронной сети:
import torch
import torch.nn as nn
torch.manual_seed(0)
layer = nn.Linear(4, 3)
x = torch.randn(2, 4)
output = layer(x)
activated = torch.tanh(output)
print(activated)
Результат выполнения кода:
tensor([
[-0.8107, 0.2266, 0.1316],
[-0.9493, 0.8325, 0.9149]
])
Пример
Сравнение с функцией sigmoid. В отличие от
сигмоиды, гиперболический тангенс возвращает значения
в диапазоне от -1 до 1, что делает его центрированным
около нуля:
import torch
t = torch.tensor([-2.0, 0.0, 2.0])
tanh_res = torch.tanh(t)
sigmoid_res = torch.sigmoid(t)
print("tanh:", tanh_res)
print("sigmoid:", sigmoid_res)
Результат выполнения кода:
tanh: tensor([-0.9640, 0.0000, 0.9640])
sigmoid: tensor([0.1192, 0.5000, 0.8808])