batch size

训练过程:

通常将数据集分成若干batch,每个batch有batch-size个样本

输入:一个batch的样本,对样本实行向量化运算(矩阵乘法),使一个batch的样本进行并行训练,也就是说一个batch的样本是一起训练的

前向传播:

        每个样本输入到网络中,根据参数获得最终结果

反向传播:

        计算每个样本的损失函数值并根据这些损失函数值计算出对于每个参数的梯度。

        每个批次的所有样本的损失函数值的平均值就是该批次的损失函数值,该批次的所有样本的梯度的平均值就是该批次的梯度。最终,使用该批次的梯度来更新神经网络的参数。

        因此,每个批次的梯度是指该批次中所有样本的梯度的平均值,这些梯度将用于更新神经网络的参数。批量大小(batch size)的选择可以影响模型的训练速度、模型的稳定性以及模型的泛化性能。

(即,每个批次是一个整体,参数更新更新一个批次,对于一个批次的计算,就是平均值)

理论知识:

batch_size:表示单次传递给程序用以训练的数据(样本)个数。比如我们的训练集有1000个数据。这是如果我们设置batch_size=100,那么程序首先会用数据集中的前100个参数,即第1-100个数据来训练模型。当训练完成后更新权重,再使用第101-200的个数据训练,直至第十次使用完训练集中的1000个数据后停止。

那么为什么要设置batch_size呢?

优势:

可以减少内存的使用,因为我们每次只取100个数据,因此训练时所使用的内存量会比较小。这对于我们的电脑内存不能满足一次性训练所有数据时十分有效。可以理解为训练数据集的分块训练。
提高训练的速度,因为每次完成训练后我们都会更新我们的权重值使其更趋向于精确值。所以完成训练的速度较快。


原文链接:https://blog.csdn.net/u011699626/article/details/120352398

batch size决定了下降的方向

可不可以选择一个适中的 Batch_Size 值呢?
当然可以,这就是批梯度下降法(Mini-batches Learning)。因为如果数据集足够充分,那么用一半(甚至少得多)的数据训练算出来的梯度与用全部数据训练出来的梯度是几乎一样的。

在合理范围内,增大 Batch_Size 有何好处?
内存利用率提高了,大矩阵乘法的并行化效率提高。
跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

盲目增大 Batch_Size 有何坏处?
内存利用率提高了,但是内存容量可能撑不住了。
跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值