在keras中,如何控制一个epoch绘制的mini-batches数量

Posted

技术标签:

【中文标题】在keras中,如何控制一个epoch绘制的mini-batches数量【英文标题】:In keras, how to control the number of mini-batches drawn during one epoch 【发布时间】:2022-01-15 15:08:25 【问题描述】:

我阅读了 Keras 的 official manual 和一些示例,例如 this one。我知道我们可以使用batch_size 参数指定小批量的大小,并使用epochs 参数指定时期数。

但是我们如何才能确定一个 epoch 内有多少 mini-batch?在scikit-learn 中,有几个选项可以(间接)控制它,例如max_itertol 等。但我在Keras 中找不到类似的东西

【问题讨论】:

stats.stackexchange.com/questions/221886/… 我之前找到了这个链接,但在我看来它不是关于小批量的 number 而是关于 size 个小批量。我要问的是小批量的数量。 【参考方案1】:

在 keras 中计算 mini_batches 的方式取决于训练数据的大小。

在您发布的示例中,您可以看到 validation_split=0.2 意味着它将数据分成两部分,即训练和验证

image_dataset_from_directory 负责将您的数据作为 mini_batches 发送。

数据点总数23410

training_data 18728(23410 的 80%)

validation_data 4682(23410 的 20%)

batch_size 32

因此image_dataset_from_directory源代码中计算的步数或minibatch数为training_data/batch_size

steps_per_epoch 为 585,即该时期有 585 个小批量,这意味着从数据中选择了 32 张图像 585 次

【讨论】:

谢谢@keertika,我在训练模型的时候可以看到这样的东西:Epoch 2/50 52/52 [==============================] - 0s 4ms/step - loss: 0.8672 - accuracy: 0.6362,你的意思是52/52是关于mini-batches数量的进度指示器吗? 是的,你是对的。

以上是关于在keras中,如何控制一个epoch绘制的mini-batches数量的主要内容,如果未能解决你的问题,请参考以下文章

如何找到训练 keras 模型的 epoch 数?

为啥 Keras 损失在第一个 epoch 之后急剧下降?

如何将 Keras 丢失输出记录到文件中

在 Keras 的批量训练期间显示每个 epoch 的进度条

在 Keras 中拟合模型时,批量大小和 epoch 数应该有多大?

keras 如何保存训练集与验证集正确率的差最小那次epoch的网络及权重