PyTorch torch.nn.Sigmoid 函数
torch.nn.Sigmoid 是 PyTorch 中的 S 型激活函数。
它将输入值映射到 0 到 1 之间,常用于二分类或作为门的控制信号。
函数定义
torch.nn.Sigmoid()
数学原理
Sigmoid(x) = 1 / (1 + e^(-x))
使用示例
示例 1: 基本用法
实例
import torch
import torch.nn as nn
sigmoid = nn.Sigmoid()
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
output = sigmoid(x)
print("输入:", x.tolist())
print("输出:", output.tolist())
import torch.nn as nn
sigmoid = nn.Sigmoid()
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
output = sigmoid(x)
print("输入:", x.tolist())
print("输出:", output.tolist())
示例 2: 二分类输出
实例
import torch
import torch.nn as nn
model = nn.Linear(10, 1)
sigmoid = nn.Sigmoid()
logits = model(torch.randn(4, 10))
probabilities = sigmoid(logits)
print("Logits:", logits.squeeze().tolist())
print("概率:", probabilities.squeeze().tolist())
print("预测:", (probabilities > 0.5).squeeze().tolist())
import torch.nn as nn
model = nn.Linear(10, 1)
sigmoid = nn.Sigmoid()
logits = model(torch.randn(4, 10))
probabilities = sigmoid(logits)
print("Logits:", logits.squeeze().tolist())
print("概率:", probabilities.squeeze().tolist())
print("预测:", (probabilities > 0.5).squeeze().tolist())
示例 3: nn.functional 版本
实例
import torch
import torch.nn.functional as F
x = torch.randn(4, 10)
output = torch.sigmoid(x)
output2 = F.sigmoid(x)
print("形状:", output.shape)
print("两种方法结果相同:", torch.allclose(output, output2))
import torch.nn.functional as F
x = torch.randn(4, 10)
output = torch.sigmoid(x)
output2 = F.sigmoid(x)
print("形状:", output.shape)
print("两种方法结果相同:", torch.allclose(output, output2))
使用场景
- 二分类: 输出概率
- 门控机制: 控制信息流
- 概率输出: 需要 0-1 范围的场景
注意:训练深度网络时,ReLU 效果更好,Sigmoid 容易导致梯度消失。

PyTorch torch.nn 参考手册