训练神经网络

zy123
2025-08-31 /  0 评论 /  0 点赞 /  3 阅读 /  932 字
最近更新于 08-31

🧠 神经网络训练流程基础笔记

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. 训练循环流程

一次完整训练过程一般是这样:

  1. 初始化模型参数(随机权重)
  2. 重复若干 epoch
    • 打乱训练数据
    • batch_size 切成小批次
    • 对每个 batch:
      1. 前向传播 (forward)
        • 把输入样本丢进模型
        • 得到预测结果
      2. 计算损失 (loss)
        • 预测 vs 真实标签 的差距
      3. 反向传播 (backward)
        • 自动求导,算出梯度
      4. 参数更新 (step)
        • 用优化器(SGD/Adam)更新参数,让模型预测更接近标签
  3. 最终得到训练好的模型

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 控制重复多少轮。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
取消