PyTorch torch.nn.Sigmoid 関数
torch.nn.SigmoidPyTorch における 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("2 つの方法の結果は同じ:", 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("2 つの方法の結果は同じ:", torch.allclose(output, output2))
使用シーン
- 二値分類: 確率を出力
- ゲート機構: 情報フローを制御
- 確率出力: 0-1 の範囲が必要なシーン
注意: 深層ネットワークをトレーニングする場合、ReLU の方が効果が良く、Sigmoid は勾配消失を引き起こしやすいです。
その他の拡張
PyTorch torch.nn リファレンスマニュアル