本文介绍在机器学习、深度学习的神经网络模型中,epoch
、batch
、batch size
、step
与iteration
等名词的具体含义。
epoch
:表示将训练数据集中的所有样本都过一遍(且仅过一遍)的训练过程。在一个epoch
中,训练算法会按照设定的顺序将所有样本输入模型进行前向传播、计算损失、反向传播和参数更新。一个epoch
通常包含多个step
。
batch
:一般翻译为“批次”,表示一次性输入模型的一组样本。在神经网络的训练过程中,训练数据往往是很多的,比如几万条甚至几十万条——如果我们一次性将这上万条的数据全部放入模型,对计算机性能、神经网络模型学习能力等的要求太高了;那么就可以将训练数据划分为多个batch
,并随后分批将每个batch
的样本一起输入到模型中进行前向传播、损失计算、反向传播和参数更新。但要注意,一般batch
这个词用的不多,多数情况大家都是只关注batch size
的。
batch size
:一般翻译为“批次大小”,表示训练过程中一次输入模型的一组样本的具体样本数量。前面提到了,我们在神经网络训练过程中,往往需要将训练数据划分为多个batch
;而具体每一个batch
有多少个样本,那么就是batch size
指定的了。
step
:一般翻译为“步骤”,表示在一个epoch
中模型进行一次参数更新的操作。通俗地说,在神经网络训练过程中,每次完成对一个batch
数据的训练,就是完成了一个step
。很多情况下,step
和iteration
表示的是同样的含义。
iteration
:一般翻译为“迭代”,多数情况下就表示在训练过程中经过一个step
的操作。一个iteration
包括了一个step
中前向传播、损失计算、反向传播和参数更新的流程。当然,在某些情况下,step
和iteration
可能会有细微的区别——有时候iteration
是指完成一次前向传播和反向传播的过程,而step
是指通过优化算法对模型参数进行一次更新的操作。但是绝大多数情况下,我们就认为二者是一样的即可。
以上是对这些名词的解释,我们将他们带入实际的例子就更好理解了。
假设我们现在有一个训练数据集(这个数据集不包括测试集),其中数据的样本数量为1500
。那么,我们将这1500
条数据全部训练1
次,就是一个epoch
。其中,由于数据量较大(其实1500
个样本在神经网络研究中肯定不算大,但是我们这里只是一个例子,大家理解即可),因此我们希望将其分为多个batch
,分批加以训练;我们决定每1
批训练100
条数据,那么为了将这些数据全部训练完,就需要训练15
批——在这里,batch size
就是100
,而batch
就是15
。而前面我们提到,每次完成对一个batch
数据的训练,就是完成了一个step
,那么step
和iteration
就也都是15
。
以上是我们对这一数据集加以1
次训练(1
个epoch
)的情况,而一般情况下我们肯定是需要训练多次的,也就是多个epoch
。我们假设我们需要训练3
个epoch
,相当于需要将这1500
个样本训练3
次。那么,step
和iteration
都会随着epoch
的改变而发生改变——二者都变为45
,因为15 * 3
。但是,batch
依然是15
,因为其是在每一个epoch
的视角内来看待的,和epoch
的具体大小没有关系。
至此,大功告成。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容