| 第136行: |
第136行: |
| | |多用于自然语言处理,结构更复杂 | | |多用于自然语言处理,结构更复杂 |
| | |} | | |} |
| | + | |
| | + | == 算法实现 == |
| | + | |
| | + | === 基本模型实现 === |
| | + | 这是一个两层的前馈神经网络结构,重点在于'''结构理解'''与'''前向传播的流程'''<syntaxhighlight lang="python3"> |
| | + | import numpy as np |
| | + | |
| | + | # 激活函数 |
| | + | def relu(x): |
| | + | return np.maximum(0, x) |
| | + | |
| | + | # 定义输入向量(2维),权重矩阵和偏置 |
| | + | X = np.array([[0.5, 0.3]]) # 1个样本,2个特征 |
| | + | |
| | + | # 网络结构:2输入 -> 3隐藏 -> 1输出 |
| | + | W1 = np.array([[0.1, 0.4, 0.6], |
| | + | [0.3, 0.2, 0.5]]) # shape (2, 3) |
| | + | b1 = np.array([[0.1, 0.1, 0.1]]) # shape (1, 3) |
| | + | |
| | + | W2 = np.array([[0.7], |
| | + | [0.2], |
| | + | [0.9]]) # shape (3, 1) |
| | + | b2 = np.array([[0.05]]) # shape (1, 1) |
| | + | |
| | + | # 前向传播 |
| | + | Z1 = np.dot(X, W1) + b1 # 输入 -> 隐藏层 |
| | + | A1 = relu(Z1) # ReLU激活 |
| | + | Z2 = np.dot(A1, W2) + b2 # 隐藏层 -> 输出层 |
| | + | |
| | + | print("输出结果:", Z2) |
| | + | |
| | + | </syntaxhighlight>这个模型没有训练过程,仅说明了'''输入如何通过网络进行转换'''。 |
| | + | |
| | + | 即为(2输入) → (3隐藏) → (1输出) |
| | | | |
| | == 历史 == | | == 历史 == |