深度学习中的 Batch Size、Epoch 与 Iteration 有什么区别
时间:2026-11-12 来源:华清远见
一、三个概念速览对比

二、逐个概念详解
2.1 Batch Size(批次大小)
核心含义:在每次参数更新时,模型一次性"看到"多少条训练样本。
为什么需要 Batch Size?
如果每次只喂 1 个样本(Batch Size = 1,即随机梯度下降 SGD),梯度估计噪声大、训练不稳定,而且 GPU 无法并行利用算力。
如果一次性喂 全部训练数据(Batch Size = 数据集大小,即批量梯度下降 BGD),梯度估计最准,但显存占用极大,且收敛速度慢。
实际中取中间值——一次喂一小批样本(如 32、64、128),既利用了 GPU 并行,又让梯度估计相对稳定,这就是小批量梯度下降(Mini-batch SGD)。
常见取值:32、64、128、256、512。注意:Batch Size 通常取 2 的幂,便于 GPU 显存对齐。
2.2 Iteration(迭代次数 / Step)
核心含义:模型完成一次"前向计算损失 → 反向传播求梯度 → 优化器更新参数"的完整过程,称为一次 Iteration(也叫一步 Step)。
关键关系:一个 Iteration = 处理一个 Batch = 参数更新一次。
也就是说:
训练集有 N 条样本,Batch Size = B,那么一个 Epoch 内包含的 Iteration 数 = ⌈N / B⌉(向上取整)。
如果数据集不能被 Batch Size 整除(比如 1000 条样本,Batch Size = 64),最后一个 batch 会只有 1000 - 64×15 = 40 条样本,仍然算一次 Iteration。
2.3 Epoch(轮次)
核心含义:把训练集中的所有样本都完整地训练一遍,称为一个 Epoch。
为什么要跑多个 Epoch?
神经网络是迭代式学习的,一次遍历数据不足以让模型学到规律。
多跑几个 epoch,模型会反复看到同样的数据,逐步调整权重,降低训练集损失。
但 epoch 太多会导致过拟合——模型把训练数据"背下来"了,泛化能力反而下降。
常见取值:小数据集可能跑 50~200 个 epoch;大数据集(如 ImageNet)通常跑 90~300 个 epoch。实际中通过验证集损失曲线来判断何时停止(Early Stopping)。
三、三者关系与计算公式
用一个公式把三者串起来:

也就是说:
Batch Size 决定了"每一步吃多少";
Iteration 是"吃了多少口";
Epoch 是"把这一整锅饭吃完了几轮"。
四、具体数值示例
假设:
训练集共有 10,000 张图片
Batch Size = 100
训练 5 个 Epoch
计算过程:
1.每个 Epoch 包含的 Iteration 数 = 10,000 &pide; 100 = 100 次 Iteration / Epoch
2.总共训练的 Iteration 数 = 100 × 5 = 500 次 Iteration
3.也就是说:模型参数一共更新了 500 次,把完整数据集看了 5 遍。
如果 Batch Size 改成 50:
每个 Epoch 的 Iteration 数 = 10,000 &pide; 50 = 200 次
5 个 Epoch 总共 = 1000 次 Iteration
同样看了 5 遍数据,但参数更新次数翻倍了——因为每口饭变小了,嚼得更细。
五、Batch Size 对训练的影响

六、Epoch 数量如何选择
没有固定的"最佳 epoch 数",取决于数据量和任务复杂度。常见做法:
1.先设一个较大的 epoch 上限(如 100),同时监控验证集损失。
2.使用 Early Stopping:当验证集损失连续 N 个 epoch(如 10~20 次)不再下降时,自动停止训练。
3.观察损失曲线:训练损失持续下降但验证损失开始上升 → 过拟合,该停了。
经验参考:
小数据集(几千~几万样本):50~200 个 epoch
中等数据集(十万~百万样本):20~50 个 epoch
大数据集(千万级以上):1~10 个 epoch 即可
七、常见误区辨析

八、总结
用一个生活化的比喻来收尾:
训练集 = 一本习题集
Batch Size = 每次做几道题(比如每次做 10 道)
Iteration = 做完这 10 道题后对照答案、订正思路,算一次订正
Epoch = 把整本习题集从头到尾做完一遍
想让学生学得好:每次做题量要适中(Batch Size 合适),反复订正(多 Iteration),把整本习题集多刷几遍(多 Epoch),但不能刷到死记硬背答案(过拟合)。

