首页 > 解决方案 > 如何在 keras 中使用批量大小?

问题描述

早上好!

我只是想澄清一下 - model.fit 中的 batch_size 参数是声明有多少样本进入,还是一次进入的样本数量 x/batch_size,总共有 x 个样本?

也就是说,假设我们有 20,000 个样本,并且批量大小为 100。这是否意味着一次传入 200 个样本(意味着 100 个批次),还是 100 个样本?

我问是因为https://deeplizard.com/learn/video/Skc8nqJirJg说“如果我们一次将整个训练集传递给模型(batch_size=1),那么我们刚刚计算损失的过程将发生在训练期间每个 epoch 的结束”,暗示它是一批。但是,batch_size 似乎意味着基于其名称的不同,所以我想澄清一下。

谢谢!

注意:还有另一个类似的问题,但没有得到回答 - Keras 中的 BatchSize 是如何工作的?LSTM-WithState-时间序列

这增加了:这些样本是如何选择的?

标签: pythontensorflowkerasbatchsize

解决方案


来自 TensorFlow文档

batch_size:整数或无。每次梯度更新的样本数。如果未指定,batch_size 将默认为 32。如果您的数据是数据集、生成器或 keras.utils.Sequence 实例的形式(因为它们会生成批次),请不要指定 batch_size。

所以它是梯度更新之前使用的样本数。如果 batch_size 等于 1,那么每个样本都会有一个梯度更新(因此,每个 epoch 有 num_samples)

例如,对于您引用的示例:如果我们有 20,000 个样本,并且批量大小为 100,则一次通过 100 个样本。

这增加了:这些样本是如何选择的?

这取决于 fit 方法的 shuffle 参数是否为 True 。如果是,则随机抽取它们,直到选择了所有样本(时期结束)。如果不是,它们将按顺序进行


推荐阅读