在自己完成的关于深度学习的几个Demo中,几乎都出现了batch_size、iterations、epochs这样的词。 一开始我没在意。 我原以为Demo发挥作用就可以了,但随着学习的深入,我觉得这些基本概念会变得不明白,对整个深度学习框架的理解也会变得不充分。 今天一起
1.batch_size
深度学习优化算法,用白字来说主要是梯度下降算法,但每次参数权重更新主要有两种方法。
)1)巡视所有数据集,计算一次损失函数,然后计算针对各参数的函数的斜率,更新斜率
该方法每次更新参数都要一次查看数据集内的所有样本,计算量开销大,计算速度慢,不支持在线学习。 这称为Batch gradient descent,这会降低批梯度。
)2)静态梯度设计
每看一个数据就计算损失函数,求出坡度更新参数。 这称为随机梯度下降。 这种方法比较快,但收敛性能不太好,可能在最优点的附近晃悠,但hit没有达到最优点。 两次参数的更新也相互抵消,目标函数的振动可能会变得激烈。
为了克服两种方法的缺点,目前普遍采用折中手段。 最小梯度,小批量梯度下降。 该方法将数据分成若干批次,逐批次更新参数。 这样,一批中的一组数据共同确定了此次坡度的方向,下降后就不易偏移,减少了随机性。 另一方面,批量的样本数量和整个数据
集相当小,计算量也不是很多。
基本上,当前坡度下降基于最小坡度,因此在深度学习框架的函数中经常出现batch_size就是这个意思。
2.iterations
每次iterations (迭代)迭代时进行权重的更新,每次权重更新时需要对batch_size个数据进行Forward运算以得到损失函数,然后用BP算法)、反向传播算法)来更新参数。 一个iteration等于使用batchsize个样本训练一次。
3.epochs
epochs被定义为前向传播和后向传播的所有批次的一次训练迭代。 这意味着一个周期是整个输入数据的一次前进和后退。 简单来说,epochs就是在训练中数据被“回合”了多少次。
请看以下示例:
假设训练集中有1000个样本,batchsize=10,则:
训练整个样本集需要100次iteration、1次epoch。
具体的计算公式是one epoch=numbersofiterations=n=训练样本的数量/batch_size
转载于:https://www.cn blogs.com/xdu-Lakers/p/10607358.html