神经网络中batch_size,epoch,batch,iteration/step的区别

我们知道,简单来说,深度学习就是很深很深的神经网络(这一说法并不准确,但姑且让我们这么说),也就是说,有很多层,每层可能有很多神经元,结构也可能比较复杂。然后相应的,数据集也可能比较大。那跑一遍(迭代)会比较慢。所以人们就想出了一个变通的办法,就是每次只使用数据集中的部分样本,这个数目就称为batch_size.
虽然只使用了部分样本,但很多时候已经足以优化权重,降低损失函数了。这样训练效率高很多,训练时间也能缩短不少。
不过这样一来,一次迭代就不一定完整跑遍数据集中的所有样本了。那在比较的时候,就不太方便直接比较迭代次数了。
比如,假设深度神经网络A经过32次迭代损失函数的值足够低了,而深度神经网络B经过16次迭代损失函数的值足够低了,但实际上,A的batch size可能是256,而B的batch size可能是2048。所以直接比较A和B的迭代次数并没有什么意义。
所以就又提出了epoch这个概念,指数据集中的所有样本都跑一遍。

假设训练集中有2000个样本,把训练集的2000个样本一个不漏地输入到模型中,让模型进行学习,即为1个epoch;训练的时候2000个样本太多了,分小一点,若分成10份,则batch=10;batch_size=2000/10=200;此时,每次输入到模型的样本数为batch_size大小,即每一次输入200个样本;每输入一个batch_size大小的样本,模型则学习一次,更新一次参数,即一个iteration/step。

总结:

  • epoch:所有的训练集输入到模型完整地训练一遍
  • batch: 模型训练时,往往不是一次性把所有的训练集输入到模型中,而是把训练集分成较小的批,即分成一个个的batch
  • batch_size: batch的大小
  • iteration/step: 一个iteration/step,更新一次参数权重,即进行一次学习,每一次更新参数需要batch_size个样本进行运算学习,根据运算结果调整更新一次参数。
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值