深度学习中epoch、batch、batch size和iterations详解

简介: 深度学习中epoch、batch、batch size和iterations详解

1.epoch

在训练一个模型时所用到的全部数据;

备注:一般在训练时都要使用多于一个的epoch,因为在神经网络中传递完整的数据集仅仅一次是不够的,只有将完整的数据集在同样的神经网络中传递多次,才会得到比较优秀的训练效果,当然也不行,容易过拟合,所以要根据实验选择自己最合适的。

epochs:

epochs被定义为向前和向后传播中所有批次的单次训练迭代。这意味着一个周期是整个数据的单次向前和向后传递。简单说,epochs指的就是训练过程中数据将被“轮”多少次,就这样。

2.batch

Keras中参数更新是按批进行的,就是小批的梯度下降算法。如果准备跑模型的数据量太大,此时自己的电脑可能承受不住,所以可以适当的将数据分成几块,就是分成几个batch。每次的参数更新有两种方式:

第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大,计算速度慢,不支持在线学习,这称为批梯度下降。

另一种,每看一次数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,这个方法速度比较快,但是瘦脸性能不太好,可能在最优点附近晃来晃去,找不到最优点。两次参数的更新也有可能互相抵消掉,造成目标函数震荡的比较剧烈。

3.batch size

一个batch中的数据量大小即为batch size,一般为2n,比如32,64,128等等。

4.iterations

iterations(迭代):每一次迭代都是一次权重更新,每一次权重更新需要batch_size个数据进行Forward运算得到损失函数,在BP算法更新参数。1个iteration等于使用batchsize个样本训练一次。

迭代,即batch size需要完成一次epoch的次数

(ps:其实对于一个epoch来说,batch和iterations数值上是相等的)


以下为上述知识的两个问题:

问题一:比如现在我们有一个2000大小的训练样本,然后我们将这2000个样本分成4个大小为500的小数据集样本,此时epoch=1(暂且就用这个样本训练1次)。

请问以下数值分别为多少:①batch;②batch size;③iterations;

问题二:Fashion Mnist数据集有70000个灰度图像,其中60000张图片作为训练数据,10000张图片作为测试数据。假设现在选择Batch Size=100对模型进行训练。迭代30000次。

每个Epoch要训练的图片数量:60000(训练集上的所有图像)

请问:①训练集具有的Batch个数;②每个Epoch需要完成的Batch个数;③每个Epoch具有的Iteration个数;④每个Epoch中发生模型权重更新的次数;⑤训练10个Epoch后,模型权重更新的次数;

答案公布于评论区。

总结:

1)不同Epoch的训练,其实用的是同一个训练集的数据。

2)第1个Epoch和第10个Epoch虽然用的都是训练集的60000张图片,但是对模型的权重更新值确是完全不同的。

3)因为不同Epoch的模型处于代价函数空间上的不同位置,模型的训练迭代越靠后,越接近低谷,其代价越小。

4)总共完成30000次迭代,相当于完成了30000/600=50个Epoch。

相关文章
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现
|
机器学习/深度学习 资源调度 监控
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
|
机器学习/深度学习 人工智能 资源调度
深度学习入门基础CNN系列——批归一化(Batch Normalization)和丢弃法(dropout)
批归一化方法(Batch Normalization,BatchNorm)是由Ioffe和Szegedy于2015年提出的,已被广泛应用在深度学习中,其目的是对神经网络中间层的输出进行标准化处理,使得中间层的输出更加稳定。丢弃法(Dropout)是深度学习中一种常用的抑制过拟合的方法,其做法是在神经网络学习过程中,随机删除一部分神经元。训练时,随机选出一部分神经元,将其输出设置为0,这些神经元将不对外传递信号。
611 1
深度学习入门基础CNN系列——批归一化(Batch Normalization)和丢弃法(dropout)
|
机器学习/深度学习 自然语言处理 资源调度
【深度学习】batch normalization和layer normalization区别
“独立同分布”的数据能让人很快地发觉数据之间的关系,因为不会出现像过拟合等问题。 一般在模型训练之前,需要对数据做归一化。为了解决ICS问题,即internal covarivate shift(内部协变量漂移)问题,即数据分布会发生变化,对下一层网络的学习带来困难。
811 0
【深度学习】batch normalization和layer normalization区别
|
机器学习/深度学习 算法
深度学习中的三种梯度下降方式:批量(batch),随机(stochastic),小批量(mini-batch)
深度学习中的三种梯度下降方式:批量(batch),随机(stochastic),小批量(mini-batch)
583 0
|
机器学习/深度学习 算法
深度学习之优化详解:batch normalization
一项优化神经网络的技术,点进来了解一下?
3005 0
|
机器学习/深度学习 算法 算法框架/工具
吴恩达《深度学习》第二门课(3)超参数调试、Batch正则化和程序框架
3.1调试处理 (1)不同超参数调试的优先级是不一样的,如下图中的一些超参数,首先最重要的应该是学习率α(红色圈出),然后是Momentum算法的β、隐藏层单元数、mini-batch size(黄色圈出)、再之后是Layer、learning rate decay(紫色圈出)、最后是Adam算法中的β1、β2、ε。
1508 0
|
机器学习/深度学习 算法 计算机视觉
如何理解深度学习分布式训练中的large batch size与learning rate的关系?
在深度学习进行分布式训练时,常常采用同步数据并行的方式,也就是采用大的batch size进行训练,但large batch一般较于小的baseline的batch size性能更差,请问如何理解调试learning rate能使large batch达到small batch同样的收敛精度和速度?
2679 0
|
18天前
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
87 5
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的原理与应用:开启智能时代的大门
深度学习的原理与应用:开启智能时代的大门
49 16

热门文章

最新文章