在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_iter
、tol
等。但我在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 的进度条