在TensorFlow的model.fit()方法中,steps_per_epoch和batch size有什么区别? [duplicate]

根据文档的定义:

批量大小:每次梯度更新的样本数。

每个周期的步骤数:在宣布一个周期结束并开始下一个周期之前的总步骤数(样本批次)。

它们有什么不同,它们之间是如何相互依赖的,如果有的话?


回答:

这里有一个简单的例子。假设你有1000个训练样本,并且你将批量大小设置为50。在这种情况下,如果你想在每个周期中遍历所有训练数据一次,你需要运行1000/50 = 20个数据批次。因此,你设置steps_per_epoch=20。许多人设置steps_per_epoch=训练样本数量//批量大小。这是一个在每个周期中遍历所有训练样本的好方法,但只有当批量大小是训练样本数量的因子时才完全准确。下面是我编写的一段代码,用于确定批量大小和steps_per_epoch,以便在每个周期中精确遍历一次样本。在代码中,length等于样本数量,b_max是基于内存限制你允许的最大批量大小。

batch_size=sorted([int(length/n) for n in range(1,length+1) if length % n ==0 and length/n<=b_max],reverse=True)[0]  steps=int(length/batch_size)

对于训练来说,如果你打乱了数据,精确地遍历训练集一次并不那么重要。然而,对于验证和测试来说,精确地遍历验证集或测试集一次是很重要的,以便获得完全准确的结果。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注