batch_size 和运行时间的关系

以前我认为较小的 batch_size 会导致更快的训练,但在 keras 的实践中,我收到了相反的结果,即更大的 batch_size 会使训练更快。


我正在实现一个示例代码,通过增加batch_size 的数量,训练变得更快。这与我以前普遍认为的相反(较小的 batch_size 会导致更快的训练),这是示例代码:


# fit model

import time

start = time.time()

history = model.fit(trainX, trainy, validation_data=(testX, testy), epochs=1000,

batch_size= 500 , verbose=0)

end = time.time()


elapsed = end - start

print(elapsed)

我将 500、250、50 和 10 分别作为 batch_size,我希望较低的 batch_size 训练速度更快,但是 batch_size 500 的结果是 6.3 秒,250 个结果是 6.7 秒,50 个结果是 28.0 秒,10 个结果是 140.2 秒! !!


阿晨1998
浏览 484回答 2
2回答

繁花不似锦

这是有道理的。我不知道您使用的是什么模型,但 Keras 进行了高度优化,利用矢量化进行快速矩阵运算。因此,如果您将 5000 个样本的数据拆分为 500 个批量大小,具有 1000 个 epoch,则模型本质上是 (5000/500) x 1000 次迭代。那是 10 000 现在,如果您对 10 的批量大小执行此操作,则有 (5000/10) x 1000 次迭代。那是 500 000。通过模型进行更多迭代,包括向前和向后。

慕标琳琳

对于硬件,GPU 非常擅长并行计算,特别是矩阵运算发生在前向和后向传播中。同样的事情发生在软件方面,tensorflow 和其他 DL 库优化了矩阵运算。因此,更大的批量大小使 GPU 和 DL 库能够“优化更多的矩阵计算”,从而加快训练时间。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python