PyTorch torch.nn.ELU 関数

PyTorch torch.nn 参考手册PyTorch torch.nn リファレンスマニュアル


torch.nn.ELUPyTorchにおける指数線形ユニット活性化関数です。

負の値に対して指数関数を使用し、負の値にも非ゼロの出力を許容するため、勾配がより滑らかになります。

関数定義

torch.nn.ELU(alpha=1.0, inplace=False)

公式

ELU(x) = x, x > 0
ELU(x) = alpha * (e^x - 1), x <= 0

使用例

例1: 基本的な使い方

実例

import torch
import torch.nn as nn

elu = nn.ELU(alpha=1.0)

x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
output = elu(x)

print("入力:", x.tolist())
print("出力:", output.tolist())

例2: ReLUとの比較

実例

import torch
import torch.nn as nn
import numpy as np

x = np.array([-3.0, -2.0, -1.0, 0.0, 1.0, 2.0])
x_t = torch.tensor(x)

print("x        ELU       ReLU")
for i in range(0, 6, 1):
    print(f"{x[i]:6.1f} {nn.ELU()(x_t[i:i+1]).item():9.4f} {nn.ReLU()(x_t[i:i+1]).item():9.4f}")

例3: alphaパラメータ

実例

import torch
import torch.nn as nn

# 異なる alpha 値
x = torch.tensor([-1.0])

for alpha in [0.5, 1.0, 1.5, 2.0]:
    out = nn.ELU(alpha=alpha)(x)
    print(f"alpha={alpha}: {out.item():.4f}")

使用シーン

  • オートエンコーダー
  • 負の値の出力が必要な場合
  • 勾配の平滑化

ヒント: ELUはReLUより計算が遅いですが、収束が速くなります。


PyTorch torch.nn 参考手册PyTorch torch.nn リファレンスマニュアル

その他の拡張