当前位置: 首页 > news >正文

在深度学习中,batch、epoch 和 iteration 的关系

用一个实际例子和简单代码来清晰解释 batch、epoch 和 iteration 的关系:

------------------------------------------------------------------------------------

假设场景

  • 你有一个数据集:1000 张猫狗图片

  • 你设置 batch_size = 100(每次处理 100 张图片)

  • 你计划训练 5 个 epoch

概念关系图解

1个Epoch = 完整遍历整个数据集1次 │ ├──Iteration 1: 处理第1-100张图片 (batch 1) ├──Iteration 2: 处理第101-200张图片 (batch 2) ├──...└──Iteration 10: 处理第901-1000张图片 (batch 10)

具体计算

  • 总样本数:1000 张图片

  • Batch size:100(每次处理的图片数)

  • Iterations per epoch= 总样本数 / batch_size = 1000 / 100 = 10 次

  • Total iterations= Iterations per epoch × Epochs = 10 × 5 = 50 次

代码示例说明

import torch
from torch.utils.data import DataLoader, TensorDataset

# 创建模拟数据集:1000张图片(用1000个数字代替)
data = torch.arange(0, 1000) # [0, 1, 2, ..., 999]
dataset = TensorDataset(data)

# 创建数据加载器:设置batch_size=100
dataloader = DataLoader(dataset,batch_size=100, shuffle=True)

# 训练5个epoch
forepochin range(5):
print(f"\n=== 开始第 {epoch+1} 个epoch ===")

# 每个epoch内遍历所有batch
for batch_idx, batch_data in enumerate(dataloader):
# 获取当前batch的数据
images = batch_data[0]# 当前batch的100张"图片"

# 这里应该是你的训练代码:
# 1. 正向传播
# 2. 计算损失
# 3. 反向传播
# 4. 更新权重


# 打印当前iteration信息
print(f"Epoch {epoch+1} | Iteration {batch_idx+1} | 处理图片: {images[0].item()}到{images[-1].item()}")

print("\n训练完成!")
print(f"总Iteration次数: {5 * len(dataloader)} 次")

import torch from torch.utils.data import DataLoader, TensorDataset # 创建模拟数据集:1000张图片(用1000个数字代替) data = torch.arange(0, 1000) # [0, 1, 2, ..., 999] dataset = TensorDataset(data) # 创建数据加载器:设置batch_size=100 dataloader = DataLoader(dataset, batch_size=100, shuffle=True) # 训练5个epoch for epoch in range(5): print(f"\n=== 开始第 {epoch+1} 个epoch ===") # 每个epoch内遍历所有batch for batch_idx, batch_data in enumerate(dataloader): # 获取当前batch的数据 images = batch_data[0] # 当前batch的100张"图片" # 这里应该是你的训练代码: # 1. 正向传播 # 2. 计算损失 # 3. 反向传播 # 4. 更新权重 # 打印当前iteration信息 print(f"Epoch {epoch+1} | Iteration {batch_idx+1} | 处理图片: {images[0].item()}到{images[-1].item()}") print("\n训练完成!") print(f"总Iteration次数: {5 * len(dataloader)} 次")

输出示例

=== 开始第 1 个epoch === Epoch 1 | Iteration 1 | 处理图片: 12到980 Epoch 1 | Iteration 2 | 处理图片: 88到799 ... Epoch 1 | Iteration 10 | 处理图片: 36到995 === 开始第 2 个epoch === Epoch 2 | Iteration 1 | 处理图片: 44到932 ... (共5个epoch,每个epoch 10个iteration) 训练完成! 总Iteration次数: 50 次

关键概念解析

  1. Batch(批)

    • 每次实际输入模型的数据子集

    • 代码中的images = batch_data[0]获取的就是一个batch

    • 大小由batch_size=100决定

  2. Iteration(迭代)

    • 完成一个batch训练所需的步骤

    • 每个iteration包含:

      • 从dataloader取出一个batch数据

      • 执行正向传播 → 计算损失 → 反向传播 → 更新权重

    • 代码中for batch_idx, ...循环的每次执行就是一个iteration

  3. Epoch(轮次)

    • 完整遍历整个数据集一次

    • 每个epoch包含多个iteration:

      • 1000样本 ÷ 100 batch_size = 10 iterations/epoch

    • 外层循环for epoch in range(5)控制epoch数量

为什么需要batch?

  1. 内存限制:无法一次性加载所有数据(如100万张图片)

  2. 训练效率:小批量数据更适合GPU并行计算

  3. 梯度稳定性批量梯度下降比单个样本更稳定

  4. 正则化效果:小批量带来轻微噪声,有助于防止过拟合

实际训练中的选择

Batch Size迭代次数内存占用训练稳定性
小 (8-32)较低
中 (64-256)中等中等较好
大 (512+)

初学者建议从 batch_size=64 开始尝试,这是常用基准值。8也是合理的,尤其当使用大模型或显存有限时

http://www.jsqmd.com/news/619770/

相关文章:

  • QTableWidget 表格组件窗
  • P12264 『STA - R9』咏叹调调律
  • 手把手教你用ZYNQ+AD9361搭建SDR开发环境:从SPI配置到LVDS接口的避坑全记录
  • 三分钟掌握Bifrost:免费下载三星官方固件的终极解决方案
  • C#与C++进程高效对话:手把手教你用共享内存+互斥锁构建跨语言通信桥梁
  • 动态标签分配策略:OTA, SimOTA, Task-Aligned Assigner
  • OpenClaw安全实践:Qwen3-14B私有镜像+本地化执行边界管控
  • 附录S-1 客户服务计划
  • 破解付费墙限制:6款高效内容解锁工具完全指南
  • 2025届必备的六大AI辅助写作神器推荐榜单
  • x64dbg调试器完全指南:5步掌握Windows逆向工程核心技术 [特殊字符]
  • device-year-class性能优化技巧:避免重复计算与内存管理最佳实践
  • 附录S-2 客户服务报告
  • 在YOLOv11中实现Task-Aligned Assigner标签分配
  • 还在为PPT文件太大烦恼?告别PPT文件大难题!5个压缩方法让办公更高效
  • Seurat常见问题解决清单:从安装错误到分析失败
  • 遥感目标检测数据预处理避坑:AIR-SARShip-1.0数据集裁剪中的重叠率、零像素与标注同步难题
  • 深入RKISP2.x Tuner:手把手教你解读ISP校准菜单与光源/模块选择
  • Rust开发环境管理进阶:如何通过RUSTUP_HOME和CARGO_HOME实现多版本隔离与便携安装
  • 电子文档转PDF还在求人?4个方法电子文档秒转PDF,自己就能操作
  • 附录S-3 产品维护计划
  • 视频抠像革命:如何用MatAnyone在5分钟内获得专业级绿幕效果
  • 用AutoGPTQ量化LLaMA模型实战:从vllm环境配置到性能对比测试
  • 阿里开源大模型Qwen2.5-7B实测:离线推理+结构化输出,提升数据处理效率
  • CSS如何实现固定头部导航栏_利用position sticky吸顶效果
  • SM-04-产品维护报告
  • 从模型漂移到代码腐化,AI项目失控的11个隐性信号,及对应6级度量拦截机制
  • 【AI原生研发项目管理黄金法则】:20年实战验证的7大反脆弱管控模型(含Gantt-AI双轨协同模板)
  • 终极指南:如何免费解锁Cursor AI的完整Pro功能限制
  • LingBot-Depth惊艳效果:半透明材质(雨伞/纱帘)深度穿透与衰减建模