如何理解在Keras中使用fit_generator时的steps_per_epoch? [重复]

我原本以为steps_per_epoch可以设定为样本总数除以批次大小,这样每个epoch就能看到所有样本,但显示的数字让我觉得它训练的样本远少于这个数量。(如果我正确理解了这个链接:https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly)这里是相关代码行(我明确写出了样本数量)

model.fit_generator(    train_generator,    steps_per_epoch= 2451 // BATCH_SIZE,    epochs=10)

但训练过程的输出显示类似153/154的数字,而我的数据集超过3000个样本。因此,到底什么是steps_per_epoch?在当前状态下,我的模型在每个epoch中是否看到了所有样本?如果没有,我该如何纠正这个问题?

Epoch 1/10153/153 [==============================] - 34s 225ms/step - loss: -0.4054 - dice_coef: 0.4054 - binary_accuracy: 0.2559 - acc: 0.2559Epoch 2/10

回答:

你是对的,步骤数应该等于total_dataset/batch_size,但不一定要这样做(你可以设置任何数量),这里有三种可能的情况:

  1. No_of_step = total_dataset/batch_size – 在一个epoch中,模型只会看到每张图像(数据)一次。
  2. No_of_step < total_dataset/batch_size – 模型无法看到所有图像,会有一些图像被遗漏。
  3. No_of_step > total_dataset/batch_size – 有些图像会在网络中被传递超过一次。

注意:如果shuffle = True,很难猜到哪些图像被遗漏或重复了。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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