归纳理解epoch、batch、batch size、step、iteration深度学习名词

名词理解

Epoch

在深度学习中,一个epoch表示模型完整遍历整个训练数据集一次。假设数据集有1000个样本,模型在训练过程中将这1000个样本全部学习一遍即为一个epoch。通常需要多个epoch才能使模型收敛。

Batch

Batch是训练过程中一次输入模型的一组样本。例如,若batch size为32,则每个batch包含32个样本。使用batch的目的是为了高效利用计算资源(如GPU的并行能力),同时避免一次性加载全部数据导致内存不足。

Batch Size

Batch size指每个batch中包含的样本数量。较大的batch size可以加快训练速度,但可能占用更多内存;较小的batch size可能增加训练时间,但有助于模型跳出局部最优。常见选择范围在16到512之间,具体取决于硬件条件和任务需求。

Step

Step(或称为training step)指模型完成一个batch的前向传播和反向传播的过程。例如,若数据集有1000个样本,batch size为100,则一个epoch需要10个steps。Step是模型参数更新的基本单位。

Iteration

Iteration通常与step同义,指模型完成一次参数更新的过程。在部分文献中,iteration可能指代一个epoch内的所有steps,需根据上下文区分。例如,"训练1000 iterations"可能指完成1000个batch的更新。

数学关系

假设:

  • 总样本数 = 1000

  • Batch Size = 32

    总样本数 = 1000
    batch_size = 32

    一个Epoch需要的迭代次数

    iterations_per_epoch = ceil(总样本数 / batch_size) # ceil(1000/32) = 32次

    10个Epoch的总迭代次数

    total_iterations = 10 * iterations_per_epoch # 10 * 32 = 320次

python示例代码

python 复制代码
# 示例数据集
dataset = list(range(1000))  # 1000个样本
batch_size = 32
epochs = 10

# 训练循环
for epoch in range(epochs):  # 外层循环:epoch
    print(f"Epoch {epoch + 1}/{epochs}")
    
    # 每次迭代处理一个batch
    for i in range(0, len(dataset), batch_size):  # 内层循环:iteration
        batch = dataset[i:i + batch_size]  # 当前batch的样本
        batch_size_actual = len(batch)      # 实际batch size(最后一个batch可能较小)
        
        # 模型前向传播、计算损失、反向传播
        # ... 训练代码 ...
        
        print(f"  Iteration {i//batch_size + 1}: 处理了{batch_size_actual}个样本")
    
    print(f"Epoch {epoch + 1} 完成,已看完所有1000个样本")

不同概念对训练的影响

参数 影响 常见取值范围
Batch Size - 越大,训练越稳定,但显存占用越大 - 越小,梯度噪声越大,但泛化能力可能更好 16, 32, 64, 128, 256
Epoch - 越多,模型拟合越好,但可能过拟合 10, 50, 100, 200
Iteration - 由batch size和总样本数决定,不是超参数 取决于数据量

常见混淆点澄清

1.Batch Size vs Global Batch Size

python 复制代码
# 单卡训练
batch_size = 32  # 就是32

# 多卡分布式训练
per_gpu_batch = 32        # 每张卡处理32个
global_batch = 32 * 4 = 128  # 所有卡总共处理128个

2.Iteration vs Step

  • 在深度学习中,iterationstep 通常指同一个概念

  • 一个step/iteration = 一次前向+反向传播

3.为什么最后一个batch可能较小

python 复制代码
# 1000个样本,batch_size=32
1000 / 32 = 31.25
# 前31个batch: 每批32个 (32*31=992)
# 最后一个batch: 只有8个样本 (1000-992=8)

一句话记忆

  • Batch Size = 每口吃多少

  • Iteration = 吃一口

  • Epoch = 吃完一整份

相关推荐
人间寥寥情难诉8 分钟前
LRU算法本地实现
java·算法·spring
moonsea020310 分钟前
2026.4.2
开发语言·c++·算法
财经资讯数据_灵砚智能12 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月5日
大数据·人工智能·python·信息可视化·自然语言处理·ai编程
cpp_250117 分钟前
P10376 [GESP202403 六级] 游戏
c++·算法·动态规划·题解·洛谷·gesp六级
智者知已应修善业19 分钟前
【51单片机4个IO实现16按键可扩展独立按键64矩阵驱动显示矩阵原值】2023-5-8
c++·经验分享·笔记·算法·51单片机
hui-梦苑19 分钟前
[GROMACS]模拟数据分析前轨迹文件生成-轨迹预处理
人工智能·算法·数据分析
龙文浩_19 分钟前
AI深度学习/PyTorch/神经网络相关
人工智能·pytorch·深度学习
飞翔的SA21 分钟前
MLX‑VLM :Mac本地跑通多模态大模型的开源项目!让图片、音频、视频理解一键上手
人工智能·python·macos·音视频
蒸汽求职22 分钟前
低延迟系统优化:针对金融 IT 与高频交易,如何从 CPU 缓存行(Cache Line)对齐展现硬核工程底蕴?
sql·算法·缓存·面试·职场和发展·金融·架构
王忘杰24 分钟前
Claude Code 通过 CC Switch 使用OpenRoute免费模型和国产大模型 qwen/qwen3.6-plus:free
人工智能