ValueError:使用Fit_generator时,生成器的输出应为元组`(x,y,sample_weight)`或`(x,y)`。

罗恩·史瓦兹

我一直在尝试使用一组训练和验证图像来教授模型,而我一直在标题错误(我将在下面发布完整的错误)。Alittle在如何进行方面迷失了方向,并且先前就此主题提出的问题均未产生结果。我的代码段是:

train_datagen = ImageDataGenerator(
  preprocessing_function=preprocess_input,
  rotation_range=90,
  horizontal_flip=True,
  vertical_flip=True,
)

val_datagen = ImageDataGenerator(
      preprocessing_function=preprocess_input,
      rotation_range=90,
      horizontal_flip=True,
      vertical_flip=True,
    )

train_generator = train_datagen.flow_from_directory(VAL_DIR,
                                                    target_size=(HEIGHT, WIDTH),
                                                    batch_size=TRAIN_BATCH_SIZE,
                                                    class_mode=None,
                                                    shuffle=True)
val_generator = val_datagen.flow_from_directory(TRAIN_DIR,
                                                target_size=(HEIGHT, WIDTH),
                                                batch_size=VAL_BATCH_SIZE,
                                                class_mode=None,
                                                shuffle=True)

然后我尝试使用以下方法教模型:

history = finetune_model.fit_generator(train_generator,epochs=NUM_EPOCHS, workers=8,
                                   steps_per_epoch=num_train_images // TRAIN_BATCH_SIZE,
                                   validation_data=val_generator,
                                   validation_steps=num_val_images // VAL_BATCH_SIZE,
                                   shuffle=True, callbacks=callbacks_list)

我得到的错误是:

ValueError: Output of generator should be a tuple `(x, y, sample_weight)` or `(x, y)`. Found: [[[[-5.30867195e+01 -6.81702271e+01  2.66113968e+01]
   [-5.04675522e+01 -6.62993927e+01  2.90434952e+01]
   [-4.78483849e+01 -6.44285583e+01  3.14755783e+01]
   ...

我很喜欢某个方向,因为我是ML学习的起点。很乐意提供更多信息。使用的图像均为jpeg格式。我能做什么 ?似乎找不到问题。

欧林·布尔·博汉

修复错误:

根据文档,指定class_mode=None会提供仅生成成批图像数据且没有目标(打算与结合使用model.predict_generator())的生成器。

fit_generator 需要一个产生成对的发电机(inputs, targets)因此,您无法使模型适合您当前正在使用的生成器,因为这些生成器没有说明模型应适合的目标。您需要弄清楚标签是什么,然后选择适当的class_mode标签,以便数据生成器包括这些标签。

确保错误已修复:

选择正确的代码后class_mode,您可以通过打印/可视化批处理1来检查数据生成器的完整性

可视化批处理的演示

在此示例中,我正在进行多类(兔子,猫,狗)分类,因此默认设置class_mode=categorical可以正常工作。

获取批次的图像和标签后,该批次中的第一张图像是一只狗,该批次的第一张标签是[0, 0, 1]第二位置是一个,从零开始计数),并且该class_indices字典说狗图像具有标签2(从零开始计数)。

1.通常,最好始终仔细检查此处的数据,即使数据生成器似乎正在运行也是如此;请参阅“在网络前可视化”下的帖子

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档