您的输入数据已用尽;中断训练。请确保您的数据库或生成器能够生成至少`steps_per_epoch * epochs`个批次

我在使用Keras训练神经网络模型时遇到这个问题,需要帮助。这个错误是在我尝试运行训练模型时发生的:

WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 19990 batches). You may need to use the repeat() function when building your dataset.

代码可以在以下链接找到:

https://colab.research.google.com/drive/1hgQoo7Oz6UPIzQQ4ELwRUuPPNxaOAqeh?usp=sharing


回答:

我建议您使用fit()方法而不是fit_generator()方法,因为TensorFlow已经建议您这样做。

然而,回到您的问题上,问题的真正原因是,当使用生成器时,您应该让模型自己计算完成一个epoch所需的步数。如果您手动设置steps_per_epoch,那么您需要自己正确计算steps_per_epoch=(data_samples/batch_size)),如果计算错误,就会出现这个错误(这正是您的情况)。所以,为了避免这个问题,您应该在调用fit_generator()方法时简单地移除step_per_epoch参数,让模型自己处理step_per_epoch的值,这样代码应该就能正常运行了。

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

发表回复

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

您的输入数据已用尽;中断训练。请确保您的数据集或生成器能够生成至少`steps_per_epoch

当我在训练我的自动驾驶汽车模型时,第一轮就出现了错误。尽管当我减少batch_size后它能正常工作,但这并不能达到我想要的准确度。

我在Google Colab上训练我的模型。

tensorflow版本2.3.1

错误:

error

WARNING:tensorflow:您的输入数据已用尽;中断训练。请确保您的数据集或生成器能够生成至少`steps_per_epoch * epochs`个批次(在本例中,为20000个批次)。您可能需要在构建数据集时使用repeat()函数。

我的代码:

def modified_model():  model = Sequential()  model.add(Conv2D(60, (5, 5), input_shape=(32, 32, 1), activation='relu'))  model.add(Conv2D(60, (5, 5), activation='relu'))  model.add(MaxPooling2D(pool_size=(2, 2)))    model.add(Conv2D(30, (3, 3), activation='relu'))  model.add(Conv2D(30, (3, 3), activation='relu'))  model.add(MaxPooling2D(pool_size=(2, 2)))    model.add(Flatten())  model.add(Dense(500, activation='relu'))  model.add(Dropout(0.5))  model.add(Dense(43, activation='softmax'))    model.compile(Adam(lr = 0.001), loss='categorical_crossentropy', metrics=['accuracy'])  return modelmodel = modified_model()print(model.summary())history = model.fit_generator(datagen.flow(X_train, y_train, batch_size=50),                            steps_per_epoch=2000,                            epochs=10,                            validation_data=(X_val, y_val), shuffle = 1)

回答:

在使用生成器时,让模型自己计算一个epoch实际上需要多少步,否则您将不得不计算steps_per_epoch=(data_samples/batch_size)。尝试在不使用step_per_epoch参数的情况下运行。

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

发表回复

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