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

深度学习中的epoch, batch 和 iteration

名词定义
epoch使用训练集的全部数据进行一次完整的训练,称为“一代训练”
batch使用训练集中的一小部分样本对模型权重进行一次反向传播的参数更新,这样的一部分样本称为:“一批数据”
iteration使用一个batch的数据对模型进行一次参数更新的过程,称为“一次训练”

epoch:所有的训练样本都在神经网络中进行了一次正向传播和一次反向传播。然而,当一个epoch的样本数量可能过于庞大,就需要把它分成多个小块,也就是分成多个batch来进行训练。

batch(批,一批样本):将训练样本分成若干个batch

batch_size(批大小):每批样本的大小
iteration(一次迭代):训练一个Batch就是一次Iteration

换算关系:
N u m b e r o f B a t c h e s = T r a i n i n g S e t S i z e B a t c h S i z e Number of Batches = \dfrac{Training Set Size}{Batch Size} NumberofBatches=BatchSizeTrainingSetSize

实际上,梯度下降的几种方式的根本区别就在于上面公式中的Bathch_Size 不同,

梯度下降方式训练集大小batch_sizenumber of batchs
BGD(批量梯度下降)NN1
SGD(随机梯度下降)N1N
MBGD(小批量梯度下降)NBN/B+1

举个例子:

mnist 数据集有60000张图片作为训练数据,10000张图片作为测试数据。假设现在选择 ==Batch_Size =100 ==对模型进行训练。迭代30000次。

  • 每个 Epoch 要训练的图片数量:60000(训练集上的所有图像)
  • 训练集具有的 Batch 个数:600=60000/100
  • 每个 Epoch 需要完成的 Batch 个数:600
  • 每个 Epoch 具有的 Iteration 个数:600(完成一个- Batch训练,相当于参数迭代一次)
  • 每个 Epoch 中发生模型权重更新的次数:600
  • 训练 10 个Epoch后,模型权重更新的次数:6000=600*10
  • 不同Epoch的训练,其实用的是同一个训练集的数据。第1个Epoch和第10个Epoch虽然用的都是训练集的图片,但是对模型的- 权重更新值却是完全不同的。因为不同Epoch的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。
  • 总共完成30000次迭代,相当于完成了30000/600=50 个 Epoch

相关文章:

  • 【Python机器学习】零基础掌握MissingIndicator缺失值填充
  • 小黑子—spring:第一章 Bean基础
  • SQL Delete 语句(删除表中的记录)
  • linux 音视频架构 linux音视频开发
  • CRM客户管理系统源码 带移动端APP+H5+小程序
  • Java-API简析_java.net.URL类(基于 Latest JDK)(浅析源码)
  • 牛客网刷题-(7)
  • C++——基于多态的职工管理系统
  • 业务架构、应用架构、技术架构、数据架构
  • Unity性能优化一本通
  • 聊一下Glove
  • Makefile泛谈
  • 归结原理、归结演绎推理
  • 列表自动向上滚动
  • matlab中类的分别之handle类和value类——matlab无法修改类属性值的可能原因
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • HashMap剖析之内部结构
  • mysql_config not found
  • PAT A1092
  • React-flux杂记
  • socket.io+express实现聊天室的思考(三)
  • Spring声明式事务管理之一:五大属性分析
  • V4L2视频输入框架概述
  • 彻底搞懂浏览器Event-loop
  • 浮动相关
  • 后端_MYSQL
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端面试总结(at, md)
  • 一天一个设计模式之JS实现——适配器模式
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • ${factoryList }后面有空格不影响
  • (C语言)fread与fwrite详解
  • (ibm)Java 语言的 XPath API
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)编辑寄语:因为爱心,所以美丽
  • .jks文件(JAVA KeyStore)
  • .Net MVC4 上传大文件,并保存表单
  • .NET NPOI导出Excel详解
  • .net 设置默认首页
  • .net 生成二级域名
  • .NET 事件模型教程(二)
  • .net 受管制代码
  • .net 托管代码与非托管代码
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET处理HTTP请求
  • .NET中winform传递参数至Url并获得返回值或文件
  • .ui文件相关
  • @property python知乎_Python3基础之:property