趋近智
Sigmoid、Tanh、ReLU 及其变体等多种激活函数在 Python 中实现,并对其行为进行可视化。绘制这些函数有助于理解它们的输出范围、饱和点和非线性等特性,这些在设计神经网络层时是重要的考量。
我们将使用 NumPy 进行数学计算,并使用 Plotly 创建交互式可视化。
首先,我们导入必要的库:
import numpy as np
现在,我们根据它们的数学公式定义激活函数:
# Sigmoid 函数
def sigmoid(x):
"""计算 Sigmoid 激活值。"""
return 1 / (1 + np.exp(-x))
# 双曲正切 (Tanh) 函数
def tanh(x):
"""计算 Tanh 激活值。"""
return np.tanh(x)
# 整流线性单元 (ReLU) 函数
def relu(x):
"""计算 ReLU 激活值。"""
return np.maximum(0, x)
# 泄漏整流线性单元 (Leaky ReLU) 函数
def leaky_relu(x, alpha=0.01):
"""计算 Leaky ReLU 激活值。"""
return np.maximum(alpha * x, x)
接下来,我们将生成一系列输入值,这些值通常以零为中心,以便观察函数在不同输入下的表现。
# 生成从 -5 到 5 的输入值
x = np.linspace(-5, 5, 100)
# 计算每个激活函数的输出
y_sigmoid = sigmoid(x)
y_tanh = tanh(x)
y_relu = relu(x)
y_leaky_relu = leaky_relu(x)
在计算出每个函数的输入值和对应的输出后,我们现在可以绘制它们。这种可视化方法能够直接比较它们的形状和特点。
Sigmoid、Tanh、ReLU 和 Leaky ReLU 激活函数的比较。注意它们不同的输出范围:Sigmoid(0 到 1),Tanh(-1 到 1),ReLU(0 到 无穷大),以及 Leaky ReLU(负无穷大到正无穷大,对负输入具有小斜率)。
观察这个图,我们可以清楚地看到前面讨论的特点:
这种实际实现有助于将激活函数的数学定义与其实际行为联系起来。理解这些差异是决定在神经网络的隐藏层和输出层中使用哪种激活函数的基础,这取决于具体的任务(例如,二分类任务通常在输出层使用 Sigmoid,多分类任务使用 Softmax,回归任务使用线性函数,而隐藏层常使用 ReLU 或其变体)。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造