首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习中batch

最近在做基于交通卡口数据的套牌车判别项目。利用卷积神经网络做时序数据的分类。

训练过程中尝试设置不同的batch_size ,并观察到了一些细微的变化。

a、设置超大batch_size的时候,机器罢工了

b、设置较大batch_size的时候,训练超快,但是最后的精度不高

c、设置较小batch_size的时候,训练较慢,过程中波动较大,但是最后的精度会稍微高一点。

那么这是全部吗?

batch_size 指定了每批次训练的样本量。

当batch_size设置较小,极端情况比如batch_size=1,每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。

横冲直撞,各自为政就一定不好吗? 它能带来有更多起伏、更随机的权重更新。这有两个积极的作用,一是能帮助训练“跳出”之前可能卡住它的局部最小值,二是能让训练在“平坦”的最小值结束,着通常会带来更好的泛化性能。

当batch_size设置过大,内存装载不了这么多数据。极端情况就是全量数据。在合理范围内,增大batch_size会得到以下收益:

a、充分利用内存,并行化效率提高了

b、跑完一次epoch所需迭代次数降低了,训练速度加快了

c、在一定范围内,batch_size越大,其确定的下降方向越准,训练的震荡越小

对应上述三点,有可能发生以下灾难:

a、内存装不下

b、精度达不到小batch_size的高度,或者需要更长时间的训练

c、确定的下降方向随机性较低了,可能基本不再变化

那大也大不得,小也小不得,应该怎么办呢?

很多文章建议在开始的时候,大胆的尝试很小的batch_size,比如16,8,甚至是1。(2的幂次)

当然,不同的情况下,应该会有不同的选择,这是一个变量,抓住不变的那就是要去找到某种感觉。

正所谓,调参调参,你不调,怎么会“参”透其中玄机呢?

不说了,调参去了~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180719G1RGQW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券