通过可视化 Python 示例理解 ReLU

发布: (2026年1月19日 GMT+8 03:23)
5 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本(除代码块和 URL 之外),我将按照要求将其翻译成简体中文并保留原有的格式。

使用 ReLU 激活函数

在之前的文章中,我们使用反向传播并绘制图表来正确预测数值。所有这些示例都采用了 Softplus 激活函数。

现在让我们切换到 ReLU(修正线性单元) 激活函数,它是深度学习和卷积神经网络中最流行的选择之一。

定义

[ \text{ReLU}(x)=\max(0,;x) ]

输出范围是 0 到 ∞

假设的参数值

w1 = 1.70   b1 = -0.85
w2 = 12.6   b2 = 0.00
w3 = -40.8  b3 = -16
w4 = 2.70

我们将使用 剂量值从 0 到 1

Source:

第一步 – 第一次线性变换 ((w_1, b_1)) + ReLU

剂量线性项 (w_1·x + b_1)ReLU 输出
0.0(0·1.70 + (-0.85) = -0.85)0
0.2(0.2·1.70 + (-0.85) = -0.51)0
0.6(0.6·1.70 + (-0.85) = 0.17)0.17
1.0(1·1.70 + (-0.85) = 0.85)0.85

随着剂量的增加,ReLU 输出保持 0,直到线性项变为正值,此后输出沿直线增长——形成一条“弯曲的蓝线”。

示例代码

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1, 100)
w1, b1 = 1.70, -0.85

z1 = w1 * x + b1
relu1 = np.maximum(0, z1)

plt.plot(x, relu1, label="ReLU(w1·x + b1)")
plt.xlabel("Dosage")
plt.ylabel("Activation")
plt.title("ReLU Activation")
plt.legend()
plt.show()

ReLU activation plot

第2步 – 将 ReLU 输出乘以 (w_3 = -40.8)

将弯曲的蓝线乘以 ‑40.8 会使其向下翻转并缩放其幅度。

示例代码

w3 = -40.8
scaled_blue = relu1 * w3

plt.plot(x, scaled_blue, label="ReLU × w3")
plt.xlabel("Dosage")
plt.ylabel("Value")
plt.title("ReLU Output × w3")
plt.legend()
plt.show()

缩放后的蓝线

第 3 步 – 底部节点 ((w_2, b_2))

由于 (b_2 = 0),变换 (w_2·x + b_2) 产生一条直的橙色线。

演示代码

w2, b2 = 12.6, 0.0

z2 = w2 * x + b2

plt.plot(x, z2, color="orange", label="w2·x + b2")
plt.xlabel("Dosage")
plt.ylabel("Value")
plt.title("Bottom Node")
plt.legend()
plt.show()

橙色线

步骤 4 – 将底部节点乘以 (w_4 = 2.70)

示例代码

w4 = 2.70
scaled_orange = z2 * w4

plt.plot(x, scaled_orange, color="orange", label="(w2·x + b2) × w4")
plt.xlabel("Dosage")
plt.ylabel("Value")
plt.title("Scaled Bottom Node")
plt.legend()
plt.show()

缩放的橙色线

Step 5 – Add the Two Paths Together

The sum of the bent blue line and the straight orange line creates a green wedge‑shaped curve.

Demo code

combined = scaled_blue + scaled_orange

plt.plot(x, combined, color="green", label="Combined Signal")
plt.xlabel("Dosage")
plt.ylabel("Value")
plt.title("Combined Signal")
plt.legend()
plt.show()

Combined green curve

第 6 步 – 添加偏置 (b_3 = -16)

最后,我们将合成信号整体向下平移偏置项的数值。

演示代码

b3 = -16
combined_bias = combined + b3

plt.plot(x, combined_bias, color="green", label="Combined + b3")
plt.xlabel("Dosage")
plt.ylabel("Value")
plt.title("Combined Signal + Bias")
plt.legend()
plt.show()

带偏置的最终曲线

摘要

通过将 Softplus 替换为 ReLU 并遵循线性‑变换‑缩放‑相加 步骤,我们得到一个分段线性模型,可以在每个阶段进行可视化。上述代码片段可以直接运行,以重现所有图形。

第 7 步 – 再次应用 ReLU

现在我们在绿色楔形上应用 ReLU。这会将所有负值转换为 0,并保持正值不变。

示例代码

final_output = np.maximum(0, combined_bias)

plt.plot(x, final_output, color="green")
plt.xlabel("Dosage")
plt.ylabel("Activation")
plt.title("Final ReLU Output")
plt.show()

最终 ReLU 输出图

这就是我们的最终结果,我们使用 ReLU 绘制了一条曲线,使其在真实世界情境中更为逼真。

我们将在后续文章中进一步探讨神经网络。

您可以在 Colab notebook 中尝试这些示例。


正在寻找更简便的工具、库或整个仓库的安装方式?

试试 Installerpedia —— 一个社区驱动、结构化的安装平台,让您以最小的麻烦和清晰、可靠的指导安装几乎任何东西。

ipm install repo-name

Installerpedia 截图

🔗 在此探索 Installerpedia: https://hexmos.com/freedevtools/installerpedia/

Back to Blog

相关文章

阅读更多 »

使用线性回归预测员工薪资

使用线性回归的薪资预测 !Njeri Muriithi https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2F...