共计 904 个字符,预计需要花费 3 分钟才能阅读完成。
神经网络基础回顾
前馈神经网络是最基础的神经网络结构,由输入层、隐含层和输出层组成。数据从输入层流向输出层,中间不循环。今天我们以最简单的单隐含层网络为例,输入层有 2 个节点,隐含层 1 个节点,输出层 1 个节点。
![前馈神经网络权重计算实战:从输入 x =[2,3]到隐含层输出的完整推导与实现 前馈神经网络权重计算实战:从输入 x =[2,3]到隐含层输出的完整推导与实现](https://www.qqiyuan.cn/wp-content/uploads/2026/06/5_security_layer-2.webp)
- 输入层:接收原始数据,这里假设输入 x =[2,3]
- 隐含层:对输入进行加权求和并通过激活函数转换
- 输出层:对隐含层输出再做一次加权求和
数学推导与分步计算
给定输入 x =[2,3],权重 w1=[0,1](输入层到隐含层),w2=[1,0](隐含层到输出层)。计算过程如下:
-
隐含层加权求和
$$ z = x \cdot w1^T = 20 + 31 = 3 $$ -
通过激活函数(假设使用 sigmoid)
$$ a = \sigma(z) = \frac{1}{1+e^{-3}} \approx 0.9526 $$ -
输出层计算
$$ y = a \cdot w2 = 0.95261 + 00 = 0.9526 $$
Python 代码实现
import numpy as np
# 定义输入和权重
x = np.array([2, 3])
w1 = np.array([[0, 1]]) # 注意权重矩阵形状
w2 = np.array([[1], [0]])
# 隐含层计算
z = np.dot(x, w1.T) # 3
a = 1 / (1 + np.exp(-z)) # 0.9526
# 输出层计算
y = np.dot(a, w2.T) # [[0.9526]]
print(f"隐含层输出: {a[0]:.4f}")
print(f"最终输出: {y[0][0]:.4f}")
常见错误分析
初学者经常遇到以下问题:
- 维度不匹配:比如 w1 写成 [0,1] 而不是[[0,1]],会导致 np.dot 报错
- 忘记转置:输入 x 和权重 w1 的点积需要 w1 转置
- 激活函数选择:某些情况下使用 ReLU 会导致输出为 0
激活函数比较
- Sigmoid 函数
- 输出范围(0,1)
- 容易出现梯度消失
-
本例中输出 0.9526
-
ReLU 函数
- 计算简单:max(0,z)
- 本例中输出 3(如果用 ReLU)
总结与思考题
通过这个简单例子,我们完整走通了神经网络的前向传播过程。关键是要注意矩阵维度和激活函数的选择。
思考题:如果输入是批量数据 X =[[2,3],[1,4]],如何修改网络结构?提示:可以利用 numpy 的广播机制,保持权重矩阵形状不变。
正文完
发表至: 未分类
近一天内
