为啥训练的时候要分batch

从梯度下降开始谈起:

  梯度下降的每一轮迭代下,要计算所有数据的损失函数值,然后计算每个参数的偏导数,来求出目前的梯度方向。但是在计算损失函数的过程中,需要把每个数据点都计算出来,有的时候,数据可能有几百万甚至更多,这个时候可能迭代速度就会明显下降下来了。所有这个时候有了一种 mini-batch gradient descent 小批量梯度下降,把数据分成一个一个的batch,然后每计算一个batch,就更新一次梯度,也就是说现在梯度下降中,每次迭代不是计算全部数据的损失函数,而是一个batch的损失函数。这样可以加快训练的速度,还有模型收敛的速度。因为以前要把所有数据都过一遍模型才能得到更新,现在模型的更新更频繁了。

而且另外一个好处就是,也更容易实现并行计算,两台服务器拿不同的两个batch可以分别计算梯度,这个就是为什么要使用batch的原因。

Stochastic Gradient Desent(SGD)--随机梯度下降,这种就是小批量梯度下降的特例,就是batch size = 1时,每次只随机采样一个数据点,但是这样很不稳定。PyTorch里的SGDOptimizer 应该指的是mini-batch gradient descent,然后就是关于batch的一些其他信息,一般batch是64的倍数或者因子(就是32,18之类的)。这是因为使用GPU的时候,把batch size 设置长64的倍

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值