为什么我在每个epoch结束时无法执行验证测试?

我正在训练一个分类模型,其中我传入了提前停止、保存最佳模型和最佳学习率的回调,这些回调依赖于每个epoch结束时计算的验证损失和准确性值。但是当我尝试计算这些回调时,我收到了警告,并且无法执行任何回调。

我的代码如下

train_datagen = ImageDataGenerator(rescale = 1/255.0,                                   rotation_range=30,                                   zoom_range=0.4,                                   horizontal_flip=True,                                   validation_split=0.2)train_generator = train_datagen.flow_from_directory(Image_folder_path,                                                    batch_size=batch_size,                                                    class_mode='categorical',                                                    target_size=(img_height, img_width),                                                    subset='training')validation_datagen = ImageDataGenerator(rescale = 1/255.0)validation_generator = validation_datagen.flow_from_directory(FolderPath,                                                              batch_size=batch_size,                                                              class_mode='categorical',                                                              target_size=(img_height, img_width),                                                              subset='validation'                                                             )model.compile(optimizer='Adam',              loss='categorical_crossentropy',              metrics =['accuracy'])EarlyStopping_callback = EarlyStopping(monitor='val_loss', patience=5, verbose=1, mode='auto')best_model_file = snapshot_outp_dir+'\\weights.{epoch:02d}.h5'best_model = ModelCheckpoint(best_model_file, monitor='val_accuracy', verbose = 1, save_best_only = True,save_weights_only=True)history = model.fit_generator(train_generator,                              epochs=30,                              verbose=1,                              validation_data=validation_generator,                              #validation_freq=1,                              callbacks = [LearningRateScheduler(step_decay,verbose=1),                                  ReduceLROnPlateau(monitor='val_loss',factor=0.2,verbose=1,patience=1,min_lr=0.001),                                  best_model,                                  EarlyStopping_callback]                              )

当我使用这个代码时,我收到了如下警告:

WARNING:tensorflow:学习率降低取决于指标’validation_loss’,但该指标不可用。可用的指标有:loss,accuracy,lr WARNING:tensorflow:只能在’val_accuracy’可用时保存最佳模型,跳过。 WARNING:tensorflow:提前停止取决于指标’validation_loss’,但该指标不可用。可用的指标有:loss,accuracy,lr

我查看了类似的问题,但对我没有用,其中一些解决方案包括:

  1. 使用大型数据集,因为我使用了超过2000个样本,所以这不是问题,我也尝试了不同的验证分割比例如0.5和0.6,但仍然出现了相同的问题,

  2. 将validation_loss改为val_loss,将val_accuracy改为validation_accuracy,这也没用。

  3. 使用validation_frequency,将其设置为1,仍然得到了相同的警告。

  4. 不传递验证数据,validation_generator在model.fit_generator中已经明确传递,但仍然收到了相同的警告。

我做错了什么?任何解决这个问题的建议都会非常有帮助。


回答:

像这样使用图像数据生成器:

train_generator = train_datagen.flow_from_directory(Image_folder_path,                                                    batch_size=64,                                                    class_mode='categorical',                                                    target_size=(img_height, img_width)                                                   )

和这个:

validation_generator = validation_datagen.flow_from_directory(FolderPath,                                                              batch_size=64,                                                              class_mode='categorical',                                                              target_size=(img_height, img_width)                                                             )

并从train_datagen中移除validation_split=0.2

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

发表回复

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