首页 > 编程知识 正文

batchsize的影响,batchsize对结果的影响

时间:2023-05-04 22:17:39 阅读:157608 作者:2062

在自己完成的关于深度学习的几个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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。