深度神经网络:随机批量大小是否可用于培训?

时间:2017-12-27 16:07:13

标签: tensorflow machine-learning deep-learning keras

我和Keras一起工作了大约三个月,现在我想知道是否有必要对不同(随机)批量(16,32,64,128)的批次进行培训,以结合不同批量大小的好处

我没有找到任何回答这个问题的文件。我完全错了吗?

2 个答案:

答案 0 :(得分:0)

我见过两种最常用的批量处理策略:

  • 选择尽可能大的模型,以便模型仍适合GPU内存。这主要是为了加速由于并行性和矢量化引起的训练。

  • 通过随机搜索或Bayesian Optimization调整批量大小,就像任何其他超参数一样。令人惊讶的是,更大的批量大小并不总是意味着更好的模型性能(尽管在许多情况下确实如此)。关于此问题,请参阅this discussion:主要思想是培训中的额外噪音可能有利于推广。请记住,L2正则化等同于将高斯噪声添加到x。减少批量大小也会增加培训过程中的噪音,特别是如果您使用批次规范。

我不知道在培训期间如何更改相同模型的批量大小。但是,为不同的模型选择随机批量大小肯定会有好处。

警告:在某些情况下,例如,在深层强化学习中,额外的噪音实际上会损害性能,因此如果减小批量大小可能是一个坏主意。所以,一如既往,这在很大程度上取决于你的问题。

答案 1 :(得分:0)

我不确定我的答案是否适合您所寻找的内容。原则上,为了在训练期间获得随机批量大小,您可以做的是使循环中的拟合。也就是说,在每个循环步骤中保存模型权重,然后将其加载到模型中,更改批量大小,编译它并再次适合。有可能实现一个回调类来在内部执行,而不需要循环。

虽然我认为这不是您想要的,但是一旦网络超过整个样本,批量大小就会改变。但是,正如之前的回答,到目前为止,我们没有选择每个时期这样做(原则上可以实施)。