Класс Hardtanh
Класс Hardtanh представляет собой функцию активации, которая ограничивает входные значения в заданном диапазоне. Она преобразует все значения меньше нижней границы в эту границу, а все значения больше верхней границы в верхнюю границу. Параметры min_val и max_val задают диапазон ограничения.
Синтаксис
torch.nn.Hardtanh(min_val=-1.0, max_val=1.0, inplace=False)
Пример
Давайте создадим слой Hardtanh со стандартным диапазоном и применим его к тензору:
import torch
hardtanh = torch.nn.Hardtanh()
t = torch.tensor([-2.0, -0.5, 0.0, 0.5, 2.0])
res = hardtanh(t)
print(res)
Результат выполнения кода:
tensor([-1.0000, -0.5000, 0.0000, 0.5000, 1.0000])
Пример
Давайте изменим диапазон ограничения на значения от 0 до 2:
import torch
hardtanh = torch.nn.Hardtanh(min_val=0.0, max_val=2.0)
t = torch.tensor([-2.0, -0.5, 0.0, 0.5, 2.0, 3.0])
res = hardtanh(t)
print(res)
Результат выполнения кода:
tensor([0.0000, 0.0000, 0.0000, 0.5000, 2.0000, 2.0000])
Пример
Давайте используем режим inplace для изменения исходного тензора:
import torch
hardtanh = torch.nn.Hardtanh(inplace=True)
t = torch.tensor([-3.0, -1.5, 0.0, 1.5, 3.0])
res = hardtanh(t)
print(t)
Результат выполнения кода:
tensor([-1.0000, -1.0000, 0.0000, 1.0000, 1.0000])
Пример
Давайте применим Hardtanh внутри последовательной модели:
import torch
model = torch.nn.Sequential(
torch.nn.Linear(5, 10),
torch.nn.Hardtanh(min_val=-0.5, max_val=0.5),
torch.nn.Linear(10, 1)
)
t = torch.randn(3, 5)
res = model(t)
print(res.shape)
Результат выполнения кода:
torch.Size([3, 1])