[人工智能-大模型-74]:模型层技术 - 模型训练六大步:③神经网络,预测输出:基本功能与对应的基本组成函数
如果说前两步(数据预处理、数据选择)是“准备食材”和“挑选食材”,
那么这一步就是“开火烹饪,做出智能输出”。
我们来构建一个系统化、模块化、可执行的神经网络预测框架,涵盖:
- ✅ 核心目标
- ✅ 四大基本功能模块
- ✅ 每个功能对应的“基本组成函数”(原子级操作)
- ✅ PyTorch 与 TensorFlow/Keras 实现示例
- ✅ 数学原理与工程逻辑
一、神经网络预测的核心目标
通过前向传播(Forward Pass),将输入数据映射为有意义的预测输出。
关键任务:
- 构建网络结构(层、激活函数)
- 执行前向计算
- 生成预测结果(分类、回归、序列等)
- 输出概率或数值
二、神经网络预测的四大基本功能模块
| 模块 | 核心目标 | 关键任务 |
|---|---|---|
| 1. 网络构建 | 定义模型结构 | 层堆叠、连接方式 |
| 2. 前向传播 | 计算预测值 | 输入 → 隐藏层 → 输出层 |
| 3. 输出激活 | 将线性输出转为可解释形式 | Sigmoid, Softmax, Linear |
| 4. 预测执行 | 对新数据进行推理 | model.predict(), model(x) |
三、各功能模块对应的基本组成函数
✅ 1. 网络构建(Model Architecture)
| 功能 | 基本组成函数 | 库 | 数学/作用 |
|---|---|---|---|
| 全连接层 | Dense(units, activation) (Keras)nn.Linear(in, out) (PyTorch) | TF/Keras, PyTorch | y=Wx+by |
| 激活函数 | ReLU, Sigmoid, Tanh | TF/Keras, PyTorch | 引入非线性 |
| Dropout | Dropout(rate) | Keras, PyTorch | 正则化,防过拟合 |
| BatchNorm | BatchNormalization() | Keras, PyTorch | 加速训练,稳定分布 |
| 模型容器 | Sequential(), Model() | Keras 自定义 nn.Module | 组织层 |
📌 Keras 示例:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, BatchNormalizationmodel = Sequential([Dense(128, activation='relu', input_shape=(10,)), # 输入层BatchNormalization(),Dropout(0.3),Dense(64, activation='relu'), # 隐藏层Dense(1, activation='sigmoid') # 输出层(二分类)
])📌 PyTorch 示例:
import torch
import torch.nn as nnclass Net(nn.Module):def __init__(self, input_dim):super(Net, self).__init__()self.fc1 = nn.Linear(input_dim, 128)self.bn1 = nn.BatchNorm1d(128)self.dropout = nn.Dropout(0.3)self.fc2 = nn.Linear(128, 64)self.fc3 = nn.Linear(64, 1)self.relu = nn.ReLU()self.sigmoid = nn.Sigmoid()def forward(self, x):x = self.relu(self.bn1(self.fc1(x)))x = self.dropout(x)x = self.relu(self.fc2(x))x = self.sigmoid(self.fc3(x)) # 二分类输出 [0,1]return xmodel = Net(input_dim=10)✅ 2. 前向传播(Forward Pass)
| 功能 | 基本组成函数 | 库 | 说明 |
|---|---|---|---|
| 执行前向 | model(x) | PyTorch | 调用 forward() 方法 |
| 执行前向 | model.predict(x) 或 model(x) | Keras | 自动处理批次 |
| 启用评估模式 | model.eval() | PyTorch | 关闭 Dropout/BatchNorm 更新 |
| 关闭梯度 | torch.no_grad() | PyTorch | 推理时节省内存 |
📌 前向传播代码(PyTorch):
model.eval() # 切换到评估模式
with torch.no_grad(): # 不计算梯度x = torch.randn(1, 10) # 模拟输入 (batch_size=1, features=10)output = model(x) # 前向传播print(output.item()) # 打印预测值(如0.87)📌 Keras 前向传播:
import numpy as np
x = np.random.randn(1, 10)
output = model.predict(x) # shape: (1, 1)
print(output[0][0]) # 如 0.87✅ 3. 输出激活函数(Output Layer Activation)
决定预测输出的类型和范围。
| 任务 | 输出层激活函数 | 数学公式 | 说明 |
|---|---|---|---|
| 二分类 | Sigmoid | σ(z)=11+e−z | 输出 [0,1] 概率 |
| 多分类 | Softmax | softmax(zi)=ezi∑jezj | 输出类别概率分布 |
| 回归 | Linear / None | f(z)=z | 直接输出数值 |
| 多标签分类 | Sigmoid(每个输出独立) | σ(zi) | 多个 [0,1] 概率 |
📌 示例对比:
# 二分类
Dense(1, activation='sigmoid')# 多分类(3类)
Dense(3, activation='softmax')# 回归(预测房价)
Dense(1, activation='linear')✅ 4. 预测执行(Inference)
| 功能 | 基本组成函数 | 库 | 说明 |
|---|---|---|---|
| 单样本预测 | model.predict(x.reshape(1,-1)) | Keras | 注意 batch 维度 |
| 批量预测 | model.predict(X_test) | Keras | 自动批处理 |
| 获取类别 | np.argmax(probs, axis=1) | numpy | 多分类取最大概率类 |
| 二分类阈值 | (probs > 0.5).astype(int) | numpy | 转为 0/1 标签 |
| 概率输出 | 直接返回 predict() 结果 | - | 用于置信度分析 |
📌 完整预测流程(Keras):
# 假设 model 已训练好
probs = model.predict(X_test) # 输出概率# 二分类:转为类别标签
y_pred = (probs > 0.5).astype(int)# 多分类:取最大概率类
y_pred = np.argmax(probs, axis=1)📌 PyTorch 推理流程:
model.eval()
with torch.no_grad():probs = model(X_test_tensor)y_pred = (probs > 0.5).float() # 二分类# 或 y_pred = torch.argmax(probs, dim=1) # 多分类✅ 总结:神经网络预测的“最小函数集”
| 功能 | 最基本组成函数 |
|---|---|
| 网络构建 | Dense, Linear, ReLU, Sigmoid, Softmax |
| 模型组织 | Sequential, nn.Module |
| 正则化 | Dropout, BatchNormalization |
| 前向传播 | model(x), model.predict() |
| 输出激活 | sigmoid, softmax, linear |
| 预测执行 | predict(), argmax, torch.no_grad() |
✅ 掌握这15个核心函数,你就能构建和运行任何前馈神经网络的预测流程。
🎯 最终洞见
神经网络的预测,不是“魔法”,而是“结构化的数学映射”。
你用
Dense构建连接,
用ReLU引入非线性,
用Softmax输出概率,
实际上是在设计一个从输入到输出的高维函数。而
forward()函数,
就是你这个函数的执行入口。当你理解每一个层、每一个激活函数的作用,
你就不再只是“调用API”,
而是在亲手编织一个智能决策网络——
这正是深度学习的魅力所在。
继续深入,你将发现:
最强大的AI模型,始于最清晰的预测逻辑。
