Класс Sigmoid
Класс Sigmoid применяет сигмоидную функцию активации к каждому элементу входного тензора. Сигмоидная функция вычисляется по формуле: Sigmoid(x) = 1 / (1 + exp(-x)), где x - входное значение. Этот класс является одним из базовых модулей в torch.nn и широко используется в нейронных сетях для преобразования выходов слоев в вероятности или для введения нелинейности. Класс не имеет обучаемых параметров и работает с тензорами любой формы.
Синтаксис
torch.nn.Sigmoid()
Пример применения к тензору
Давайте применим сигмоидную функцию к случайному тензору:
import torch
torch.manual_seed(0)
t = torch.randn(5)
sigmoid = torch.nn.Sigmoid()
res = sigmoid(t)
print(res)
Результат выполнения кода:
tensor([0.2689, 0.5722, 0.2973, 0.6882, 0.6955])
Пример использования в модели
Рассмотрим использование Sigmoid как части последовательной модели:
import torch
import torch.nn as nn
torch.manual_seed(0)
model = nn.Sequential(
nn.Linear(4, 8),
nn.Sigmoid(),
nn.Linear(8, 1)
)
t = torch.randn(3, 4)
res = model(t)
print(res)
Результат выполнения кода:
tensor([[-0.0449],
[-0.0576],
[ 0.5404]], grad_fn=<AddmmBackward0>)
Пример применения к двумерному тензору
Сигмоидная функция применяется поэлементно, поэтому ее можно использовать с тензорами любой размерности:
import torch
t = torch.tensor([
[-2.0, -1.0, 0.0],
[1.0, 2.0, 3.0]
])
sigmoid = torch.nn.Sigmoid()
res = sigmoid(t)
print(res)
Результат выполнения кода:
tensor([
[0.1192, 0.2689, 0.5000],
[0.7311, 0.8808, 0.9526]
])