Класс Tanhshrink
Класс Tanhshrink из модуля torch.nn представляет собой функцию активации,
которая вычисляется по формуле Tanhshrink(x) = x - tanh(x).
Она применяется поэлементно ко всем элементам входного тензора.
Данная функция не имеет обучаемых параметров, поэтому может использоваться
как в виде отдельного класса, так и через функциональный интерфейс.
Синтаксис
torch.nn.Tanhshrink()
Класс не принимает никаких параметров при создании. Вызов объекта применяет функцию активации к переданному тензору.
Пример
Давайте применим функцию активации к одномерному тензору:
import torch
import torch.nn as nn
t = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
activation = nn.Tanhshrink()
res = activation(t)
print(res)
Результат выполнения кода:
tensor([-1.0364, -0.2384, 0.0000, 0.2384, 1.0364])
Пример
Применим активацию к двумерному тензору:
import torch
import torch.nn as nn
t = torch.tensor([
[-3.0, -2.0, -1.0],
[0.0, 1.0, 2.0],
[3.0, 4.0, 5.0]
])
activation = nn.Tanhshrink()
res = activation(t)
print(res)
Результат выполнения кода:
tensor([
[-2.9506, -1.0364, -0.2384],
[0.0000, 0.2384, 1.0364],
[2.9506, 3.9863, 4.9930]
])
Пример
Использование Tanhshrink в составе нейронной сети:
import torch
import torch.nn as nn
class MyModel(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(10, 5)
self.act = nn.Tanhshrink()
def forward(self, x):
x = self.fc(x)
x = self.act(x)
return x
model = MyModel()
t = torch.randn(3, 10)
res = model(t)
print(res.shape)
Результат выполнения кода:
torch.Size([3, 5])
Как видно из примера, размерность тензора сохраняется после применения активации.