🧠 神经网络训练流程基础笔记
1. 数据集(Dataset)
- 数据集包含了 样本 (sample) 和 标签 (label)
- 在你的场景里:
- 样本 = 一个时间步的图(节点特征矩阵 + 邻接矩阵)
- 标签 = 每个节点是否掉线(0/1)
2. Batch(批量)
- Batch = 一次训练用到的一小部分样本
batch_size
表示 每次梯度更新时用多少个样本- 例如:
- 数据集有 1000 个样本
batch_size=8
→ 每次训练只拿 8 个样本来算梯度- 这样能减少显存占用,也让模型更新更频繁
3. Epoch(轮次)
- Epoch = 把整个数据集完整训练一遍
- 如果:
- 数据集有 1000 个样本
batch_size=8
- 那么 1 个 epoch 需要 1000 / 8 = 125 次迭代,才能用完所有样本
- 训练 20 个 epoch,就相当于把数据重复“看”了 20 遍
4. 训练循环流程
一次完整训练过程一般是这样:
- 初始化模型参数(随机权重)
- 重复若干 epoch
- 打乱训练数据
- 按
batch_size
切成小批次 - 对每个 batch:
- 前向传播 (forward)
- 把输入样本丢进模型
- 得到预测结果
- 计算损失 (loss)
- 预测 vs 真实标签 的差距
- 反向传播 (backward)
- 自动求导,算出梯度
- 参数更新 (step)
- 用优化器(SGD/Adam)更新参数,让模型预测更接近标签
- 前向传播 (forward)
- 最终得到训练好的模型
5. 为什么要用 batch?
- 全量训练 (batch_size=1000)
- 优点:精确
- 缺点:显存占用大,更新慢
- 小批量训练 (batch_size=8~32)
- 优点:节省显存,更新更频繁,收敛快
- 缺点:梯度有点“噪声”(但通常能帮助模型泛化) 👉 所以主流方法是 小批量训练 + 多个 epoch。
6. 直观理解
把训练比作 学生背单词:
- 样本 = 单词
- batch_size = 一次背多少个单词(8 个单词一组,还是 50 个单词一组)
- epoch = 把词表完整过一遍(1000 个单词都背一遍)
- 多个 epoch = 重复背很多遍(记得更牢)
7. 在你现在的任务中
- 数据:1000 时间步
batch_size=8
→ 一次训练 8 个时间步的图epochs=20
→ 每个时间步都要用到,整个过程重复 20 遍- 总共更新参数的次数 =
1000/8 * 20 = 2500 次
📌 一句话总结: 训练神经网络 = 前向传播(算预测) + 损失函数(算误差) + 反向传播(算梯度) + 参数更新(优化器) 重复这个过程,按 batch 分批喂数据,按 epoch 控制重复多少轮。